JSP Expression Language (EL) macht den Zugriff auf in JavaBeans gespeicherte Daten sehr einfach. Mit JSP EL können sowohl arithmetische als auch logische Ausdrücke erstellt werden. In JSP-EL-Ausdrücken können ganze Zahlen, Gleitkommazahlen, Zeichenfolgen, die Konstanten „true“, „false“ und „null“ verwendet werden.
Wenn Sie einen Attributwert in einem JSP-Tag angeben müssen, verwenden Sie normalerweise einfach eine Zeichenfolge:
<jsp:setProperty name="box" property="perimeter" value="100"/>
Mit JSP EL können Sie einen Ausdruck angeben, der einen Eigenschaftswert darstellt. Eine einfache Ausdruckssyntax lautet wie folgt:
${expr}
Darunter,
Ausdruck bezieht sich auf einen Ausdruck. Die üblichen Operatoren in JSP EL sind
"."und
„[]“. Diese beiden Operatoren ermöglichen Ihnen den Zugriff auf eine Vielzahl von
JavaBeans Eigenschaften.
Zum Beispiel das obige
<jsp:setProperty>Tags können mithilfe der Ausdruckssprache wie folgt umgeschrieben werden:
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>
Wenn der JSP-Compiler „sieht“
${}„Nach der Formatierung wird Code generiert, um den Ausdruck auszuwerten und einen Ersatz für den Wert des Ausdrucks zu erstellen.
Sie können im Vorlagentext des Etiketts auch Ausdruckssprachen verwenden. Zum Beispiel
<jsp:text>Das Tag fügt einfach den Text in seinem Textkörper in die JSP-Ausgabe ein:
<jsp:text><h1>Hallo JSP!</h1></jsp:text>
jetzt, in
<jsp:text>Verwenden Sie Ausdrücke im Tag-Körper, etwa so:
<jsp:text>Boxumfang ist: ${2*box.width + 2*box.height}</jsp:text>
Klammern können verwendet werden, um Unterausdrücke in EL-Ausdrücken zu organisieren. Zum Beispiel
${(1 + 2) * 3}gleich 9, aber
${1 + (2 * 3)}Entspricht 7.
Um die Auswertung von EL-Ausdrücken zu deaktivieren, verwenden Sie
SeiteAnweisungen werden
isELIgnoredDer Attributwert ist auf gesetzt
WAHR:
<%@ page isELIgnored ="true|false" %>
Auf diese Weise werden EL-Ausdrücke ignoriert. Wenn eingestellt auf
FALSCH, wertet der Container den EL-Ausdruck aus.
EL-Ausdrücke unterstützen die meisten von Java bereitgestellten arithmetischen und logischen Operatoren:
Operator | beschreiben |
---|---|
. | Besuchen Sie aBohneAttribut oder ein Karteneintrag |
[] | Greifen Sie auf Elemente eines Arrays oder einer verknüpften Liste zu |
( ) | Organisieren Sie einen Unterausdruck, um die Priorität zu ändern |
+ | hinzufügen |
- | minus oder negativ |
* | nehmen |
/ oder div | entfernen |
% oder mod | Nimm eine Form |
== oder Gl | Testen Sie auf Gleichheit |
!= oder ne | Testen Sie, ob es ungleich ist |
< oder lt | Testen Sie, ob weniger als |
> oder gt | Testen Sie, ob größer als |
<= oder le | Testen Sie, ob kleiner oder gleich ist |
>= org | Testen Sie, ob größer oder gleich ist |
&& oder und | Testen Sie das logische UND |
||. oder oder | Testen Sie das logische ODER |
! oder nicht | Testnegation |
leer | Auf Nullwert testen |
Mit JSP EL können Sie Funktionen in Ausdrücken verwenden. Diese Funktionen müssen in der benutzerdefinierten Tag-Bibliothek definiert werden. Die Syntax zur Verwendung der Funktion lautet wie folgt:
${ns:func(param1, param2, ...)}
ns bezieht sich auf den Namespace,
FunktionBezieht sich auf den Namen der Funktion,
param1Bezieht sich auf den ersten Parameter,
param2 bezieht sich auf den zweiten Parameter und so weiter. Es gibt zum Beispiel eine Funktion
fn: Länge, definiert in der JSTL-Bibliothek, kann verwendet werden, um die Länge einer Zeichenfolge wie folgt abzurufen:
${fn:length("Meine Länge ermitteln")}
Um Funktionen aus einer beliebigen Tag-Bibliothek nutzen zu können, müssen Sie diese Bibliotheken auf dem Server installieren und dann verwenden
<taglib>Tags umfassen diese Bibliotheken in JSP-Dateien.
JSP EL unterstützt die in der folgenden Tabelle aufgeführten impliziten Objekte:
Verstecktes Objekt | beschreiben |
---|---|
pageScope | Seitenumfang |
requestScope | Anforderungsbereich |
sessionScope | Sitzungsbereich |
Anwendungsbereich | Anwendungsbereich |
param | Parameter des Request-Objekts, Zeichenfolge |
paramValues | Parameter des Request-Objekts, String-Sammlung |
Kopfzeile | HTTP-Header, Zeichenfolge |
headerValues | HTTP-Header, String-Sammlung |
initParam | Kontextinitialisierungsparameter |
Kekse | Cookie-Wert |
pageContext | pageContext der aktuellen Seite |
Sie können diese Objekte wie Variablen in Ausdrücken verwenden. Als nächstes werden einige Beispiele gegeben, um dieses Konzept besser zu verstehen.
pageContextDas Objekt befindet sich in JSP
pageContextObjektreferenz. Passieren
pageContextObjekt, auf das Sie zugreifen können
AnfrageObjekt. Besuchen Sie zum Beispiel
AnfrageDie vom Objekt übergebene Abfragezeichenfolge, etwa so:
${pageContext.request.queryString}
pageScope,
requestScope,
sessionScope,
AnwendungsbereichVariablen werden verwendet, um auf Variablen zuzugreifen, die auf verschiedenen Gültigkeitsebenen gespeichert sind.
Wenn Sie beispielsweise explizit auf die zugreifen müssen
AnwendungsbereichMehrschichtig
KastenAuf Variablen kann wie folgt zugegriffen werden:
applicationScope.box.
paramund
paramValuesObjekt zum Zugriff auf Parameterwerte mithilfe von
request.getParameterMethoden und
request.getParameterValuesVerfahren.
Zum Beispiel der Zugriff auf eine Datei mit dem Namen
Befehl Parameter können Sie Ausdrücke wie diesen verwenden:
${param.order}, oder
${param["order"]}.
Das folgende Beispiel zeigt, wie auf die Anfrage zugegriffen wird
BenutzernameParameter:
<%@ page import="java.io.*,java.util.*" %><% String title = "Zugriff auf Anforderungsparameter"; %><html><head><title><% out.print(title ); %></title></head><body><center><h1><% out.print(title); align="center"><p>${param["username"]}</p></div></body></html>
param-Objekt gibt eine einzelne Zeichenfolge zurück, while
paramValuesDas Objekt gibt ein Array von Zeichenfolgen zurück.
Kopfzeileund
headerValuesDas Objekt wird verwendet, um mithilfe von auf den Informationsheader zuzugreifen
request.getHeaderMethoden und
request.getHeadersVerfahren.
Um beispielsweise auf eine Datei mit dem Namen zuzugreifen
Benutzeragent Informationskopf, können Sie den Ausdruck wie folgt verwenden:
${header.user-agent}, oder
${header["user-agent"]}.
Das folgende Beispiel zeigt den Zugriff
BenutzeragentInformationskopf:
<%@ page import="java.io.*,java.util.*" %><% String title = "User-Agent-Beispiel"; %><html><head><title><% out.print(title ); %></title></head><body><center><h1><% out.print(title); align="center"><p>${header["user-agent"]}</p></div></body></html>
Die Laufergebnisse sind wie folgt:
Das Header-Objekt gibt einen einzelnen Wert zurück, während headerValues ein Array von Zeichenfolgen zurückgibt.