Vous êtes sur la page 1sur 75

JEE : Java Standard Tag Library (JSTL)

Achref El Mouelhi

Docteur de l’université d’Aix-Marseille


Chercheur en programmation par contrainte (IA)
Ingénieur en génie logiciel

elmouelhi.achref@gmail.com

H & H: Research and Training 1 / 41


Plan
1 Introduction
2 Intégration de la JSTL dans un projet JEE
3 Cinq librairies JSTL
4 Librairie Core
Affichage
Déclaration de variables
Structures conditionnelles
Structures itératives
Liens et paramètres
Import
Objets implicites
5 Librairie Function
6 Librairie Format
7 Librairie XML
8 Dépendance JSTL sous Maven
H & H: Research and Training 2 / 41
Introduction

JEE

JSTL : Java Standard Tag Library

Composant de la plate-forme JEE.


H I ©
Solution pour remplacer les scriptlets.
U EL
M O
Permettant de mieux respecter
f E L les bonnes pratiques et en
re
particulier l’architecture
c h MVC.
Objectif© Ade code Java dans les pages JSP.
: plus
Utilisant des nouvelles balises + EL pour remplacer le code Java.

H & H: Research and Training 3 / 41


Introduction

JEE

Avantages

Simplification du code
H I ©
UEL
MO
Meilleure lisibilité

f
Que des balises dans le code E L
etcrh
r e
Maintenance
© A éutilisation plus facile
Se protéger des failles XSS

H & H: Research and Training 4 / 41


Intégration de la JSTL dans un projet JEE

JEE

Solution
H I ©
Télécharger la bibliothèque à partir du lienE
U L
suivant
MO
https://course.oc-static.com/ftp-tutos/cours/java-ee/jstl-1.2.jar
L
r e f
Placer le . jar télécharg Eé (sans le décompresser) dans le
répertoire lib c
A hé dans WEB-INF
situ
©

H & H: Research and Training 5 / 41


Intégration de la JSTL dans un projet JEE

JEE
Inclure la bibliothèque
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 6 / 41


Intégration de la JSTL dans un projet JEE

JEE
Inclure la bibliothèque
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

H I ©
EL
Afficher un premier message Hello World
<c:out value="Hello World" /> O U
f E LM
ch r e
©A

H & H: Research and Training 6 / 41


Intégration de la JSTL dans un projet JEE

JEE
Inclure la bibliothèque
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

H I ©
EL
Afficher un premier message Hello World
<c:out value="Hello World" /> O U
f E LM
ch r e
©A
prefix="c" : indique le préfixe à utiliser pour la bibliothèque
core
c:out : utilisation de ce préfixe pour afficher un message

H & H: Research and Training 6 / 41


Intégration de la JSTL dans un projet JEE

JEE
Contenu de la page JSP
<%@ page language="java" contentType="text/html; charset=
UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix
="c" %>
H I ©
<!DOCTYPE HTML>
UEL
<html>
O
<head>
f E
<meta http-equiv="Content-Type" content="text/html; LM
charset=UTF-8">
ch r e
©A
<title>Projet JEE</title>
</head>
<body>
<c:out value="Hello World" />
</body>
</html>

H & H: Research and Training 7 / 41


Intégration de la JSTL dans un projet JEE

JEE

Question
Faudrait-il inclure la bibliothèque JSTL dans toutes les pages JSP ?

H I ©
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
UEL
prefix="c" %>
O
f E LM
ch r e
©A

H & H: Research and Training 8 / 41


Intégration de la JSTL dans un projet JEE

JEE

Question
Faudrait-il inclure la bibliothèque JSTL dans toutes les pages JSP ?

H I ©
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
UEL
prefix="c" %>
O
f E LM
ch r e
©A
Réponse
Non, on peut utiliser l’auto-chargement.

H & H: Research and Training 8 / 41


Intégration de la JSTL dans un projet JEE

JEE

Démarche
Créer un fichier JSP dans WEB-INF que nous appellerons par
H I ©
exemple jstlLib.jsp
UEL
O
LM
Déplacer les directives JSP dans jstlLib.jsp

r e f E
ch
<%@ taglib uri="http://java.sun.com/jsp/jstl/

©A
core" prefix="c" %>

Configurer l’auto-chargement (autoload) depuis web.xml

H & H: Research and Training 9 / 41


Intégration de la JSTL dans un projet JEE

JEE
Ajouter l’auto-chargement dans web.xml
<jsp-config>
<jsp-property-group>
<url-pattern> *.jsp </url-pattern>
<include-prelude>/WEB-INF/jstlLib.jsp</
H I ©
EL
include-prelude>
</jsp-property-group>
O U
</jsp-config>
f E LM
ch r e
©A

H & H: Research and Training 10 / 41


Intégration de la JSTL dans un projet JEE

JEE
Ajouter l’auto-chargement dans web.xml
<jsp-config>
<jsp-property-group>
<url-pattern> *.jsp </url-pattern>
<include-prelude>/WEB-INF/jstlLib.jsp</
H I ©
EL
include-prelude>
</jsp-property-group>
O U
</jsp-config>
f E LM
Explication
ch r e
©A
<url-pattern> *.jsp </url-pattern> : pour indiquer
les fichiers ciblés par l’auto-chargement
<include-prelude> /WEB-INF/jstlLib.jsp
</include-prelude> : le chemin du fichier à auto-charger
Cela nous évite de faire <%@ include
file="/WEB-INF/taglibs.jsp" %> dans chaque JSP
H & H: Research and Training 10 / 41
Cinq librairies JSTL

JEE

La JSTL est composée de 5 librairies

H I ©
Core : pour les principaux de l’algorithmique (déclaration et

EL
gestion de variables, les structures conditionnelles et itératives...)
U
O
LM
Function : pour le traitement des chaı̂nes de caractères

r e f E
Format : pour le formatage de données et l’internationalisation
ch
©A
XML : pour la manipulation des fichiers XML
SQL : pour les requêtes SQL

H & H: Research and Training 11 / 41


Librairie Core

JEE

Principales balises de la librairie Core


out : pour afficher un message ou le contenu d’une variable

H I ©
set : pour déclarer ou modifier la valeur d’une variable

EL conditionnel
if, choose et when : pour effectuer un traitement
U
forEach et forTokens : pour M
O
f E L avoir une structure de contrôle
itérative
r e
h construire des liens hypertextes avec et sans
c: pour
©
url et paramA
paramètre

H & H: Research and Training 12 / 41


Librairie Core

JEE

Principales balises de la librairie Core


out : pour afficher un message ou le contenu d’une variable

H I ©
set : pour déclarer ou modifier la valeur d’une variable

EL conditionnel
if, choose et when : pour effectuer un traitement
U
forEach et forTokens : pour M
O
f E L avoir une structure de contrôle
itérative
r e
h construire des liens hypertextes avec et sans
c: pour
©
url et paramA
paramètre

Toutes ces balises s’utilisent avec un préfixe c:

H & H: Research and Training 12 / 41


Librairie Core Affichage

JEE
Afficher une valeur

<c:out value="JEE" />


<%-- Affiche JEE --%>

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 13 / 41


Librairie Core Affichage

JEE
Afficher une valeur

<c:out value="JEE" />


<%-- Affiche JEE --%>

Afficher une valeur en utilisant EL

H I ©
<c:out value="${ 1 lt 3 and 2 > 1 }" />
UEL
<%-- Affiche true --%>
O
f E LM
ch r e
©A

H & H: Research and Training 13 / 41


Librairie Core Affichage

JEE
Afficher une valeur

<c:out value="JEE" />


<%-- Affiche JEE --%>

Afficher une valeur en utilisant EL

H I ©
<c:out value="${ 1 lt 3 and 2 > 1 }" />
UEL
<%-- Affiche true --%>
O
f E LM
ch r e
Afficher le contenu d’une variable avec utilisation de valeur par défaut

©A
<c:out value="${ JEE }" default="JSTL"/>
<%-- Affiche le contenu de la variable JEE si elle existe, sinon
affiche JSTL --%>

H & H: Research and Training 13 / 41


Librairie Core Affichage

JEE
Afficher une valeur

<c:out value="JEE" />


<%-- Affiche JEE --%>

Afficher une valeur en utilisant EL

H I ©
<c:out value="${ 1 lt 3 and 2 > 1 }" />
UEL
<%-- Affiche true --%>
O
f E LM
ch r e
Afficher le contenu d’une variable avec utilisation de valeur par défaut

©A
<c:out value="${ JEE }" default="JSTL"/>
<%-- Affiche le contenu de la variable JEE si elle existe, sinon
affiche JSTL --%>

Une deuxième utilisation de la valeur par défaut

<c:out value="${ JEE }" > JSTL </c:out>

H & H: Research and Training 13 / 41


Librairie Core Affichage

JEE
Pourquoi écrire autant pour afficher une variable ?

permet d’échapper les caractères spéciaux

se protéger des failles XSS

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 14 / 41


Librairie Core Affichage

JEE
Pourquoi écrire autant pour afficher une variable ?

permet d’échapper les caractères spéciaux

se protéger des failles XSS

H I ©
UEL
O
Exemple

f E LM
r e
<c:out value="<p> Bonjour ’John Wick’. </p>" />
ch
<%-- affiche <p> Bonjour ’John Wick’. </p> --%>
©A

H & H: Research and Training 14 / 41


Librairie Core Affichage

JEE
Pourquoi écrire autant pour afficher une variable ?

permet d’échapper les caractères spéciaux

se protéger des failles XSS

H I ©
UEL
O
Exemple

f E LM
r e
<c:out value="<p> Bonjour ’John Wick’. </p>" />
ch
<%-- affiche <p> Bonjour ’John Wick’. </p> --%>
©A
Pour désactiver cette option (excapeXml)
<c:out value="<p> Bonjour ’John Wick’. </p>" escapeXml="false"
/>
<%-- affiche Bonjour ’John Wick’. --%>

H & H: Research and Training 14 / 41


Librairie Core Déclaration de variables

JEE

Déclarer une variable


<c:set var="JEE" value="J’aime la plateforme JEE"
scope="request" />
H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 15 / 41


Librairie Core Déclaration de variables

JEE

Déclarer une variable


<c:set var="JEE" value="J’aime la plateforme JEE"
scope="request" />
H I ©
U EL
O
Explication f E LM
r e
chvariable JEE
© A
On a déclaré une
On l’initialise avec la valeur J’aime la plateforme JEE
On lui affecte la porté request

H & H: Research and Training 15 / 41


Librairie Core Déclaration de variables

JEE

Déclarer une variable de type entier


<c:set var="x" value="${ 0 }" />
H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 16 / 41


Librairie Core Déclaration de variables

JEE

Déclarer une variable de type entier


<c:set var="x" value="${ 0 }" />
H I ©
EL
M OU
Pour modifier (incrémenter) la L
f E valeur de x, on utilise aussi set
re x + 1 }" />
h
<c:set var="x" cvalue="${
A x }" />
©
<c:out value="${
<%-- Affiche 1 --%>

H & H: Research and Training 16 / 41


Librairie Core Déclaration de variables

JEE

H I ©
EL
Créer un objet de type Personne à partir de l’objet perso défini
U
dans la servlet et ajouté comme attribut de requête
O
L M
re f E
<c:set scope="session" var="p" value="${ perso }" />

c h
©A

H & H: Research and Training 17 / 41


Librairie Core Déclaration de variables

JEE
Deux autres attributs sont possibles

target : le nom de l’objet à modifier

property : le nom de la propriété de cet objet qui sera modifié

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 18 / 41


Librairie Core Déclaration de variables

JEE
Deux autres attributs sont possibles

target : le nom de l’objet à modifier

property : le nom de la propriété de cet objet qui sera modifié

H I ©
U EL
O
LM
La modification d’un attribut de l’objet

f E
<c:set target="$ {perso }" property="nom" value="Travolta" />
r e
ch
<%-- l’objet p aura comme nouveau nom Travolta --%>

©A
<c:out value="${ p.nom } ${ p.prenom }" />
<%-- affiche Travolta John --%>

H & H: Research and Training 18 / 41


Librairie Core Déclaration de variables

JEE
Deux autres attributs sont possibles

target : le nom de l’objet à modifier

property : le nom de la propriété de cet objet qui sera modifié

H I ©
U EL
O
LM
La modification d’un attribut de l’objet

f E
<c:set target="$ {perso }" property="nom" value="Travolta" />
r e
ch
<%-- l’objet p aura comme nouveau nom Travolta --%>

©A
<c:out value="${ p.nom } ${ p.prenom }" />
<%-- affiche Travolta John --%>

La suppression d’une variable

<c:remove var="JEE" />


<%-- supprime la variable JEE --%>

H & H: Research and Training 18 / 41


Librairie Core Structures conditionnelles

JEE
Les structures conditionnelles sans sinon (else)

<c:if test="${ 3 > 2 and 2 > 1 }" >


c’est facile
</c:if>
<%-- affiche c’est facile car la condition est vraie --%>
H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 19 / 41


Librairie Core Structures conditionnelles

JEE
Les structures conditionnelles sans sinon (else)

<c:if test="${ 3 > 2 and 2 > 1 }" >


c’est facile
</c:if>
<%-- affiche c’est facile car la condition est vraie --%>
H I ©
U EL
O
f E LM
Explication
ch r e
©A
L’attribut test est obligatoire

On peut ajouter deux autres attributs optionnels scope et var

var : pour stocker le résultat du test


porté : pour définir la porté de cette variable

H & H: Research and Training 19 / 41


Librairie Core Structures conditionnelles

JEE

Exemple avec var et scope


H I ©
<c:if test="${ 3 > 2 and 2 > 1 }" var="result" scope
U EL
="session">
O
<c:out value="${ result }" />
f E LM
</c:if>
ch r e
©A
<%-- affiche true --%>

H & H: Research and Training 20 / 41


Librairie Core Structures conditionnelles

JEE

Les structures conditionnelles avec un ou plusieurs sinon (else (if))

<c:choose>
<c:when test="${ condition }"> resultat </c:when>
...
<c:otherwise>résultat par défaut</c:otherwise>
H I ©
</c:choose>
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 21 / 41


Librairie Core Structures conditionnelles

JEE

Les structures conditionnelles avec un ou plusieurs sinon (else (if))

<c:choose>
<c:when test="${ condition }"> resultat </c:when>
...
<c:otherwise>résultat par défaut</c:otherwise>
H I ©
</c:choose>
U EL
O
f E LM
ch r e
©A
Explication

c:choose : équivalent de switch

c:when : équivalent de case dans le switch

c:otherwise : équivalent de default dans le switch

H & H: Research and Training 21 / 41


Librairie Core Structures itératives

JEE
Les structures itératives

<c:forEach var="i" begin="0" end="10" step="1">


<c:out value="${ i }"/>
</c:forEach>
<%-- affiche 0 1 2 3 4 5 6 7 8 9 10 --%>
H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 22 / 41


Librairie Core Structures itératives

JEE
Les structures itératives

<c:forEach var="i" begin="0" end="10" step="1">


<c:out value="${ i }"/>
</c:forEach>
<%-- affiche 0 1 2 3 4 5 6 7 8 9 10 --%>
H I ©
U EL
O
Explication
f E LM
r e
ch On l’ajoute quand on a besoin d’utiliser la valeur du
compteur
© A
var : n’est pas obligatoire.

begin : valeur initiale du compteur

end : valeur finale de notre compteur

step : le pas à ajouter au compteur après chaque itération

H & H: Research and Training 22 / 41


Librairie Core Structures itératives

JEE

Pour parcourir une collection

<c:forEach items="${ list }" var="element">


<c:out value="${ element[’nom’] }" />
</c:forEach>
H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 23 / 41


Librairie Core Structures itératives

JEE

Pour parcourir une collection

<c:forEach items="${ list }" var="element">


<c:out value="${ element[’nom’] }" />
</c:forEach>
H I ©
U EL
O
Explication
f E LM
r e
chla liste à parcourir
items : pour dA
éfinir
©
var : pour récupérer l’élément courant de la liste

On peut aussi ajouter un attribut varStatus pour récupérer des informations


sur l’itération courante

H & H: Research and Training 23 / 41


Librairie Core Structures itératives

JEE
Pour parcourir une collection

<c:forEach items="${ list }" var="element" varStatus="status">


Element n : <c:out value="${ status.count }"/> valeur : <c:out
value="${ element[’nom’] }" />
</c:forEach>

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 24 / 41


Librairie Core Structures itératives

JEE
Pour parcourir une collection

<c:forEach items="${ list }" var="element" varStatus="status">


Element n : <c:out value="${ status.count }"/> valeur : <c:out
value="${ element[’nom’] }" />
</c:forEach>

H I ©
U EL
O
Les différentes propriétés de varStatus

f E LM
ch r e
first : contient true si c’est la première itération

©A
last : contient true si c’est la dernière itération

step : contient la valeur de l’attribut step

count : contient l’indice de l’itération courante (commence de 1) (sinon index commence


de 0)

...

H & H: Research and Training 24 / 41


Librairie Core Structures itératives

JEE

Pour parcourir une chaı̂ne de caractère en considérant les trois


séparateurs ;,
<c:forTokens var="sousChaine" items="bonjour, c’est
John;Wick" delims=";, ">
H I ©
${ sousChaine }<br>
U EL
</c:forTokens> O
f E LM
ch r e
©A

H & H: Research and Training 25 / 41


Librairie Core Structures itératives

JEE

Pour parcourir une chaı̂ne de caractère en considérant les trois


séparateurs ;,
<c:forTokens var="sousChaine" items="bonjour, c’est
John;Wick" delims=";, ">
H I ©
${ sousChaine }<br>
U EL
</c:forTokens> O
f E LM
ch r e
Explication ©A
On parcourt une chaı̂ne de caractère par token
On peut définir un ou plusieurs séparateurs

H & H: Research and Training 25 / 41


Librairie Core Liens et paramètres

JEE
Pour ajouter un lien
<c:url value="/tapage" var="monLien" />
<a href="${ monLien }">lien</a>

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 26 / 41


Librairie Core Liens et paramètres

JEE
Pour ajouter un lien
<c:url value="/tapage" var="monLien" />
<a href="${ monLien }">lien</a>

H I ©
/tapage est la route d’une Servlet définie soitE
U L web.xml soit
dans
avec l’annotation @WebServlet
L MO
r e f E
A ch
©

H & H: Research and Training 26 / 41


Librairie Core Liens et paramètres

JEE
Pour ajouter un lien
<c:url value="/tapage" var="monLien" />
<a href="${ monLien }">lien</a>

H I ©
/tapage est la route d’une Servlet définie soitE
U L web.xml soit
dans
avec l’annotation @WebServlet
L MO
r e f E
Pour ajouter unA chavec paramètre
lien
©
<c:url value="/tapage" var="monLien">
<c:param name="nom" value="Wick"/>
<c:param name="prenom" value="John"/>
</c:url>
<a href="${ monLien }">lien</a>

H & H: Research and Training 26 / 41


Librairie Core Import

JEE

Pour importer un fichier

H I ©
EL
<c:import url="header.jsp"></c:import>

O U
f E LM
ch r e
©A

H & H: Research and Training 27 / 41


Librairie Core Import

JEE

Pour importer un fichier

H I ©
EL
<c:import url="header.jsp"></c:import>

O U
f E LM
L’équivalent en scriptlet
ch r e
©A
<%@ include file="header.jsp"%>

H & H: Research and Training 27 / 41


Librairie Core Objets implicites

JEE
Objets implicites

pageContext : pour récupérer le contexte de la page JSP (par exemple


pageContext.request.contextPath pour récupérer le nom du projet)

I
pageScope : pour récupérer une variable qui a une portée page
H ©
requestScope : pour récupérer une variable quiE
U L
a une portée request

L MOqui a une portée session


r e f E érer une variable qui a une portée
sessionScope : pour récupérer une variable

applicationAc
applicationScope h : pour récup

©
param : pour récupérer les paramètres de requête

cookie : pour récupérer une variable stockée dans un cookie

...

H & H: Research and Training 28 / 41


Librairie Function

JEE
Pour inclure cette bibliothèque dans le jstlLib.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/
functions" prefix="fn" %>

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 29 / 41


Librairie Function

JEE
Pour inclure cette bibliothèque dans le jstlLib.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/
functions" prefix="fn" %>

H I ©
Pour récupérer la longueur d’une chaı̂ne de caractère (ou liste)
${ fn:length("chaine") }
UEL
<%-- Retourne 6 --%> O
f E LM
ch r e
©A

H & H: Research and Training 29 / 41


Librairie Function

JEE
Pour inclure cette bibliothèque dans le jstlLib.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/
functions" prefix="fn" %>

H I ©
Pour récupérer la longueur d’une chaı̂ne de caractère (ou liste)
${ fn:length("chaine") }
UEL
<%-- Retourne 6 --%> O
f E LM
Pour tester si une chaı̂ne contient une autre sous-chaı̂ne de
caractère ch r e
©A
fn:contains("Bonjour", "Bon")
<%-- Retourne true --%>

H & H: Research and Training 29 / 41


Librairie Function

JEE
Pour inclure cette bibliothèque dans le jstlLib.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/
functions" prefix="fn" %>

H I ©
Pour récupérer la longueur d’une chaı̂ne de caractère (ou liste)
${ fn:length("chaine") }
UEL
<%-- Retourne 6 --%> O
f E LM
Pour tester si une chaı̂ne contient une autre sous-chaı̂ne de
caractère ch r e
©A
fn:contains("Bonjour", "Bon")
<%-- Retourne true --%>
Pour extraire une sous-chaı̂ne
fn:substring("John Wick", 5, 8)
<%-- Retourne Wick --%>
H & H: Research and Training 29 / 41
Librairie Function

JEE

Autres fonctions
fn:trim(String) : élimine les espaces au début et à la fin de
la chaı̂ne

H I ©
EL
fn:toUpperCase(String) : retourne la chaı̂ne passée en
paramètre en majuscule
M OU
fn:toLowerCase(String)
f E L: retourne la chaı̂ne passée en
hr e
paramètre en minuscule
c
© A
fn:escapeXml(String) : élimine les caractères spéciaux en
les remplaçant par leur code HTML (Exemple : ${
fn:escapeXml("Les balises <p> & <b>") } retourne
"Les balises &lt; p &gt; &amp; &lt; b &gt;"
...

H & H: Research and Training 30 / 41


Librairie Format

JEE
Pour inclure cette bibliothèque dans le jstlLib.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt" %>

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 31 / 41


Librairie Format

JEE
Pour inclure cette bibliothèque dans le jstlLib.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt" %>

Pour convertir une valeur en monnaie


H I ©
UEL
<c:set var="montant" value="112233.44" />
O
f E LM
montant = <fmt:formatNumber value="${ montant }"
type="currency"/>
ch r e
©A
<%-- Affiche montant = 112 233,44 C --%>

H & H: Research and Training 31 / 41


Librairie Format

JEE
Pour inclure cette bibliothèque dans le jstlLib.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt" %>

Pour convertir une valeur en monnaie


H I ©
UEL
<c:set var="montant" value="112233.44" />
O
f E LM
montant = <fmt:formatNumber value="${ montant }"
type="currency"/>
ch r e
©A
<%-- Affiche montant = 112 233,44 C --%>

L’attribut type peut prendre d’autres valeurs telles que percent et


number

H & H: Research and Training 31 / 41


Librairie Format

JEE

Quelques autres attributs


H I ©
<c:set var="montant" value="112233.44" />
UEL
montant = <fmt:formatNumber value="${ montant }"
O
type="currency" currencySymbol="$"
f E LM
maxIntegerDigits="3"/>
ch r e
©A
<%-- Affiche montant = 233,44 $ --%>

H & H: Research and Training 32 / 41


Librairie Format

JEE

Autres attributs
groupingUsed : prend true pour préciser si les nombres
doivent être groupés, false sinon.
H I ©
UEL
O
maxFractionDigits : indique le nombre maximum de chiffres
dans la partie décimale
f E LM
ch r e
var : contient le nom de la variable reçoit le résultat
©A
scope : précise la portée de cette variable
minIntegerDigits, minFractionDigits...

H & H: Research and Training 33 / 41


Librairie Format

JEE

Pour convertir en nombre


<fmt:parseNumber value="${ param.id }" var="id"/>
H I ©
EL
Autres attributs
M OU
integerOnly : prend true
f E Lpour un résultat de type entier, float
si false.
chr e
scope :©
A
précise la portée de cette variable
...

H & H: Research and Training 34 / 41


Librairie Format

JEE

Pour formatter une date


<jsp:useBean id="now" class="java.util.Date" />
Aujourd’hui, c’est le <fmt:formatDate value="${ now
H I ©
}" type="date" dateStyle="short"/>
EL
M OU
E L
Autres valeurs de l’attribut dateStyle
f
e
r du mois par son nom (janvier, février...)
chl’indice
A
long : remplace
©
full : même chose que long + le nom du jour (lundi, mardi...)
Autres valeurs : medium et default

H & H: Research and Training 35 / 41


Librairie Format

JEE

Autres attributs de formatDate


timeStyle : permet de formatter l’heure et prend les mêmes
valeurs que dateStyle
H I ©
type : prend une des valeurs suivantes : E
U L time ou both
date,

L MO
var : contient le nom de la variable reçoit le résultat

r e E
fée de cette variable
c h
scope : précise la port
... ©A

H & H: Research and Training 36 / 41


Librairie Format

JEE

Autres attributs de formatDate


timeStyle : permet de formatter l’heure et prend les mêmes
valeurs que dateStyle
H I ©
type : prend une des valeurs suivantes : E
U L time ou both
date,

L MO
var : contient le nom de la variable reçoit le résultat

r e E
fée de cette variable
c h
scope : précise la port
... ©A
Il existe également une balise parseDate qui permet de convertir en
date et qui prend les mêmes attributs que formatDate

H & H: Research and Training 36 / 41


Librairie XML

JEE
Pour inclure cette bibliothèque dans le jstlLib.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix=
"x" %>

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 37 / 41


Librairie XML

JEE
Pour inclure cette bibliothèque dans le jstlLib.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix=
"x" %>

H I ©
EL
Considérant le fichier XML personnes.xml situé dans la racine du
projet
O U
<personnes>
<personne id="1">
f E LM
ch
<nom>wick</nom> r e
©A
<prenom>john</prenom>
</personne>
<personne id="2">
<nom>white</nom>
<prenom>alain</prenom>
</personne>
</personnes>

H & H: Research and Training 37 / 41


Librairie XML

JEE
Pour importer le fichier Xml

<c:import url="file:/C:/.../eclipse-workspace/TestJstlAtos/
personnes.xml" var="personnes" />

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 38 / 41


Librairie XML

JEE
Pour importer le fichier Xml

<c:import url="file:/C:/.../eclipse-workspace/TestJstlAtos/
personnes.xml" var="personnes" />

H I
Pour parser le contenu du fichier et l’affecter à une variable ©
<x:parse xml="${ personnes }" var="list" U E/>L
O
f E LM
ch r e
©A

H & H: Research and Training 38 / 41


Librairie XML

JEE
Pour importer le fichier Xml

<c:import url="file:/C:/.../eclipse-workspace/TestJstlAtos/
personnes.xml" var="personnes" />

H I
Pour parser le contenu du fichier et l’affecter à une variable ©
<x:parse xml="${ personnes }" var="list" U E/>L
O
f E LM
ch r e
Pour récupérer une personne de la liste des personnes

©A
<x:set var="personne" select="$list/personnes/personne[@id=1]"
/>

H & H: Research and Training 38 / 41


Librairie XML

JEE
Pour importer le fichier Xml

<c:import url="file:/C:/.../eclipse-workspace/TestJstlAtos/
personnes.xml" var="personnes" />

H I
Pour parser le contenu du fichier et l’affecter à une variable ©
<x:parse xml="${ personnes }" var="list" U E/>L
O
f E LM
ch r e
Pour récupérer une personne de la liste des personnes

©A
<x:set var="personne" select="$list/personnes/personne[@id=1]"
/>

Pour afficher le contenu de la balise nom

<br/> nom = <x:out select="$personne/nom"/>

H & H: Research and Training 38 / 41


Librairie XML

JEE

Remarques
Comme la librairie Core, la librairie XML dispose de balises
H I ©
set pour déclarer une variable,
UEL
O
out pour afficher,
f E LM
ch
if et choose : pour testerr e
©A
forEach : pour itérer
...

H & H: Research and Training 39 / 41


Dépendance JSTL sous Maven

JEE

Dépendance à ajouter dans le pom.xml d’un Maven Project pour


utiliser la JSTL
H I ©
<!-- https://mvnrepository.com/artifact/javax.servlet/
UEL
jstl -->
O
<dependency>
<groupId>javax.servlet</groupId>
f E LM
ch
<artifactId>jstl</artifactId> r e
©A
<version>1.2</version>
</dependency>

H & H: Research and Training 40 / 41


Dépendance JSTL sous Maven

JEE

N’oublions pas de définir un préfixe dans la page JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


<html>
<body>
H I ©
<h2>Hello World!</h2>
UEL
<c:out value="Bonjour" />
O
LM
</body>
</html>

r e f E
ch
©A

H & H: Research and Training 41 / 41


Dépendance JSTL sous Maven

JEE

N’oublions pas de définir un préfixe dans la page JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


<html>
<body>
H I ©
<h2>Hello World!</h2>
UEL
<c:out value="Bonjour" />
O
LM
</body>
</html>

r e f E
ch
©A
Et d’activer Expression Language

<%@ page isELIgnored="false" %>

H & H: Research and Training 41 / 41

Vous aimerez peut-être aussi