JSP Ausdruckssprache

JSPAusdruckssprache(EL)Machen Sie den Zugriff in gespeichertJavaBeanDie darin enthaltenen Daten werden sehr einfach。JSP ELKann verwendet werden, um arithmetische Ausdrücke oder logische Ausdrücke zu erstellen。InJSP ELGanzzahlen können in Ausdrücken verwendet werden,Gleitkommazahl,String,Konstanttrue、false,Undnull。


eine einfache Grammatik

Typisch,Wenn du musstJSPBei der Angabe eines Attributwerts im Tag,Verwenden Sie einfach die Zeichenfolge:

<jsp:setProperty name="box" property="perimeter" value="100"/>

JSP ELErmöglicht die Angabe eines Ausdrucks zur Darstellung des Attributwerts。Eine einfache Ausdruckssyntax lautet wie folgt:

${expr}

Unter ihnen,exprVerweist auf einen Ausdruck。InJSP ELDer universelle Operator ist . Und {} 。Mit diesen beiden Operatoren können Sie einbettenJSPObjektzugriff auf eine Vielzahl vonJavaBeanAttribut。

Zum Beispiel,Oben<jsp:setProperty>Tags können in der folgenden Form mithilfe einer Ausdruckssprache umgeschrieben werden:

<jsp:setProperty name="box" property="perimeter" 
                 value="${2*box.width+2*box.height}"/>

Wann?JSPDer Compiler sieht in den Eigenschaften"${}"Nach dem Formatieren,Es wird Code generiert, um diesen Ausdruck zu berechnen,Und anstelle des Wertes des Ausdrucks einen Ersatz erzeugen。

Sie können die Ausdruckssprache auch im Vorlagentext des Tags verwenden.。Zum Beispiel<jsp:text>Das Tag fügt einfach den Text aus seinem Textkörper einJSPIn der Ausgabe:

<jsp:text>
<h1>Hello JSP!</h1>
</jsp:text>

Jetzt,In<jsp:text>Verwenden Sie Ausdrücke im Beschriftungskörper,Wie das:

<jsp:text>
Box Perimeter is: ${2*box.width + 2*box.height}
</jsp:text>

InELKlammern können verwendet werden, um Unterausdrücke in Ausdrücken zu organisieren。Zum Beispiel${(1 + 2) * 3}Gleich9,Aber${1 + (2 * 3)} Gleich7。

Möchten Sie das Paar deaktivierenELAusdruck des Ausdrucks,Verwenden müssenpageAnweisung wirdisELIgnoredDer Eigenschaftswert wird auf gesetzttrue:

<%@ page isELIgnored ="true|false" %>

Auf diese Weise,ELAusdrücke werden ignoriert。Wenn gesetztfalse,Dann rechnet der ContainerELAusdruck。


ELGrundoperator

ELAusdrucksunterstützung am meistenJavaArithmetische und logische Operatoren werden bereitgestellt:

Betreiber Beschreibung
. Besuchen Sie einenBeanAttribut oder ein Zuordnungseintrag
[] Greifen Sie auf ein Array oder ein Element einer verknüpften Liste zu
( ) Organisieren Sie einen Unterausdruck, um die Priorität zu ändern
+ Plus
- Minus oder Minus
* Multiplizieren
/ or div Außer
% or mod Formen
== or eq Test auf Gleichheit
!= or ne Ob der Test nicht gleich ist
< or lt Ob der Test kleiner ist als
> or gt Ob der Test größer ist als
<= or le Test ist kleiner oder gleich
>= or ge Test ist größer als oder gleich
&& or and Testlogik und
|| or or Testlogik oder
! or not Testumkehr
empty Testen Sie, ob es null ist

JSP ELFunktion in

JSP ELErmöglicht die Verwendung von Funktionen in Ausdrücken。Diese Funktionen müssen in einer benutzerdefinierten Tag-Bibliothek definiert werden。Die Syntax der Funktion lautet wie folgt:

${ns:func(param1, param2, ...)}

nsVerweist auf den Namespace(namespace),funcBezieht sich auf den Namen der Funktion,param1Verweist auf den ersten Parameter,param2Verweist auf den zweiten Parameter,Und so weiter。Zum Beispiel,Habe eine Funktionfn:length,InJSTLDefinition in der Bibliothek,Sie können die Länge einer Zeichenfolge wie folgt erhalten:

${fn:length("Get my length")}

So verwenden Sie eine Funktion in einer beliebigen Tag-Bibliothek,Sie müssen diese Bibliotheken auf dem Server installieren,Dann benutze<taglib>Beschriften Sie inJSPDiese Bibliotheken sind in der Datei enthalten。


JSP ELImplizites Objekt

JSP ELUnterstützung für versteckte Objekte, die in der folgenden Tabelle aufgeführt sind:

Implizites Objekt Beschreibung
pageScope page Geltungsbereich
requestScope request Geltungsbereich
sessionScope session Geltungsbereich
applicationScope application Geltungsbereich
param Request Objektparameter,String
paramValues RequestObjektparameter,String-Auflistung
header HTTP Leiter der Information,String
headerValues HTTP Leiter der Information,String-Auflistung
initParam Kontextinitialisierungsparameter
cookie CookieWert
pageContext Aktuelle SeitepageContext

Sie können diese Objekte in Ausdrücken verwenden,Genau wie bei der Verwendung von Variablen。Als nächstes werde ich einige Beispiele nennen, um das Konzept besser zu verstehen.。


pageContextObjekt

pageContextObjekt istJSPMediumpageContextObjektreferenz。PasspageContextObjekt,Sie können besuchenrequestObjekt。Zum Beispiel,ZugangrequestDie vom Objekt übergebene Abfragezeichenfolge,Wie das:

${pageContext.request.queryString}

ScopeObjekt

pageScope,requestScope,sessionScope,applicationScopeVariablen werden verwendet, um auf Variablen zuzugreifen, die auf jeder Bereichsebene gespeichert sind。

Zum Beispiel,Wenn Sie expliziten Zugriff auf benötigenapplicationScopeGeschichtetboxVariabel,Kann so zugegriffen werden:applicationScope.box。


paramUndparamValuesObjekt

paramUndparamValuesObjekt für den Zugriff auf Parameterwerte,Mitrequest.getParameterMethode undrequest.getParameterValuesMethode。

Zum Beispiel,Greifen Sie auf einen Namen zuorderParameter,Sie können solche Ausdrücke verwenden:${param.order},Oder${param["order"]}。

Das nächste Beispiel zeigt den ZugriffrequestMediumusernameParameter:

<%@ 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>

paramObject gibt eine einzelne Zeichenfolge zurück,UndparamValuesDas Objekt gibt ein Array von Zeichenfolgen zurück。


headerUndheaderValuesObjekt

headerUndheaderValuesObjekt für den Zugriff auf den Header,Mit request.getHeaderMethode undrequest.getHeadersMethode。

Zum Beispiel,Möchten Sie auf einen Namen zugreifenuser-agentInformationskopfzeile,Sie können solche Ausdrücke verwenden:${header.user-agent},Oder${header["user-agent"]}。

Das nächste Beispiel zeigt den Zugriffuser-agentLeiter der Information:

<%@ 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 Ergebnisse sind wie folgt:

headerObject gibt einen einzelnen Wert zurück,UndheaderValuesGibt ein Array von Zeichenfolgen zurück。

Tutorial für fliegende Fische@2001-2030