20.4 Die Expression Language (EL)
Seit JSP 2.0 lassen sich mit der Expression Language (EL) Ausdrücke schreiben, und es ist möglich, auf Geschäftsdaten zuzugreifen.
Listing 20.5 el.jsp
${10 mod 4} == 2 ${(10*10) ne 100} == false ${"tutego" == 'tutego'} == true
Das Ergebnis des EL-Ausdrucks wird in die Seite geschrieben.
EL nicht verarbeiten
Um das Verarbeiten von EL-Ausdrücken für eine Seite zu unterbinden, ist folgende Zeile in die JSP aufzunehmen:
<jsp:directive.page isELIgnored="true" %>
20.4.1 Operatoren der EL
Die EL kennt die bekannten Java-Operationen, fügt aber alternative Schreibweisen hinzu, sodass zum Beispiel statt ${12 / 3} auch ${12 div 3} gestattet ist.
Operator | Beschreibung |
+, - |
Addition, Subtraktion |
* |
Multiplikation |
/, div |
Division |
%, mod |
Modulo (Rest) |
==, eq |
Gleichheit |
!=, ne |
Ungleichheit |
<, lt |
kleiner als |
>, gt |
größer als |
<=, le |
kleiner gleich |
>=, ge |
größer als |
&&, and |
logisches Und |
||, or |
logisches Oder |
!, not |
Boolean Komplement |
a ? b : c |
Bedingungsoperator |
empty |
Testet, ob ein Wert null oder leer ist. |
20.4.2 Literale
Wie die Programmiersprache Java definiert die JSP Expression Language Literale:
- Boolean. Mit den Werten true and false
- Ganzzahlen. Wie in Java etwa 24, –45, 567
- Fließkommazahlen. Auch wie in Java, etwa –1.8E-45, 4.567
- String. Zeichenkette, die entweder in einfachen oder doppelten Anführungsstrichen steht. Es gibt keine Unterscheidung zwischen einzelnen Zeichen und Zeichenketten; die EL kennt nur Strings.
- Null. Null
20.4.3 Implizite EL-Objekte
Der Web-Container stellt einige vorinitialisierte Objekte bereit, auf die ein EL-Ausdruck zurückgreifen kann.
Listing 20.6 implicit.jsp
${pageContext.request.contextPath} <br/> ${header.host} <br/> ${pageContext.servletContext.servletContextName}
Die Ausgabe könnte sein:
localhost:8080 /web 20_JSPServlets
Eine ganze Reihe von impliziten EL-Objekten arbeitet als Assoziativspeicher.
param |
Request-Parameter |
paramValues |
Parameter-Namen und Werte im Feld |
header |
Header-Namen |
headerValues |
Header-Namen und Belegungen im Feld |
cookie |
Cookie-Name mit Cookie-Objekt |
initParam |
Parameter aus Kontext-Initialisierung |
Das implizite Objekt pageContext (keine Map) ist Start für Unterelemente:
ServletContext |
Repräsentiert den ServletContext. |
Session |
Steht für die aktuelle HttpSession. |
Request |
ServletRequest der Anfrage |
Response |
ServletResponse des Ergebnisses |
Außerdem verwalten vier implizite Objekte pageScope, requestScope, sessionScope und applicationScope Objekte in einem der vier Gültigkeitsbereiche.