Heim > Java > javaLernprogramm > Webwork Learning Road (2) Front-End-OGNL-Testversion

Webwork Learning Road (2) Front-End-OGNL-Testversion

黄舟
Freigeben: 2016-12-23 16:29:33
Original
1424 Leute haben es durchsucht

1. Die Bedeutung der Entstehung von OGNL

In MVC ist es eine unbestreitbare Tatsache, dass Daten zwischen verschiedenen Ebenen fließen. Und diese Art der Zirkulation wird auch durch die unterschiedlichen Erscheinungsformen der Daten in verschiedenen Welten verursacht:

a Die Daten sind auf der Seite flach, egal wie Je nachdem, wie komplex Ihre Datenstruktur ist oder wie umfangreich der Datentyp ist, werden bei der Anzeige alle gleich als Zeichenfolgen behandelt und auf der Seite angezeigt.

b. Daten können durch umfangreiche Datenstrukturen und Datentypen in der Java-Welt dargestellt werden. Sie können Ihre bevorzugten Klassen definieren und zwischen Klassen erben und verschachteln. Wir bezeichnen dieses Modell normalerweise als komplexen Objektbaum. Wenn die Daten zu diesem Zeitpunkt zwischen der Seite und der Java-Welt übertragen werden, scheint es, dass sie nicht übereinstimmen. Dies führt also zu mehreren Problemen, die gelöst werden müssen Gehen Sie in den Objektbaum der Java-Welt. Gleichzeitig kann es in Java intelligent von String-Typen in verschiedene Typen konvertieren Regeln Greifen Sie auf den Objektbaum zu. Gleichzeitig wird in gewissem Umfang das Anzeigeformat der Daten im Objektbaum gesteuert.

Wenn wir etwas tiefer über dieses Problem nachdenken, werden wir feststellen, dass die Lösung des Problems der Datenflussinkongruenz aufgrund unterschiedlicher Darstellungsformen für uns eigentlich nicht unbekannt ist. Das gleiche Problem tritt in der Java-Welt und der Datenbankwelt auf. Angesichts dieser Diskrepanz zwischen Objekt- und relationalen Modellen verwenden wir ORM-Frameworks wie Hibernate, iBatis usw. Da nun auch in der Webebene eine Nichtübereinstimmung auftritt, müssen wir auch einige Tools verwenden, die uns bei der Lösung des Problems helfen. Um die Diskrepanz zu beheben, wenn Daten von der View-Ebene an die Controller-Ebene übergeben werden, übernimmt Struts2 eine perfekte Lösung von XWork. Und auf dieser Grundlage wurde ein perfekter Mechanismus entwickelt, um die Diskrepanz im Datenfluss perfekt zu lösen. Die OGNL-Lösung ist entstanden

2. OGNL-Projekt tatsächlicher Kampf

OGNL ist die Abkürzung für Object-Graph Navigation Language. Es handelt sich um eine leistungsstarke Ausdruckssprache, die einfache und konsistente Formelsyntax verwendet Sie können auf alle Attribute des Objekts zugreifen, die Methoden des Objekts aufrufen,

das Strukturdiagramm des gesamten Objekts durchlaufen und Funktionen wie die Feldtypkonvertierung implementieren.

a. OGNL ermöglicht uns den Zugriff auf die Objektebene mit sehr einfachen Ausdrücken [OGNL unterstützt die Schlüsselwertsuche für Karte]


Sie können direkt auf die Eigenschaften des Objekts klicken,

Wenn das Benutzerattribut beispielsweise eine Liste ist, Name des ersten Benutzerobjekts

Zum Beispiel ist das Benutzerattribut eine Karte Ruft den Wert ab, der dem Benutzerschlüssel „name“ entspricht


b. Es werden Operatoren unterstützt (z. B. +-*/), die einen höheren Freiheitsgrad und stärkere Funktionen als gewöhnliche Zeichen haben

c. Unterstützt Objektmethodenaufrufe wie xxx.doSomeSpecial()


d. Unterstützt klassenstatische Methodenaufrufe und Wertzugriff, das Ausdrucksformat ist @ [vollständiger Klassenname (einschließlich Paketpfad)]@ [Methodenname |. Wertname], zum Beispiel: @java.lang.String@format('foo %s', 'bar') oder @tutorial.MyConstant@APP_NAME

e. Unterstützt Zuweisungsvorgänge und Ausdrucksverkettung, z. B. Preis =100, Rabatt=0,8, berechnePreis(Preis*Rabatt), dieser Ausdruck gibt 80 zurück


f. Greifen Sie auf den OGNL-Kontext und ActionContext zu

g Sie können auch neue Objekte über den Konstruktor erstellen eines beliebigen Klassenobjekts

/**neue Java.net.URL("xxxxxx/")

**/

h.OGNL unterstützt Projektion und Auswahl ähnlich denen in der Datenbank.
Bei der Projektion werden die gleichen Attribute jedes Elements in der Menge ausgewählt, um eine neue Menge zu bilden, ähnlich der Feldoperation einer relationalen Datenbank. Die Syntax des Projektionsvorgangs lautet „collection.{XXX}“, wobei XXX die öffentliche Eigenschaft jedes Elements in dieser Sammlung ist.

/**group.userList.{username} ruft eine Liste der Namen aller Benutzer in einer Gruppe ab

**/

Die Auswahl besteht darin, die festgelegten Elemente zu filtern, die die Auswahlbedingungen erfüllen, ähnlich dem Datensatzvorgang einer relationalen Datenbank. Die Syntax der Auswahloperation lautet: Sammlung.{X YYY}, wobei X ein Auswahloperator ist, gefolgt vom logischen Ausdruck für die Auswahl. Es gibt drei Auswahloperatoren:
? Wählt alle Elemente aus, die die Bedingung erfüllen
^ Wählt das erste Element aus, das die Bedingung erfüllt

$ Wählt das letzte Element aus, das die Bedingung erfüllt

/**group.userList.{? #txxx.xxx != null} ruft eine Liste der Benutzer in einer Gruppe ab, deren Name nicht leer ist
**/

i wird normalerweise in Verbindung mit Struts 2-Zeichen verwendet, hauptsächlich durch die Verwendung der drei Symbole #, % und $. Die Verwendungsmethode lautet wie folgt:

/**Zugriff auf OGNL-Kontext und Aktionskontext, #äquivalent zu ActionContext.getContext(); die folgende Tabelle hat mehrere nützliche Eigenschaften in ActionContext:

parameters Map #parameters.id[0], das die aktuellen HTTP-Anforderungsparameter enthält, entspricht request.getParameterValues("id").get(0);

request Map #request, das die Attribute der aktuellen HttpServletRequest enthält .userName entspricht request.getAttribute("userName")session, die die Map der Attribute der aktuellen HttpSession enthält. #session.userName entspricht der Map of session.getAttribute("userName")application, die die enthält Attribute des aktuell angewendeten ServletContext. userName entspricht den oben genannten drei, um das userName-Attribut innerhalb des Bereichs zu lesen.
wird zum Filtern und Projizieren von Sammlungen verwendet,
wie Bücher.{?#this.price<100}; 🎜> um eine Karte zu erstellen, z. B. # {'foo1':'bar1', 'foo2':'bar2'}. Das Symbol „

%“ wird verwendet, um den Wert des OGNL-Ausdrucks zu berechnen, wenn das Attribut des Flags vom Typ „String“ ist.

„$“ hat zwei Hauptverwendungen und wird bei der Internationalisierung in der Ressourcendatei verwendet , referenzieren Sie den OGNL-Ausdruck in der Konfigurationsdatei

/**


j Eingehende Daten werden flexibel an der Rezeption angezeigt

Das Obige ist der Inhalt der Front-End-OGNL-Testversion von Webwork Learning Path (2). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www. php.cn)


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage