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.
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 expression pour représenter une valeur de propriété. Une syntaxe d'expression simple est la suivante :
${expr}Parmi eux,
expression fait référence à une expression. Les opérateurs courants dans JSP EL sont
"."et
"[]". Ces deux opérateurs vous permettent d'accéder à une variété de
JavaBeans Propriétés.
Par exemple, ce qui précède
<jsp:setProperty>Les balises peuvent être réécrites à l'aide du langage d'expression comme suit :
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>Lorsque le compilateur JSP voit "
${} "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 du modèle d'étiquette. Par exemple
<jsp:texte>La balise insère simplement le texte dans son corps dans la sortie JSP :
<jsp:text><h1>Bonjour JSP !</h1></jsp:text>
maintenant, dans
<jsp:texte>Utilisez une expression dans le corps de la balise, comme ceci :
<jsp:text>Le périmètre de la boîte est : ${2*box.width + 2*box.height}</jsp:text>Les parenthèses peuvent être utilisées pour organiser les sous-expressions dans les expressions EL. Par exemple
${(1 + 2) * 3} est égal à 9, mais ${1 + (2 * 3)} Égal à 7.Pour désactiver l'évaluation des expressions EL, utilisez
pageLes instructions seront
estELIgnoredLa valeur de l'attribut est définie sur
vrai:
<%@ page isELIgnored ="true|false" %>
De cette façon, les expressions EL sont ignorées. Si réglé sur
FAUX, le conteneur évaluera l'expression EL.
Les expressions EL prennent en charge la plupart des opérateurs arithmétiques et logiques fournis par Java :
| Opérateur | décrire |
|---|---|
| . | Visitez unHaricotAttribut ou entrée de map |
| [] | Accéder aux éléments d'un tableau ou d'une liste chaînée |
| ( ) | Organiser une sous-expression pour changer la priorité |
| + | ajouter |
| - | moins ou négatif |
| * | prendre |
| / ou div | retirer |
| % ou module | Prends un moule |
| == ou équation | Test d'égalité |
| != ou ne | Test si inégal |
| < ou lt | Testez si moins de |
| > ou GT | Teste si supérieur à |
| <= ou le | Testez si inférieur ou égal à |
| >= orge | Testez si supérieur ou égal à |
| && ou et | Tester le ET logique |
| || ou ou | Tester le OU logique |
| ! ou non | tester la négation |
| vide | Test de valeur nulle |
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 de la fonction est la suivante :
${ns:func(param1, param2, ...)}ns fait référence à l'espace de noms,
fonctionFait référence au nom de la fonction,
paramètre1Fait référence au premier paramètre,
paramètre2 fait référence au deuxième paramètre, et ainsi de suite. Par exemple, il existe une fonction
fn : longueur, défini dans la bibliothèque JSTL, peut être utilisé pour obtenir la longueur d'une chaîne comme suit :
${fn:length("Obtenir ma longueur")}Pour utiliser les fonctions de n'importe quelle bibliothèque de balises, vous devez installer ces bibliothèques sur le serveur, puis utiliser
<taglib>Les balises incluent ces bibliothèques dans les fichiers JSP.
JSP EL prend en charge les objets implicites répertoriés dans le tableau suivant :
| Objet caché | décrire |
|---|---|
| pagePortée | portée de la page |
| requestScope | portée de la demande |
| sessionScope | portée de la session |
| Portée de l'application | champ d'application |
| paramètre | Paramètres de l'objet Request, chaîne |
| valeursparam | Paramètres de l'objet Request, collection de chaînes |
| en-tête | En-tête HTTP, chaîne |
| valeurs d'en-tête | En-tête HTTP, collection de chaînes |
| initParam | Paramètres d'initialisation du contexte |
| cookies | Valeur des cookies |
| pageContext | pageContexte de la page actuelle |
Vous pouvez utiliser ces objets dans des expressions tout comme les variables. Ensuite, plusieurs exemples seront donnés pour mieux comprendre ce concept.
pageContextL'objet est en JSP
pageContextRéférence d'objet. Passer
pageContextObjet auquel vous pouvez accéder
demandeObjet. Par exemple, visitez
demandeLa chaîne de requête transmise par l'objet, comme ceci :
${pageContext.request.queryString}
pagePortée,
requestScope,
sessionScope,
Portée de l'applicationLes variables sont utilisées pour accéder aux variables stockées à différents niveaux de portée.
Par exemple, si vous devez accéder explicitement au
Portée de l'applicationEn couches
boîteLes variables sont accessibles comme ceci :
applicationScope.box.
paramètreet
valeursparamObjet utilisé pour accéder aux valeurs des paramètres, en utilisant
requête.getParameterMéthodes et
requête.getParameterValuesMéthode.
Par exemple, accéder à un fichier nommé
commande paramètres, vous pouvez utiliser des expressions comme celle-ci :
${param.ordre} , ou ${param["commande"]} .L'exemple suivant montre comment accéder à la requête dans
nom d'utilisateurParamètres :
<%@ page import="java.io.*,java.util.*" %><% String title = "Accès au paramètre de demande" %><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
valeursparamL'objet renvoie un tableau de chaînes.
en-têteet
valeurs d'en-têteL'objet est utilisé pour accéder à l'en-tête d'information, en utilisant
requête.getHeaderMéthodes et
requête.getHeadersMéthode.
Par exemple, pour accéder à un fichier nommé
agent utilisateur en-tête d'information, vous pouvez utiliser l'expression comme celle-ci :
${header.user-agent} , ou ${header["user-agent"]} .L'exemple suivant montre comment accéder
agent utilisateurEn-tête d'information :
<%@ page import="java.io.*,java.util.*" %><% String title = "Exemple d'agent utilisateur" %><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 en cours d'exécution sont les suivants :

L'objet header renvoie une valeur unique, tandis que headerValues renvoie un tableau de chaînes.