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.