English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JSP Expression Language (EL) rend l'accès aux données stockées dans un JavaBean très simple. JSP EL peut être utilisé pour créer des expressions arithmétiques et des expressions logiques. Dans les expressions EL, vous pouvez utiliser des nombres entiers, des nombres à virgule flottante, des chaînes, des constantes true, false, et null.
En règle générale, lorsque vous devez spécifier une valeur de propriété dans un tag JSP, il suffit de l'utiliser sous forme de chaîne :
<jsp:setProperty name="box" property="perimeter" value="100"/>
JSP EL vous permet de spécifier une expression pour représenter la valeur de la propriété. La syntaxe d'expression simple est la suivante :
${expr}
Dans ce cas, expr fait référence à l'expression. Dans JSP EL, les opérateurs universels sont . et {} . Ces opérateurs vous permettent d'accéder aux propriétés des divers JavaBean via des objets JSP intégrés.
Par exemple, le tag <jsp:setProperty> ci-dessus peut être réécrit sous forme d'expression langage suivant :
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*"box.height"/>
Quand le compilateur JSP voit le format "${" dans les propriétés, il génère du code pour calculer cette expression et crée un substitut pour la valeur de l'expression.
Vous pouvez également utiliser le langage d'expression dans le texte du modèle de la balise. Par exemple, la balise <jsp:text> insère simplement le texte de son corps dans la sortie JSP :
<jsp:text> <h1>Hello JSP!</h1> </jsp:text>
Maintenant, utilisez des expressions dans le corps de la balise <jsp:text> comme suit :
<jsp:text> Box Perimeter est: ${2*box.width + 2*box.height} </jsp:text>
On peut utiliser des parenthèses pour organiser des sous-expressions dans les expressions EL. Par exemple, ${(1 + 2) * 3égal à9mais ${1 + (2 * 3égal à7.
Pour désactiver l'évaluation des expressions EL, il faut utiliser l'instruction page pour définir la valeur de l'attribut isELIgnored sur true :
<%@ page isELIgnored="true|false" %>
De cette manière, l'expression EL sera ignorée. Si elle est définie sur false, le conteneur calculera l'expression EL.
Les expressions EL supportent la plupart des opérateurs arithmétiques et logiques fournis par Java :
Opérateur | Description |
---|---|
. | Accéder à une propriété de Bean ou une entrée de la carte |
[] | Accéder à un élément d'un tableau ou d'une liste |
( ) | Organiser une sous-expression pour changer la priorité |
+ | Addition |
- | Soustraction ou négatif |
* | Multiplication |
/ ou div | Division |
% ou mod | Modulo |
== ou eq | Test d'égalité |
!= ou ne | Test de différence |
< ou lt | Test de infériorité |
> ou gt | Test de supériorité |
<= ou le | Test de infériorité ou égalité |
>= ou ge | Test de supériorité ou égalité |
&& ou and | Test de logique et |
|| ou ou | Test de logique ou |
! ou not | Test de négation |
empty | Test de la valeur nulle |
JSP EL vous permet d'utiliser des fonctions dans des expressions. Ces fonctions doivent être définies dans une bibliothèque de balises personnalisée. La syntaxe d'utilisation des fonctions est la suivante :
${ns:func(param1, param2, ...)}
ns fait référence à l'espace de nom (namespace), func fait référence au nom de la fonction, param1Cela fait référence au premier paramètre, param2Cela fait référence au deuxième paramètre, et ainsi de suite. Par exemple, il y a une fonction fn:length définie dans la bibliothèque JSTL, qui peut être utilisée comme suit pour obtenir la longueur d'une chaîne de caractères :
${fn:length("Get my length")}
Pour utiliser les fonctions de toute bibliothèque de balises, vous devez installer ces bibliothèques sur le serveur, puis inclure ces bibliothèques dans le fichier JSP en utilisant la balise <taglib>.
Les objets implicites pris en charge par JSP EL sont listés ci-dessous :
Objets implicites | Description |
---|---|
pageScope | Portée page |
requestScope | Portée request |
sessionScope | Portée session |
applicationScope | Portée application |
param | Paramètres de l'objet Request, chaîne de caractères |
paramValues | Paramètres de l'objet Request, ensemble de chaînes de caractères |
header | En-têtes d'information HTTP, chaîne de caractères |
headerValues | En-têtes d'information HTTP, ensemble de chaînes de caractères |
initParam | Paramètres d'initialisation du contexte |
cookie | Valeur du cookie |
pageContext | Le pageContext actuel de la page |
Vous pouvez utiliser ces objets dans les expressions, comme vous utiliseriez des variables. Des exemples seront donnés pour mieux comprendre ce concept.
L'objet pageContext est une référence à l'objet pageContext dans JSP. Via l'objet pageContext, vous pouvez accéder à l'objet request. Par exemple, pour accéder à la chaîne de caractères de requête transmise par l'objet request, vous pouvez le faire ainsi :
${pageContext.request.queryString}
Les variables pageScope, requestScope, sessionScope et applicationScope sont utilisées pour accéder aux variables stockées dans les différentes couches d'interaction.
Par exemple, si vous devez accéder explicitement à la variable box du niveau applicationScope, vous pouvez le faire ainsi : applicationScope.box.
Les objets param et paramValues sont utilisés pour accéder aux valeurs des paramètres, en utilisant les méthodes request.getParameter et request.getParameterValues.
Par exemple, pour accéder à un paramètre nommé order, vous pouvez utiliser l'expression : ${param.order} ou ${param["order"]}.
Le prochain exemple montre comment accéder au paramètre username dans la requête :
<%@ 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>
L'objet param retourne une chaîne de caractères unique, tandis que l'objet paramValues retourne un tableau de chaînes de caractères.
Les objets header et headerValues sont utilisés pour accéder aux en-têtes d'information, en utilisant les méthodes request.getHeader et request.getHeaders.
Par exemple, pour accéder à un élément nommé user-Informations d'en-tête user agent, vous pouvez les utiliser de la manière suivante : ${header.user-agent} ou ${header["user-agent"]}。
L'exemple suivant montre comment accéder à l'user-Informations d'en-tête 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>
Résultat de l'exécution suivant :
L'objet header renvoie une valeur unique, tandis que headerValues renvoie un tableau de chaînes de caractères.