Latest web development tutorials

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:

-Langage d'expression jsp

objet d'en-tête renvoie une valeur unique, tandis que headerValues ​​retourne un tableau de chaînes.