0% ont trouvé ce document utile (0 vote)
18 vues78 pages

Intégration de JSTL dans JEE

Le document présente la Jakarta Standard Tag Library (JSTL) dans le cadre de Jakarta EE, en mettant l'accent sur son intégration dans des projets JEE et ses cinq librairies principales. JSTL vise à simplifier le code dans les pages JSP en remplaçant les scriptlets par des balises et des expressions EL, ce qui améliore la lisibilité et la maintenance. Le document détaille également les balises spécifiques de la librairie Core, ainsi que des exemples d'utilisation pour afficher des valeurs et déclarer des variables.

Transféré par

Walid officiel
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
18 vues78 pages

Intégration de JSTL dans JEE

Le document présente la Jakarta Standard Tag Library (JSTL) dans le cadre de Jakarta EE, en mettant l'accent sur son intégration dans des projets JEE et ses cinq librairies principales. JSTL vise à simplifier le code dans les pages JSP en remplaçant les scriptlets par des balises et des expressions EL, ce qui améliore la lisibilité et la maintenance. Le document détaille également les balises spécifiques de la librairie Core, ainsi que des exemples d'utilisation pour afficher des valeurs et déclarer des variables.

Transféré par

Walid officiel
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

JEE : Jakarta 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

[Link]@[Link]

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

Jakarta EE

JSTL : Jakarta Standard Tag Library

Composant de la plate-forme JEE.


H I ©
Solution pour remplacer les scriptlets.
UEL
O
f E LM
Permettant de mieux respecter les bonnes pratiques et en
r e
particulier l’architecture MVC.
ch
©A
Objectif : plus de code Java dans les pages JSP.
Utilisant des nouvelles balises + EL pour remplacer le code Java.

H & H: Research and Training 3 / 41


Introduction

Jakarta EE

Avantages

Simplification du code
H I ©
Meilleure lisibilité UEL
L MO
Que des balises dans le code
r e f E
Maintenance etcrh
© 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

Jakarta EE

Solution

H I ©
EL
Télécharger les deux .jar en cliquant sur les deux liens suivants
U
O
LM
JSTL
JSTL-API
r e f E
ch
©A
Placer les .jar téléchargés dans le répertoire lib situé dans WEB-INF

H & H: Research and Training 5 / 41


Intégration de la JSTL dans un projet JEE

Jakarta EE
Inclure la bibliothèque
<%@ taglib prefix="c" uri="[Link]"%>

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

Jakarta EE
Inclure la bibliothèque
<%@ taglib prefix="c" uri="[Link]"%>

Afficher un premier message Hello World H I ©


UEL
<c:out value="Hello World" /> O
f E LM
ch r e
©A

H & H: Research and Training 6 / 41


Intégration de la JSTL dans un projet JEE

Jakarta EE
Inclure la bibliothèque
<%@ taglib prefix="c" uri="[Link]"%>

Afficher un premier message Hello World H I ©


UEL
<c:out value="Hello World" /> O
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

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

H & H: Research and Training 7 / 41


Intégration de la JSTL dans un projet JEE

Jakarta EE

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

H I ©
<%@ taglib prefix="c" uri="[Link]"%>
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 8 / 41


Intégration de la JSTL dans un projet JEE

Jakarta EE

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

H I ©
<%@ taglib prefix="c" uri="[Link]"%>
UEL
O
f E LM
ch r e
Réponse ©A
Non, on peut utiliser l’auto-chargement.

H & H: Research and Training 8 / 41


Intégration de la JSTL dans un projet JEE

Jakarta EE

Démarche
Créer un fichier JSP dans WEB-INF que nous appellerons par
H I ©
exemple [Link]
UEL
O
Déplacer les directives JSP dans [Link]
f E LM
ch r e
<%@ taglib prefix="c" uri="[Link]"%>
© A
Configurer l’auto-chargement (autoload) depuis [Link]

H & H: Research and Training 9 / 41


Intégration de la JSTL dans un projet JEE

Jakarta EE
Ajouter l’auto-chargement dans [Link]
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<include-prelude>/WEB-INF/[Link]</include-prelude>
</jsp-property-group>
H I ©
EL
</jsp-config>

O U
f E LM
ch r e
©A

H & H: Research and Training 10 / 41


Intégration de la JSTL dans un projet JEE

Jakarta EE
Ajouter l’auto-chargement dans [Link]
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<include-prelude>/WEB-INF/[Link]</include-prelude>
</jsp-property-group>
H I ©
EL
</jsp-config>

O U
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/[Link] </include-prelude> : le
chemin du fichier à auto-charger
Cela nous évite de faire <%@ include file="/WEB-INF/[Link]" %> dans
chaque JSP

H & H: Research and Training 10 / 41


Cinq librairies JSTL

Jakarta EE

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...)

O U
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

Jakarta EE

Principales balises de la librairie Core


out : pour afficher un message ou le contenu d’une variable
set : pour déclarer ou modifier la valeur d’une variable
H I ©
EL
if, choose et when : pour effectuer un traitement conditionnel
U
O
itérative f E LM
forEach et forTokens : pour avoir une structure de contrôle

r e
h construire des liens hypertextes avec et sans
c: pour
A
url et param
©
paramètre

H & H: Research and Training 12 / 41


Librairie Core

Jakarta EE

Principales balises de la librairie Core


out : pour afficher un message ou le contenu d’une variable
set : pour déclarer ou modifier la valeur d’une variable
H I ©
EL
if, choose et when : pour effectuer un traitement conditionnel
U
O
itérative f E LM
forEach et forTokens : pour avoir une structure de contrôle

r e
h construire des liens hypertextes avec et sans
c: pour
A
url et param
©
paramètre

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

H & H: Research and Training 12 / 41


Librairie Core Affichage

Jakarta EE
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

Jakarta EE
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 }" />
<%-- Affiche true --%>
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 13 / 41


Librairie Core Affichage

Jakarta EE
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 }" />
<%-- Affiche true --%>
UEL
O
f E LM
r e
Afficher le contenu d’une variable avec utilisation de valeur par défaut
ch
©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

Jakarta EE
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 }" />
<%-- Affiche true --%>
UEL
O
f E LM
r e
Afficher le contenu d’une variable avec utilisation de valeur par défaut
ch
©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

Jakarta EE

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

Jakarta EE

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

Jakarta EE

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

Jakarta EE

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

Jakarta EE

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

Jakarta EE

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

Jakarta EE

Déclarer une variable de type entier


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

H & H: Research and Training 16 / 41


Librairie Core Déclaration de variables

Jakarta EE

Créer un objet de type Personne à partir de l’objet perso définiH I ©


U
dans la servlet et ajouté comme attribut de requête EL
M O
f E L
<c:set scope="session" var="p" value="${ perso }" />

c h re
©A

H & H: Research and Training 17 / 41


Librairie Core Déclaration de variables

Jakarta EE
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

Jakarta EE
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
La modification d’un attribut de l’objet
O
f E LM
<c:set target="$ {perso }" property="nom" value="Travolta" />

r e
<%-- l'objet p aura comme nouveau nom Travolta --%>
ch
©A
<c:out value="${ [Link] } ${ [Link] }" />
<%-- affiche Travolta John --%>

H & H: Research and Training 18 / 41


Librairie Core Déclaration de variables

Jakarta EE
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
La modification d’un attribut de l’objet
O
f E LM
<c:set target="$ {perso }" property="nom" value="Travolta" />

r e
<%-- l'objet p aura comme nouveau nom Travolta --%>
ch
©A
<c:out value="${ [Link] } ${ [Link] }" />
<%-- 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

Jakarta EE
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

Jakarta EE
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
Explication
f E LM
h r e
estc
L’attribut testA 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

Jakarta EE

Exemple avec var et scope


H I ©
U EL scope="session">
<c:if test="${ 3 > 2 and 2 > 1 }" var="result"

</c:if>
L MO
<c:out value="${ result }" />

<%-- affiche true --%>


r e f E
A ch
©

H & H: Research and Training 20 / 41


Librairie Core Structures conditionnelles

Jakarta EE
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 ©
EL
</c:choose>

O U
f E LM
ch r e
©A

H & H: Research and Training 21 / 41


Librairie Core Structures conditionnelles

Jakarta EE
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 ©
EL
</c:choose>

O U
f E LM
Explication
ch r e
©A
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

Jakarta EE
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

Jakarta EE
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
ch r e
var : n’est pas obligatoire. On l’ajoute quand on a besoin d’utiliser la valeur du
compteur
©A
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

Jakarta EE

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

Jakarta EE

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
A
items : pour dé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

Jakarta EE
Pour parcourir une collection

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


Element n : <c:out value="${ [Link] }"/>
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

Jakarta EE
Pour parcourir une collection

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


Element n : <c:out value="${ [Link] }"/>
Valeur : <c:out value="${ element['nom'] }" />
</c:forEach>

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

f E LM
r e
first : contient true si c’est la première itération
ch
©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

Jakarta EE

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=";, ">


${ sousChaine }<br>
</c:forTokens>
H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 25 / 41


Librairie Core Structures itératives

Jakarta EE

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=";, ">


${ sousChaine }<br>
</c:forTokens>
H I ©
U EL
O
f E LM
Explication

ch r e
©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

Jakarta EE
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

Jakarta EE
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 [Link] 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

Jakarta EE
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 [Link] 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

Jakarta EE

Pour importer un fichier


<c:import url="[Link]"></c:import>
H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 27 / 41


Librairie Core Import

Jakarta EE

Pour importer un fichier


<c:import url="[Link]"></c:import>
H I ©
UEL
O
f E LM
L’équivalent en scriptlet
ch r e
©A
<%@ include file="[Link]"%>

H & H: Research and Training 27 / 41


Librairie Core Objets implicites

Jakarta EE
Objets implicites

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


[Link] 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 portée request
a une

L MOqui a une portée session


sessionScope : pour récupérer une variable

applicationScope : r e f E
applicationAc
h pour récupérer une variable qui a une portée

©
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

Jakarta EE
Pour inclure cette bibliothèque dans le [Link]

<%@ taglib uri="[Link]" prefix="fn" %>

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

H & H: Research and Training 29 / 41


Librairie Function

Jakarta EE
Pour inclure cette bibliothèque dans le [Link]

<%@ taglib uri="[Link]" prefix="fn" %>

Pour récupérer la longueur d’une chaı̂ne de caractère (ou liste)

H I ©
EL
${ fn:length("chaine") }
<%-- Retourne 6 --%>

O U
f E LM
ch r e
©A

H & H: Research and Training 29 / 41


Librairie Function

Jakarta EE
Pour inclure cette bibliothèque dans le [Link]

<%@ taglib uri="[Link]" prefix="fn" %>

Pour récupérer la longueur d’une chaı̂ne de caractère (ou liste)

H I ©
EL
${ fn:length("chaine") }
<%-- Retourne 6 --%>

O U
f E LM
r e
Pour tester si une chaı̂ne contient une autre sous-chaı̂ne de caractère
ch
©A
fn:contains("Bonjour", "Bon")
<%-- Retourne true --%>

H & H: Research and Training 29 / 41


Librairie Function

Jakarta EE
Pour inclure cette bibliothèque dans le [Link]

<%@ taglib uri="[Link]" prefix="fn" %>

Pour récupérer la longueur d’une chaı̂ne de caractère (ou liste)

H I ©
EL
${ fn:length("chaine") }
<%-- Retourne 6 --%>

O U
f E LM
r e
Pour tester si une chaı̂ne contient une autre sous-chaı̂ne de caractère
ch
©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

Jakarta EE

Autres fonctions

I ©
fn:trim(String) : élimine les espaces au début et à la fin de la chaı̂ne
H
EL
fn:toUpperCase(String) : retourne la chaı̂ne passée en paramètre en majuscule
U
O
LM
fn:toLowerCase(String) : retourne la chaı̂ne passée en paramètre en minuscule

r e f E
fn:escapeXml(String) : élimine les caractères spéciaux en les remplaçant par leur

ch
code HTML (Exemple : ${ fn:escapeXml("Les balises <p> & <b>") }

©A
retourne "Les balises &lt; p &gt; &amp; &lt; b &gt;"

...

H & H: Research and Training 30 / 41


Librairie Format

Jakarta EE
Pour inclure cette bibliothèque dans le [Link]

<%@ taglib uri="[Link]" prefix="fmt" %>

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

H & H: Research and Training 31 / 41


Librairie Format

Jakarta EE
Pour inclure cette bibliothèque dans le [Link]

<%@ taglib uri="[Link]" prefix="fmt" %>

Pour convertir une valeur en monnaie


H I ©
<c:set var="montant" value="112233.44" />
UEL
O
LM
montant = <fmt:formatNumber value="${ montant }" type="currency"/>

r e f E
ch
©A

H & H: Research and Training 31 / 41


Librairie Format

Jakarta EE
Pour inclure cette bibliothèque dans le [Link]

<%@ taglib uri="[Link]" prefix="fmt" %>

Pour convertir une valeur en monnaie


H I ©
<c:set var="montant" value="112233.44" />
UEL
O
LM
montant = <fmt:formatNumber value="${ montant }" type="currency"/>

r e f E
ch
©A
<%-- Affiche montant = 112 233,44 C --%>

H & H: Research and Training 31 / 41


Librairie Format

Jakarta EE
Pour inclure cette bibliothèque dans le [Link]

<%@ taglib uri="[Link]" prefix="fmt" %>

Pour convertir une valeur en monnaie


H I ©
<c:set var="montant" value="112233.44" />
U EL
O
LM
montant = <fmt:formatNumber value="${ montant }" type="currency"/>

r e f E
ch
©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

Jakarta EE

Si le symbole C ne s’affiche pas, il faut modifier la locale

<fmt:setLocale="fr_FR" />

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

H & H: Research and Training 32 / 41


Librairie Format

Jakarta EE

Si le symbole C ne s’affiche pas, il faut modifier la locale

<fmt:setLocale="fr_FR" />

H I ©
U EL
O
Quelques autres attributs

f E LM
r e
<c:set var="montant" value="112233.44" />

ch
montant = <fmt:formatNumber value="${ montant }" type="currency"

©A
currencySymbol="$" maxIntegerDigits="3"/>
<%-- Affiche montant = 233,44 $ --%>

H & H: Research and Training 32 / 41


Librairie Format

Jakarta EE

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

Jakarta EE

Pour convertir en nombre


<fmt:parseNumber value="${ [Link] }" var="id"/>

H I ©
Autres attributs
U EL
integerOnly : prend trueL M O
si false. re f E pour un résultat de type entier, float

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

H & H: Research and Training 34 / 41


Librairie Format

Jakarta EE

Pour formatter une date

<jsp:useBean id="now" class="[Link]" />


Aujourd'hui, c'est le <fmt:formatDate value="${ now }" type="date"
dateStyle="short"/>
H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 35 / 41


Librairie Format

Jakarta EE

Pour formatter une date

<jsp:useBean id="now" class="[Link]" />


Aujourd'hui, c'est le <fmt:formatDate value="${ now }" type="date"
dateStyle="short"/>
H I ©
U EL
O
f E LM
ch r e
Autres valeurs de l’attribut dateStyle

©A
long : remplace l’indice du mois par son nom (janvier, février...)

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

Jakarta EE

Autres attributs de formatDate


timeStyle : permet de formatter l’heure et prend les mêmes
valeurs que dateStyle

H I ©
EL
type : prend une des valeurs suivantes : date, time ou both
U
O
LM
var : contient le nom de la variable reçoit le résultat

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

H & H: Research and Training 36 / 41


Librairie Format

Jakarta EE

Autres attributs de formatDate


timeStyle : permet de formatter l’heure et prend les mêmes
valeurs que dateStyle

H I ©
EL
type : prend une des valeurs suivantes : date, time ou both
U
O
LM
var : contient le nom de la variable reçoit le résultat

r e f E
scope : précise la portée de cette variable
ch
... ©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

Jakarta EE
Pour inclure cette bibliothèque dans le [Link]
<%@ taglib uri="[Link]" prefix="x" %>

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

H & H: Research and Training 37 / 41


Librairie XML

Jakarta EE
Pour inclure cette bibliothèque dans le [Link]
<%@ taglib uri="[Link]" prefix="x" %>

I ©
Considérant le fichier XML [Link] situé dans la racine du
H
projet
UEL
O
LM
<personnes>
<personne id="1">
<nom>wick</nom>
r e f E
ch
©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

Jakarta EE
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

Jakarta EE
Pour importer le fichier Xml

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

Pour parser le contenu du fichier et l’affecter à une variable


H I ©
U EL
MO
<x:parse xml="${ personnes }" var="list" />

f E L
ch r e
©A

H & H: Research and Training 38 / 41


Librairie XML

Jakarta EE
Pour importer le fichier Xml

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

Pour parser le contenu du fichier et l’affecter à une variable


H I ©
U EL
MO
<x:parse xml="${ personnes }" var="list" />

f E L
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

Jakarta EE
Pour importer le fichier Xml

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

Pour parser le contenu du fichier et l’affecter à une variable


H I ©
U EL
MO
<x:parse xml="${ personnes }" var="list" />

f E L
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

Jakarta EE

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

Jakarta EE

Dépendances à ajouter dans le [Link] d’un Maven Project pour utiliser la


JSTL

<!-- [Link]
jstl/[Link]-api -->
<dependency>
H I ©
<groupId>[Link]</groupId>
UEL
O
<artifactId>[Link]-api</artifactId>
<version>3.0.0</version>
</dependency>
f E LM
ch r e
© A
<!-- [Link]
[Link] -->
<dependency>
<groupId>[Link]</groupId>
<artifactId>[Link]</artifactId>
</dependency>

H & H: Research and Training 40 / 41


Dépendance JSTL sous Maven

Jakarta EE

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

<%@ taglib prefix="c" uri="[Link]"%>


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

r e f E
ch
©A

H & H: Research and Training 41 / 41


Dépendance JSTL sous Maven

Jakarta EE

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

<%@ taglib prefix="c" uri="[Link]"%>


<html>
<body>
H I ©
<h2>Hello World!</h2>
<c:out value="Bonjour" />
UEL
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