JSP - Ausdruckssprache (EL)
JSP Expression Language (EL) ermöglicht den einfachen Zugriff auf Anwendungsdaten, die in JavaBeans-Komponenten gespeichert sind. Mit JSP EL können Sie beide Ausdrücke erstellen(a) Arithmetik und (b)logisch. Innerhalb eines JSP-EL-Ausdrucks können Sie verwendenintegers, floating point numbers, strings, the built-in constants true and false für boolesche Werte und null.
Einfache Syntax
Wenn Sie einen Attributwert in einem JSP-Tag angeben, verwenden Sie normalerweise einfach eine Zeichenfolge. Zum Beispiel -
<jsp:setProperty name = "box" property = "perimeter" value = "100"/>
Mit JSP EL können Sie einen Ausdruck für jeden dieser Attributwerte angeben. Eine einfache Syntax für JSP EL lautet wie folgt:
${expr}
Hier exprGibt den Ausdruck selbst an. Die häufigsten Operatoren in JSP EL sind. und []. Mit diesen beiden Operatoren können Sie auf verschiedene Attribute von Java Beans und integrierten JSP-Objekten zugreifen.
Zum Beispiel die obige Syntax <jsp:setProperty> Tag kann mit einem Ausdruck wie - geschrieben werden
<jsp:setProperty name = "box" property = "perimeter"
value = "${2*box.width+2*box.height}"/>
Wenn der JSP-Compiler das sieht ${} In einem Attribut wird Code generiert, um den Ausdruck auszuwerten, und der Wert von expresson ersetzt.
Sie können auch die JSP-EL-Ausdrücke im Vorlagentext für ein Tag verwenden. Zum Beispiel die<jsp:text>Das Tag fügt seinen Inhalt einfach in den Text einer JSP ein. Folgende<jsp:text> Deklarationsbeilagen <h1>Hello JSP!</h1> in die JSP-Ausgabe -
<jsp:text>
<h1>Hello JSP!</h1>
</jsp:text>
Sie können jetzt einen JSP-EL-Ausdruck in den Hauptteil von a aufnehmen <jsp:text> Tag (oder ein anderes Tag) mit demselben ${}Syntax, die Sie für Attribute verwenden. Zum Beispiel -
<jsp:text>
Box Perimeter is: ${2*box.width + 2*box.height}
</jsp:text>
EL-Ausdrücke können Klammern verwenden, um Unterausdrücke zu gruppieren. Zum Beispiel,${(1 + 2) * 3} equals 9, but ${1 + (2 * 3)} equals 7.
Um die Auswertung von EL-Ausdrücken zu deaktivieren, geben wir die an isELIgnored Attribut der Seitenanweisung wie folgt -
<%@ page isELIgnored = "true|false" %>
Die gültigen Werte dieses Attributs sind wahr und falsch. Wenn dies der Fall ist, werden EL-Ausdrücke ignoriert, wenn sie in statischen Text- oder Tag-Attributen angezeigt werden. Wenn es falsch ist, werden EL-Ausdrücke vom Container ausgewertet.
Grundlegende Operatoren in EL
JSP Expression Language (EL) unterstützt die meisten von Java unterstützten arithmetischen und logischen Operatoren. In der folgenden Tabelle sind die am häufigsten verwendeten Operatoren aufgeführt.
S.No. | Betreiber & Beschreibung |
---|---|
1 | . Greifen Sie auf eine Bean-Eigenschaft oder einen Map-Eintrag zu |
2 | [] Greifen Sie auf ein Array oder ein Listenelement zu |
3 | ( ) Gruppieren Sie einen Unterausdruck, um die Auswertungsreihenfolge zu ändern |
4 | + Zusatz |
5 | - Subtraktion oder Negation eines Wertes |
6 | * Multiplikation |
7 | / or div Teilung |
8 | % or mod Modulo (Rest) |
9 | == or eq Test auf Gleichheit |
10 | != or ne Test auf Ungleichheit |
11 | < or lt Test für weniger als |
12 | > or gt Test auf größer als |
13 | <= or le Test auf weniger als oder gleich |
14 | >= or ge Auf mehr als oder gleich prüfen |
15 | && or and Test auf logisches UND |
16 | || or or Test auf logisches ODER |
17 | ! or not Unäre boolesche Ergänzung |
18 | empty Test auf leere Variablenwerte |
Funktionen in JSP EL
Mit JSP EL können Sie Funktionen auch in Ausdrücken verwenden. Diese Funktionen müssen in den benutzerdefinierten Tag-Bibliotheken definiert werden. Eine Funktionsverwendung hat die folgende Syntax:
${ns:func(param1, param2, ...)}
Wo ns ist der Namespace der Funktion, func ist der Name der Funktion und param1ist der erste Parameterwert. Zum Beispiel die Funktionfn:length, die Teil der JSTL-Bibliothek ist. Diese Funktion kann wie folgt verwendet werden, um die Länge eines Strings zu ermitteln.
${fn:length("Get my length")}
Um eine Funktion aus einer beliebigen Tag-Bibliothek (Standard oder benutzerdefiniert) zu verwenden, müssen Sie diese Bibliothek auf Ihrem Server installieren und die Bibliothek mithilfe von in Ihre JSP aufnehmen <taglib> Direktive wie im Kapitel JSTL erläutert.
Implizite JSP EL-Objekte
Die JSP-Ausdruckssprache unterstützt die folgenden impliziten Objekte:
S.No. | Implizites Objekt & Beschreibung |
---|---|
1 | pageScope Bereichsvariablen aus dem Seitenbereich |
2 | requestScope Gültigkeitsbereichsvariablen aus dem Anforderungsbereich |
3 | sessionScope Bereichsvariablen aus dem Sitzungsbereich |
4 | applicationScope Bereichsvariablen aus dem Anwendungsbereich |
5 | param Parameter als Zeichenfolgen anfordern |
6 | paramValues Parameter als Auflistung von Zeichenfolgen anfordern |
7 | header HTTP-Anforderungsheader als Zeichenfolgen |
8 | headerValues HTTP-Anforderungsheader als Sammlungen von Zeichenfolgen |
9 | initParam Kontextinitialisierungsparameter |
10 | cookie Cookie-Werte |
11 | pageContext Das JSP PageContext-Objekt für die aktuelle Seite |
Sie können diese Objekte in einem Ausdruck verwenden, als wären sie Variablen. Die folgenden Beispiele helfen Ihnen, die Konzepte zu verstehen -
Das pageContext-Objekt
Mit dem pageContext-Objekt können Sie auf das pageContext-JSP-Objekt zugreifen. Über das pageContext-Objekt können Sie auf das Anforderungsobjekt zugreifen. Um beispielsweise auf die eingehende Abfragezeichenfolge für eine Anforderung zuzugreifen, können Sie den folgenden Ausdruck verwenden:
${pageContext.request.queryString}
Die Scope-Objekte
Das pageScope, requestScope, sessionScope, und applicationScope Variablen bieten Zugriff auf Variablen, die auf jeder Bereichsebene gespeichert sind.
Wenn Sie beispielsweise explizit auf die Box-Variable im Anwendungsbereich zugreifen müssen, können Sie über die applicationScope-Variable als darauf zugreifen applicationScope.box.
Die Objekte param und paramValues
Mit den Objekten param und paramValues können Sie auf die Parameterwerte zugreifen, die normalerweise über verfügbar sind request.getParameter und request.getParameterValues Methoden.
Verwenden Sie beispielsweise den Ausdruck, um auf einen Parameter mit dem Namen order zuzugreifen ${param.order} oder ${param["order"]}.
Das folgende Beispiel zeigt den Zugriff auf einen Anforderungsparameter mit dem Namen Benutzername:
<%@ page import = "java.io.*,java.util.*" %>
<%String title = "Accessing Request Param";%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align = "center">
<p>${param["username"]}</p>
</div>
</body>
</html>
Das param-Objekt gibt einzelne Zeichenfolgenwerte zurück, während das paramValues-Objekt Zeichenfolgenarrays zurückgibt.
header und headerValues Objekte
Mit den Objekten header und headerValues können Sie auf die Header-Werte zugreifen, die normalerweise über verfügbar sind request.getHeader und die request.getHeaders Methoden.
Verwenden Sie den Ausdruck beispielsweise, um auf einen Header mit dem Namen user-agent zuzugreifen ${header.user-agent} oder ${header["user-agent"]}.
Das folgende Beispiel zeigt den Zugriff auf einen Header-Parameter mit dem Namen user-agent -
<%@ page import = "java.io.*,java.util.*" %>
<%String title = "User Agent Example";%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align = "center">
<p>${header["user-agent"]}</p>
</div>
</body>
</html>
Die Ausgabe wird ungefähr so aussehen:
User Agent Example
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; HPNTDF; .NET4.0C; InfoPath.2)
Das Header-Objekt gibt einzelne Zeichenfolgenwerte zurück, während das headerValues-Objekt Zeichenfolgenarrays zurückgibt.