Vous êtes sur la page 1sur 19

Département Génie Informatique

Java Entreprise Edition


Pr. Aimad QAZDAR
a.qazdar@uiz.ac.ma

24 octobre 2022
JSTL et EL
JSTL
● La JavaServer Pages Standard Tag Library (JSTL) est un composant de la plate-
forme JEE de développement.
● Elle étend la spécification JSP en ajoutant une bibliothèque de balises pour les tâches
courantes, comme :
− le travail sur des fichiers XML,
− l'exécution conditionnelle,
− les boucles
− l'internationalisation.
− …

● La JSTL, en tant que bibliothèque de balises JSP, propose de développer une page JSP
sans y utiliser de code Java directement ce qui permet aux web designers de concevoir
des pages dynamiques complexes sans connaissances préalable du langage Java.

70
Expression Language
● JSTL propose un langage nommé EL (Expression Langage) qui permet de faire
facilement référence à des objets Java accessibles dans les différents contextes de la
JSP (page, requête, session ou application).
● Il permet de placer à n'importe quel endroit d'une page JSP des expressions qui sont
évaluées et remplacées par le résultat de leur évaluation.(à la place d'une expression
<%=expressionJava%>)
● La syntaxe est la suivante : ${ expression }

<%= session.getAttribute("personne").getNom()%>

${sessionScope.personne.nom}

71
Expression Language
● EL possède par défaut les variables suivantes :
Variable Rôle
PageScope variable contenue dans la portée de la page (PageContext)

RequestScope variable contenue dans la portée de la requête (HttpServletRequest)

SessionScope variable contenue dans la portée de la session (HttpSession)

ApplicationScope variable contenue dans la portée de l'application (ServletContext)


Param paramètre de la requête http
ParamValues paramètres de la requête sous la forme d'une collection
Header en-tête de la requête
HeaderValues en-têtes de la requête sous la forme d'une collection
InitParam paramètre d'initialisation
Cookie cookie
PageContext objet PageContext de la page

72
Expression Language
● EL ne permet pas l'accès aux variables locales.
● Pour pouvoir accéder à de telles variables, il faut obligatoirement en créer une copie dans
une des portées particulières : page, request, session ou application

<% String lib="G.INF 2"; %>


Welcome : ${libelle}

<% String lib="G.INF 2";


pageContext.setAttribute("libelle", lib);%>
Welcome : ${libelle}

73
Expression Language
● EL fournit les opérateurs de comparaison suivants:

Concept Condition EL Résultat


Numérique inférieur à ${1 < 2} vrai
Numérique inférieur à (Less than) ${1 lt 2} vrai
Numérique supérieur à (Greater than) ${1 gt 2} faux
Numérique supérieur ou égal à ${1 >= 1} vrai
Numérique inférieur ou égal à (Less equals) ${1 le 1} vrai
Numérique égal à ${1 == 1} vrai
Numérique égal à (equal) ${1 eq 1} vrai
Numérique non égal à ${1 != 2} vrai
Numérique non égal à (not equal) ${1 ne 2} vrai
Alphabétique supérieur que ${'abe' > 'ade'} faux
Alphabétique égal à (Equals) ${'abe' eq 'abe'} vrai
Alphabétique non égal à (Not equals) ${'abe' ne 'ade'} vrai

74
Expression Language
● EL fournit les opérateurs de comparaison suivants:
égaux à (equals) == eq
Opérateur Description
Pas égaux (Not equals) != ne
&& Et
Moins que (Less than) < lt
|| Ou
Plus grand que(Greater than) > gt
Moins que ou égaux à
<= le ${(guess >= 10) && (guess <= 20)}
(Less than or equals)
${ guess >= 10 || guess <= 20 }
Plus grand ou égaux à
>= ge
(Greater than or equals)

Operateur Rôle Exemple


. Obtenir une propriété d'un objet ${param.nom}
${param[" nom "]}
[] Obtenir une propriété par son nom ou son indice
${row[1]}
Teste si un objet est null ou vide si c'est une chaîne de
Empty ${empty param.nom}
caractère. Renvoie un booléen

75
JSTL
● La JSTL étend la spécification JSP en ajoutant de nombreuses balises pour des tâches courantes.
● Elle est composée de plusieurs bibliothèques :
− Core Tags (préfixe c) exposent tous les tags de base de la JSTL pour l’affichage, la gestion des
variables, les boucles, les conditionnelles, etc.,
<%@ taglib prefix="c " uri= "http://java.sun.com/jsp/jstl/core"%>
− Formatting Tags (préfixe fmt) exposent toutes les fonctionnalités d'affichage de données non triviales :
les dates formatées, les nombres formatés, les messages internationalisés, etc.
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix= "fmt"%>
− XML tags (préfixe x) pour l’analyse et la transformation (XSLT) des pages XML. Cette librairie permet
par exemple de lire des flux XML via HTTP, de les analyser, de les transformer par XSLT, puis de les
afficher sous différentes formes.
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x "%>
− SQL tags (préfixe sql) pour la connexion aux bases de données, les requêtes, les transactions, etc.,
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
− Functions Tags (préfixe fn) présentent des fonctions standards dont la majorité sont pour la
manipulation des chaine de caractères
<%@ tagl uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

76
Hello JSTL
● Télécharger les bibliothèques :
− taglibs-standard-impl-1.2.5.jar
− taglibs-standard-spec-1.2.5.jar
● https://tomcat.apache.org/download-taglibs.cgi

<%@ page language="java" contentType="text/html; charset=ISO-


8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"
%>
<!DOCTYPE html>
<html>
<head>
<title>Exemples de JSTL</title>
</head>
<body>
<c:out value="Hello" /><br/>
</body>
</html>
77
 JSTL &
JSTL EL Tags
Core
● Le tag set permet de stocker une variable dans une portée particulière (page, request,
session ou application).
● Le tag out permet d’afficher la valeur d’une variable, ce tag est équivalent à <%= ...%>.
● Le tag remove permet de supprimer une variable.
● Le tag catch permet de gérer les exceptions.
● Le tag if est utilisé pour réaliser une condition.
● Le tag choose est utilisé pour des cas mutuellement exclusifs (équivalent du switch).
● Le tag foreach est utilisé pour réaliser des itérations.
● Le tag forTokens est utilisé pour découper une chaîne selon un ou plusieurs
séparateurs.
● Le tag import permet d’accéder à une ressource via son URL pour l’inclure ou l’utiliser
dans la page JSP.
● Le tag redirect permet de réaliser une redirection vers une nouvelle URL

78
JSTL Core Tags
● <c:out> : permet d’afficher la valeur d’une variable, ce tag est équivalent à <%= ...%>
<c:out value='${montantHT}' />

● <c:set>: permet de stocker une variable dans une portée particulière (page, request,
session ou application)

<c:set var= "montantHT" scope="session" value=‘${8900}' />


<c:set var="TVA" scope="session" value='${0.20}' />
<p>Montant HT: <c:out value='${montantHT}' /><p>
<p>Montant TTC: <c:out value= '${montantHT*(1+TVA)}' /><p>

79
JSTL Core Tags
● <c:if>:Traitement conditionnel
<c:set var="montantHT" scope="session" value="${1000}" />
<p>Montant HT:<c:out value="${montantHT}" /><p>
<c:if test="${montantHT >= 6000}">
<p>Montant TTC:<c:out value="${montantHT*1.2}" /><p>
</c:if>
<c:if test="${montantHT < 6000}">
<p>Montant TTC:<c:out value="${montantHT*1.1}" /><p>
</c:if>

● <c:choose>:Traitement conditionnel exclusif


<c:set var="note" scope="session" value="${16.75}" />
<p> Votre note est :<c:out value="${note}" /></p>
<c:choose>
<c:when test="${note>= 0 && note < 10}">Ajourné.</c:when>
<c:when test="${note>= 10 && note <12}">Mention Passable.</c:when>
<c:when test="${note>= 12 && note <14}">Mention Assez-Bien.</c:when>
<c:when test="${note>= 14 && note <16}">Mention Bien.</c:when>
<c:when test="${note>= 16 && note <=20}">Mention Très Bien.</c:when>
<c:otherwise>Note invalide ...</c:otherwise>
</c:choose>

80
JSTL Core Tags
● <c:forEach>: Itérer sur une collection

<c:forEach var="i" begin="1" end ="5" >


Item <c:out value ="${i}" /><p>
</c:forEach>

● <c:forTokens>:Itérer sur des éléments d'une String

<c:forTokens items="GInf-GInd-GElec" delims="-" var="opt">


<c:out value="${opt}"/><p>
</c:forTokens>

81
JSTL Core Tags
<!DOCTYPE html>
public class UserBeans { <html>
private String FirstName; <head>
private String LastName; <meta http-equiv="Content-Type" content="text/html;
private String Function; charset=UTF-8">
<title>Exemples de JSTL</title>
public UserBeans(String firstName, String </head>
lastName, String function) { <body>
super(); <%!List<UserBeans> users = new ArrayList<UserBeans>();%>
FirstName = firstName; <%
LastName = lastName; users.add(new UserBeans("Ahmed", "Ali", "Prof"));
Function = function; users.add(new UserBeans("mohammed", "Naimi", "Std"));
} users.add(new UserBeans("Rami", "Rafi", "Admin"));
request.setAttribute("users", users);
%>
<table style="border: 1px"solid; >
<tr bgcolor=#ccffcc>
<%@page import="org.exemples.beans.UserBeans"%> <td size=12>First Name</td><td>Last Name</td><td>Function</td>
<%@page import="java.util.ArrayList"%> </tr>
<%@page import="java.util.List"%> <c:forEach var="user" items="${users}" >
<%@ page language="java" contentType="text/html; <tr bgcolor=#e6ffff>
charset=UTF-8" <td>${user.firstName}</td>
pageEncoding="UTF-8"%> <td>${user.lastName}</td>
<%@ taglib prefix="c" <td>${user.function}</td>
uri="http://java.sun.com/jsp/jstl/core"%> </tr>
</c:forEach>
</table></body></html>

82
JSTL Core Tags
● <c:redirect>: permet de réaliser une redirection vers une nouvelle URL

<c:redirect url="hello.jsp"/>

● <c:import>: permet d’accéder à une ressource via son URL pour l’inclure ou l’utiliser
dans la page JSP
<c:import var="data" url= "hello.jsp" />
<c:out value="${data}"/>

83
JSTL Formatting Tags
<fmt:formatDate>
<%@ page import= "java.util.Date" %>
<%@ taglib prefix="c" uri= "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri= "http://java.sun.com/jsp/jstl/fmt" %>
<html><head><title>Format Date</title></head><body>

<c:set var="date" value= "<%= new Date() %>" />


<p> Objet Date : <c:out value= "${date}" />

<p> Format Date :


<fmt:formatDate type="date" value="${date}"/>

<p> Format Date :


<fmt:formatDate type="time" value="${date}"/>

<p> Format Date et Temps style(short) :


<fmt:formatDate type="both" dateStyle="short" timeStyle="short" value="${date}"/>

<p> Format Date et Temps style(medium) :


<fmt:formatDate type="both" dateStyle="medium" timeStyle="medium" value="${date}" />

<p> Format Date et Temps style(long) :


<fmt:formatDate type="both" dateStyle="long" timeStyle="long" value="${date}" />

</body></html>

84
JSTL Formatting Tags
<fmt:formatNumber>
<%@ taglib prefix= "c" uri= "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix= "fmt" uri= "http://java.sun.com/jsp/jstl/fmt" %>
<html> <head> <title>Format Number</title></head>
<body>
<c:set var="montant" value= "39800.34567" />
<p>Montant :<c:out value= "${montant}" ></c:out>
<p> Monétaire:
<fmt:formatNumber type= "number" pattern= "###.## DH " value= "${montant}" />
<p>Porcentage %:
<fmt:formatNumber type= "percent" maxIntegerDigits= "5" maxFractionDigits= "2" value= "${montant}" />

</body></html>

85
JSTL Function Tags
● <fn:>
<%@ taglib prefix= "c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix= "fn" uri= "http://java.sun.com/jsp/jstl/functions"%>
<html> <head> <title>Function Fromat</title></head>
<body>
<c:set var="ensa" value="Ecole Nationale des Sciences Appliquées" />
Longuer ENSA: ${fn:length(ensa)}<br>
ENSA en miniscule : ${fn:toLowerCase(ensa)}<br>
ENSA en majuscule : ${fn:toUpperCase(ensa)}<br>
</body>
</html>

86

Vous aimerez peut-être aussi