Langage d'expression JSP
JSP Expression Language (EL) rend l'accès aux données stockées dans JavaBeans très simple. JSP EL peut être utilisé pour créer des expressions arithmétiques et logiques. Les entiers, les nombres à virgule flottante, les chaînes, les constantes vraies, fausses et nulles peuvent être utilisés dans les expressions JSP EL.
Une syntaxe simple
Généralement, lorsque vous devez spécifier une valeur d'attribut dans une balise JSP, vous utilisez simplement une chaîne :
<jsp:setProperty name="box" property="perimeter" value="100"/>
JSP EL vous permet de spécifier une formule d'expression pour représenter les valeurs d'attribut . Une syntaxe d'expression simple est la suivante :
${expr}
où expr fait référence à l'expression. Les opérateurs courants dans JSP EL sont "." et "[]". Ces deux opérateurs vous permettent d'accéder à une variété de propriétés JavaBean via des objets JSP intégrés.
Par exemple, la balise <jsp:setProperty> ci-dessus peut être réécrite comme suit en utilisant le langage d'expression :
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>
Lorsque le compilateur JSP voit "${}" dans la propriété Après le formatage, il génère du code pour évaluer l'expression et produire un substitut à la valeur de l'expression.
Vous pouvez également utiliser des langages d'expression dans le texte modèle des balises. Par exemple, la balise <jsp:text> insère simplement le texte dans son corps dans la sortie JSP :
<jsp:text> <h1>Hello JSP!</h1> </jsp:text>
Maintenant, utilisez une expression dans le corps de la balise <jsp:text> :
<jsp:text> Box Perimeter is: ${2*box.width + 2*box.height} </jsp:text>
Vous pouvez utiliser des parenthèses pour organiser les sous-expressions dans les expressions EL. Par exemple, ${(1 + 2) * 3} est égal à 9, mais ${1 + (2 * 3)} est égal à 7.
Si vous souhaitez désactiver l'évaluation des expressions EL, vous devez utiliser la directive page pour définir la valeur de l'attribut isELIgnored sur true :
<%@ page isELIgnored ="true|false" %>
De cette façon, l'expression EL sera ignorée . S'il est défini sur false, le conteneur évaluera l'expression EL.
Opérateurs de base en EL
Les expressions EL prennent en charge la plupart des opérateurs arithmétiques et logiques fournis par Java :
Opérateur | Description |
---|---|
. | Accéder à une propriété Bean ou à une entrée de mappage |
[] | Accéder aux éléments d'un tableau ou d'une liste chaînée |
( ) | Structurer une sous-expression pour changer la priorité |
+ | Ajouter |
- | Soustraire ou négatif |
* | Multiplier |
/ ou div | Sauf |
% ou mod | Modulo |
== ou eq | Test d'égalité |
!= ou ne | Testez si ce n'est pas égal |
< ou lt | Testez si c'est inférieur à |
> ou gt | Testez s'il est supérieur à |
<= ou le | Testez s'il est inférieur ou égal à |
>= ou ge | Testez s'il est supérieur ou égal à |
&& ou et | Logique de test et |
|| ou ou | Test logique ou |
! ou pas | Test de négation |
vide | Test de valeur nulle |
Fonctions dans JSP EL
JSP EL vous permet d'utiliser des fonctions dans des expressions. Ces fonctions doivent être définies dans la bibliothèque de balises personnalisées. La syntaxe d'utilisation des fonctions est la suivante :
${ns:func(param1, param2, ...)}
ns fait référence à l'espace de noms, func fait référence au nom de la fonction, param1 fait référence au premier paramètre, param2 fait référence au deuxième paramètre, et ainsi de suite. Par exemple, il y a la fonction fn:length, définie dans la bibliothèque JSTL, qui peut être utilisée pour obtenir la longueur d'une chaîne comme suit :
${fn:length("Get my length")}
Pour utiliser les fonctions de n'importe quelle bibliothèque de balises, vous devez installez ces bibliothèques sur le serveur, puis incluez ces bibliothèques dans le fichier JSP à l'aide de la balise <taglib>.
Objets implicites JSP EL
JSP EL prend en charge les objets implicites répertoriés dans le tableau suivant :
隐含对象 | 描述 |
---|---|
pageScope | page 作用域 |
requestScope | request 作用域 |
sessionScope | session 作用域 |
applicationScope | application 作用域 |
param | Request 对象的参数,字符串 |
paramValues | Request对象的参数,字符串集合 |
header | HTTP 信息头,字符串 |
headerValues | HTTP 信息头,字符串集合 |
initParam | 上下文初始化参数 |
cookie | Cookie值 |
pageContext | 当前页面的pageContext |
Vous pouvez utiliser ces objets dans des expressions tout comme les variables. Ensuite, plusieurs exemples seront donnés pour mieux comprendre ce concept.
Objet pageContext
L'objet pageContext est une référence à l'objet pageContext dans JSP. Grâce à l'objet pageContext, vous pouvez accéder à l'objet de requête. Par exemple, accédez à la chaîne de requête passée dans l'objet requête, comme ceci :
${pageContext.request.queryString}
Objet Scope
Les variables pageScope, requestScope, sessionScope et applicationScope sont utilisées pour accéder aux variables stockées à chaque niveau de portée.
Par exemple, si vous devez accéder explicitement à la variable box dans la couche applicationScope, vous pouvez y accéder comme ceci : applicationScope.box.
Objets param et paramValues
Les objets param et paramValues sont utilisés pour accéder aux valeurs des paramètres en utilisant la méthode request.getParameter et la méthode request.getParameterValues .
Par exemple, pour accéder à un paramètre nommé order, vous pouvez utiliser l'expression : ${param.order}, ou ${param["order"]}.
L'exemple suivant 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 renvoie une seule chaîne, tandis que l'objet paramValues renvoie un tableau de chaînes.
Objets header et headerValues
Les objets header et headerValues sont utilisés pour accéder aux en-têtes d'informations en utilisant la méthode request.getHeader et la méthode request.getHeaders.
Par exemple, pour accéder à un en-tête d'information nommé user-agent, vous pouvez utiliser l'expression : ${header.user-agent}, ou ${header["user-agent"]}.
L'exemple suivant montre comment accéder à l'en-tête des informations de l'agent utilisateur :
<%@ 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>
Les résultats d'exécution sont les suivants :
Le L'objet header renvoie une valeur unique, tandis que headerValues renvoie un tableau de chaînes.