Académique Documents
Professionnel Documents
Culture Documents
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)
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
73
Expression Language
● EL fournit les opérateurs de comparaison suivants:
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)
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
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)
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>
80
JSTL Core Tags
● <c:forEach>: Itérer sur une collection
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>
</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