JSP Expression Language
JSP Expression que les données d'accès stockées dans un JavaBean Langue (EL), de sorte devient très simple. EL JSP peut soit être utilisé pour créer une expression arithmétique peut également être utilisé pour créer une expression logique. Dans JSP EL expressions peuvent utiliser des entiers, nombres à virgule flottante, les chaînes, les constantes vraies, fausses, il est nul.
Une syntaxe simple
En règle générale, lorsque vous avez besoin de spécifier une valeur de propriété lorsque les balises JSP, il suffit d'utiliser la chaîne à:
<jsp:setProperty name="box" property="perimeter" value="100"/>
JSP EL expression vous permet de spécifier une valeur de propriété. Une syntaxe d'expression simple est la suivante:
${expr}
En quoi, expr se réfère à l'expression. Dans l'opérateur générique JSP EL est "." Et "[]." Ces deux opérateurs vous permettent d'accéder à une grande variété de propriétés intégrées JSP JavaBean à travers l'objet.
Par exemple, ci-dessus <jsp: setProperty> balise peut être réécrit en utilisant le langage d'expression comme suit:
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>
Lorsque le compilateur JSP pour voir les "$ {}" après le format, il génère du code pour évaluer l'expression, et génère un substitut pour remplacer la valeur de l'expression dans la propriété.
Vous pouvez également utiliser la langue d'expression dans l'onglet texte du modèle. Par exemple, <jsp: text> tag simplement être inséré dans la sortie JSP de corps du texte:
<jsp:text> <h1>Hello JSP!</h1> </jsp:text>
Maintenant, en: utilisant l'expression <texte jsp> dans le corps, comme ceci:
<jsp:text> Box Perimeter is: ${2*box.width + 2*box.height} </jsp:text>
EL expressions entre parenthèses peuvent être utilisées pour organiser des sous-expression. Par exemple $ {(1 + 2) * 3 = 9}, mais $ {1 + (2 * 3)} = 7.
Vous voulez désactiver l'évaluation des expressions EL, alors vous devez utiliser la directive de page attribut isELIgnored true:
<%@ page isELIgnored ="true|false" %>
Ainsi, les expressions EL sont ignorées. Si la valeur false, le conteneur sera calculé EL expressions.
EL opérateur sous-jacent
EL support d'expression fournie par la plupart des arithmétiques et logiques opérateurs Java:
opérateurs | description |
---|---|
. | Bean accéder à une propriété ou d'une entrée de mappage |
[] | Accédez à un tableau ou d'une liste d'éléments |
() | Organiser une sous-expression pour changer la priorité |
+ | plus |
- | Enregistrer ou négative |
* | Multipliez |
/ Ou div | sauf |
% Ou mod | Modulo |
== Ou eq | Test de l'égalité |
! = Ou ne | si test inégal |
<Ou lt | Testez si moins de |
> Ou gt | Le test est supérieure à |
<= Ou le | Testez si inférieur ou égal |
> = Ou ge | Testez si supérieur ou égal |
&& Or et | la logique de test et |
|| Or ou | la logique de test ou |
! Ou pas | test de niées |
vide | Tester si null |
La fonction JSP EL
fonction JSP EL vous permet d'utiliser dans les expressions. Ces fonctions doivent être définies dans une bibliothèque de balises personnalisées. Utiliser la syntaxe de la fonction est la suivante:
${ns:func(param1, param2, ...)}
ns fait référence à un espace de noms (namespace), func est le nom de la fonction, param1 se réfère au premier argument, param2 se réfère au second argument, et ainsi de suite. Par exemple, il y a une fonction fn: longueur, définie dans la bibliothèque JSTL peut être comme ça pour obtenir la longueur d'une chaîne:
${fn:length("Get my length")}
Pour utiliser toutes les fonctions de la bibliothèque de balises, vous aurez besoin de ces bibliothèques installées sur le serveur, puis utilisez la balise <taglib> contient les bibliothèques dans le fichier JSP.
JSP EL objets implicites
Prise en charge de JSP EL objets implicites sont répertoriés dans le tableau suivant:
objets cachés | description |
---|---|
PageScope | Page Scope |
requestScope | demande portée |
sessionScope | portée de session |
applicationScope | la portée d'application |
param | Demande chaîne de paramètres d'objet |
paramValues | Paramètre objet Request, collection de chaînes |
tête | Tête HTTP string |
headerValues | en-tête HTTP, collection de chaînes |
initParam | Contexte paramètres d'initialisation |
gâteau | valeur de Cookie |
pageContext | page pageContext actuelle |
Vous pouvez utiliser ces objets dans une expression, comme l'utilisation de la même variable. Suivant donnera quelques exemples pour mieux comprendre ce concept.
objets pageContext
objet pageContext est une référence à l'objet JSP pageContext. Par objet pageContext, vous pouvez accéder à l'objet de la demande. Par exemple, pour accéder à l'objet de la demande passée dans la chaîne de requête, comme ceci:
${pageContext.request.queryString}
Portée Objets
PageScope, requestScope, sessionScope variable applicationScope est utilisé pour accéder à des données stockées dans chaque niveau de portée variable.
Par exemple, si vous avez besoin d'accéder explicitement boîte applicationScope couche variable, il peut être consulté: applicationScope.box.
param et ParamValues objets
param et paramValues objet est utilisé pour accéder à des valeurs de paramètres en utilisant les méthodes et request.getParameterValues méthode request.getParameter.
Par exemple, l'accès à un paramètre nommé de commande, vous pouvez utiliser cette expression: $ {param.order} ou {$ param [ ' «ordre»]}.
Les exemples suivants montrent comment accéder au paramètre de demande de nom d'utilisateur:
<%@ 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>
objet param renvoie une chaîne unique, objet paramValues est retourné un tableau de chaînes.
objets d'en-tête et headerValues
tête et l'objet headerValues est utilisé pour accéder aux informations d'en-tête en utilisant les méthodes et la méthode request.getHeaders request.getHeader.
Par exemple, pour accéder à l'information, appelé un en-tête user-agent, vous pouvez utiliser cette expression: $ {header.user-agent} ou {$ header [ "user-agent"]}.
Les exemples suivants montrent comment accéder à l'en-tête 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>
Les résultats sont les suivants:
objet d'en-tête renvoie une valeur unique, tandis que headerValues retourne un tableau de chaînes.