Vous êtes sur la page 1sur 59

Java EE

Filière Informatique et Ingénierie des Données


Semestre 3

Prof. Bouchra KAROUM

Ecole Nationale des sciences Appliquées - Khouribga


Université Sultan Moulay Slimane Béni-Mellal

2023-2024
Chapitre 3 : JavaServer Pages
(JSP)
JSP : Introduction
▷ Servlet = classe Java contenant de l'HTML
▷ JSP = Une page HTML qui peut contenir du code java exécutable coté
serveur afin de la rendre dynamique.
▷ Les JSP contiennent des marqueurs spéciaux pour effectuer des
traitements sur le serveur et appeler du code java côté serveur.
▷ Les pages sont traitées sur le serveur et compilées sous forme de
servlets.
▷ Les JSP répondent aux requêtes des clients en utilisant le protocole
HTTP.
▷ JSP : les parties statiques sont écrites en HTML et les parties
dynamiques sont écrites en Java
3
JSP : Cycle de vie

5
JSP : Cycle de vie
▷ Compilation :
• Lorsque le serveur web ou le conteneur JSP reçoit une demande pour une JSP pour la première
fois, il vérifie si la JSP a déjà été compilée.
• Si oui ou si elle a été modifiée depuis sa dernière compilation, le conteneur JSP la compile en un
fichier Java servlet.
• Le code Java généré à partir de la JSP est généralement stocké dans un répertoire temporaire
sur le serveur.
▷ Instanciation du Servlet :
• Une fois que la JSP a été compilée avec succès, le conteneur JSP instancie un objet servlet
correspondant à la JSP. Cela se fait généralement en utilisant la classe Java générée lors de la
compilation.
▷ Initialisation (init) :
• L'objet servlet JSP est initialisé en appelant sa méthode jspinit()

6
JSP : Cycle de vie
▷ Traitement de la Requête :
• Lorsqu'une demande HTTP est reçue pour la JSP, le conteneur JSP appelle la méthode jspservice() de
l'objet servlet correspondant.
• La méthode jspservice() génère la réponse en exécutant le code Java contenu dans la JSP, en fonction
des données de la demande.
▷ Génération de la Réponse :
• Le code Java dans la JSP génère du contenu HTML ou XML (ou d'autres types de contenu) en
fonction des données fournies dans la demande et de la logique de la JSP.
• Ce contenu est généralement stocké dans un objet HttpServletResponse pour être renvoyé au client.
▷ Envoi de la Réponse :
• Une fois que la réponse a été générée, le conteneur JSP envoie la réponse au client via le protocole
HTTP.
▷ Destruction (destroy) :
• Lorsque l'objet servlet JSP n'est plus nécessaire (par exemple, lorsque l'application est arrêtée ou que
la JSP est déchargée), sa méthode jspdestroy() est appelée pour effectuer des opérations de nettoyage
ou de libération de ressources.
7
JSP : Cycle de vie
• Les JSP sont compilées par le compilateur JASPER (il en existe d’autres) pour
devenir des Servlets JAVA. Tomcat intègre un moteur de servlets appelé
CATALINA.
• JASPER génère une servlet Java (fichier.java) qui est à son tour compilée par
CATALINA pour devenir une Servlet exécutable (fichier .class)
• La syntaxe propre à Java est encadrée par des balises <% et %>, ce qui
explique au compilateur JASPER que le reste du code doit être traité comme
du langage HTML.

8
Eléments d’une page JSP
▷ JSP possède des éléments de syntaxe spécifiques pour la déclaration des
variables et des méthodes, l’écriture des expressions et l’intégration des autres
pages JSP.

9
Les directives
▷ Les directives permettent de passer des informations générales à-propos de la page JSP
au moteur JSP.
▷ Syntaxe :

<%@ et %> ou <jsp:directive.nom_directive … />

▷ Types :
○ Page: passe au moteur des informations concernant les propriétés de la page JSP :
<%@ page …%>
○ Include: demande au moteur JSP d’inclure le contenu d’un autre fichier (html ou
jsp) dans la page courante : <%@ include…%>
○ Taglib: est utilisée pour associer un préfixe avec une bibliothèque de balises : <%@
taglib…%>

10
La directive page : <%@ page …%>
▷ La directive page sert à indiquer les attributs de page : langage de programmation
(java), le type MIME (Multipurpose Internet Mail Extension), l’encodage des
caractères de la réponse,..
▷ Syntaxe:
<%@ page attribut="valeur" [attribut="valeur"] ... %>
▷ Attributs:
Import
Description buffer par défaut
Valeur
Session autoFlush

errorPage info

isErrorPage contentType

Langage pageEncoding

extends
11
La directive page : <%@ page …%>
▪ import : permet d’Importer des classes et des packages, séparées par des virgules,
nécessaires pour la page JSP. Similaire à l’instruction import de java.
<%@page import=" java.util.*, java.sql.Connection" %>

▪ session : permet de déterminer si la page JSP courante fait partie d’une session http.
Il accepte par défaut la valeur « true », ce qui indique que la page fait partie d’une
session et peut utiliser un objet de type HttpSession pour gérer des données de
session
<%@page session=" true" %>

▪ errorPage : précise l’URL de la page JSP renvoyée au client au cas où une exception
est levée
<%@page errorPage="erreurs.jsp" %>

12
La directive page : <%@ page …%>

▪ isErrorPage : indique si la page JSP est une page d'erreur personnalisée qui gère les
exceptions. La valeur par défaut est false
<%@ page isErrorPage="true" %>

▪ language : spécifie le langage de programmation utilisé dans la page JSP. Par défaut,
il est défini sur "java".
<%@ page language="java" %>

▪ extends : spécifie la classe de base à partir de laquelle la servlet générée doit hériter.
<%@ page extends= "ClassePersonnalisee" %>

13
La directive page : <%@ page …%>
▪ autoFlush : permet de contrôler si le tampon de sortie de la réponse HTTP doit être
automatiquement vidé (true) ou non (false).
<%@ page autoFlush="true" %>

▪ Info : permet de fournir des informations de description sur la page JSP


<%@ page info="Cette page affiche la liste des hôtels." %>

▪ contentType : définit le type MIME (Multipurpose Internet Mail Extensions) de la


réponse générée par la page JSP et l’encodage des caractères.
<%@ page contentType="text/html;charset=UTF-8" %>
Cette directive est équivalente à l’instruction:
response.setContentType("text/html;charset=ISO-8859-1" );

14
La directive page : <%@ page …%>
▪ isThreadSafe : permet de déclarer si la JSP peut être exécutée par plusieurs
clients à la fois. Par défaut true.
<%@ page isThreadSafe="false" %>

▪ buffer : spécifie la taille minimale du tampon. Le suffixe «kb» est obligatoire.


<%@ page buffer="32kb" %>

15
La directive include : <%@ include …%>
▷ La directive include sert à inclure une autre page (HTML, XHTML
ou JSP) dans la page courante.
▷ Utilisé pour insérer une page standard ou un élément commun à
plusieurs pages (entête ou pied de page).
▷ Syntaxe :
▪ <%@include file="chemin relatif du fichier" %>
ou
▪ <jsp:directive.include file= "chemin relatif du fichier " />

16
La directive taglib : <%@ taglib …%>
▷ La directive taglib déclare qu’une page utilise l’une des bibliothèques
standards en l’identifiant de façon unique par une URI et un préfixe.
▷ La directive doit être placée avant toute utilisation d'un tag spécifique.
▷ Il est possible d'utiliser plusieurs directives " taglib " dans la même JSP,
mais chaque " prefix " doit être unique.
▷ Avec la syntaxe XML, URI et préfixe sont regroupées dans un espace de
noms unique (xmlns).
▷ Exemple: la bibliothèque de marqueurs http://java.sun.com/jstl/core est
disponible pour la page via le préfixe c :

17
Les déclarations : <%! …. %>
▷ Permettent de déclarer des méthodes et des variables d’instance connus
dans toute la page JSP.
▷ Syntaxe:
▪ <%! Déclaration %>
ou
▪ <jsp:declaration> ceci est une déclaration </jsp:declaration>
▷ Exemple:

Notez bien que la valeur du compteur est initialisée à 0 une seule fois lors que la page jsp
est chargé par le moteur JSP. 18
Les scriplets : <%......%>
▷ Permettent d’insérer des fragments de code java dans les pages jsp.
▷ Les scriptlets sont exécutés à chaque requête.
▷ Syntaxe:
▪ <% scriplet %>
ou
▪ <jsp:scriplet> …. </jsp:scriplet>
▷ Exemple:

19
Les expressions <%=......%>
▷ Servent à envoyer la valeur d’une expression java au client.
▷ Correspond à out.println(…);
▷ Les expressions sont évaluées à chaque requête
▷ Exemple:

▷ Les expressions suivantes sont invalides :


<%= false ; %> ; <%= inti=12 %> ; <%= obj.getInt() ; %> 20
Les commentaires <!-- ... --> / <%-- ... --%>
▷ Permettent d’insérer des commentaires (qui ont l’avantage de ne pas
être visibles pour l’utilisateur)
▷ <!-- ... -->
○ Commentaires HTML
○ Intégralement reconduit dans le fichier HTML généré (transmis
au client)
▷ <%-- ... --%>
○ Commentaires cachés
○ Contenu ignoré par le moteur JSP

21
Les commentaires <!-- ... --> / <%-- ... --%>
Exemple:

Commentaire
HTML

22
Les actions <jsp : …./>
▷ Les actions sont des commandes envoyées au moteur JSP au moment de
l’exécution des requêtes.
▷ Permettent de faire des traitements au moment où la page est demandée par le
client :
○ Inclure dynamiquement un fichier.
○ Utiliser des Java Bean.
○ Rediriger vers une autre page.
▷ Constitués de balises pouvant être intégrées dans une page JSP (syntaxe XML).
▷ Actions JSP standards:
○ jsp:include
○ jsp:param
○ jsp:forward
○ jsp:useBean
○ jsp:setProperty
○ jsp:getProperty
23
L’action <jsp : include …/>
▷ jsp:include: : permet d’inclure des ressources statiques et dynamiques dans le
même contexte que celui de la page courante.
▷ identique à la directive <%@ include… ……%/> sauf que l’inclusion est faite au
moment de la requête, donc après compilation
▷ jsp:param: permet de passer des informations à la ressource à inclure
▷ Exemple:

▷ En utilisant flush="true", vous indiquez que le contenu généré par la page incluse
doit être immédiatement envoyé au navigateur dès qu'il est disponible.

24
L’action <jsp : include …/>
▷ En plus des paramètres passés par les balises jsp:param, le composant
inclus dynamiquement peut accéder aussi à tous les paramètres stockés
dans la requête.
▷ Si un paramètre est dupliqué dans jsp:param, celui stocké dans la requête
est écrasé par la nouvelle valeur.

25
L’action <jsp : include …/>
Exemple

26
L’action <jsp : include …/>
Exemple

▷ Résultat de l’exécution

27
L’action <jsp : forward …/>
▷ Permet de passer le traitement de la requête au composant fournit en
paramètre.
▷ jsp:param permet ici aussi de passer des informations à la ressource
désignée.

▷ Exercice : Refaire l’exemple précédent en utilisant jsp:forward.

28
JSP et JavaBeans
▷ Un Java Bean permet de coder la logique métier de l'application web.

▷ Java Bean est une classe Java qui respecte certaines conventions :
○ Doit avoir un constructeur vide (sans argument)
○ La valeur des attributs doit être manipulée à travers des méthodes getXxx
(getters) et setXxx (setters)

29
JSP et JavaBeans
▷ Les trois actions standards dédiées à l’utilisation des beans:

Action Description

<jsp:useBean> Permet de créer ou récupérer un objet JavaBean et le rendre


disponible pour une utilisation ultérieure dans la page.
<jsp:setProperty> Permet de modifier les valeurs d’une instance de JavaBean.

<jsp:getProperty> Permet de récupérer les valeurs d’une instance de JavaBean.

30
L’action <jsp : useBean …/>
▷ Permet de séparer la partie traitement de la partie présentation.
▷ Permet d’instancier un composant JavaBean (classe java) qui pourra être appelé
dans la page JSP.
▷ Les Attributs:

Attribut Description

Id (obligatoire) spécifie le nom de la variable qui sera utilisée pour référencer


l'objet JavaBean créé ou récupéré
class (obligatoire) la classe Java du JavaBean

scope (facultatif) la portée de l'objet JavaBean créé

type (facultatif) permet de spécifier un type de données pour l'objet JavaBean.

beanName (facultatif) permet de spécifier un nom symbolique pour l'objet JavaBean.

31
L’action <jsp : useBean …/>
▷ L’attribut Scope permet de spécifier la portée de l'objet JavaBean créé. Les valeurs
possibles sont les suivantes :
▪ page : bean utilisable dans toute la page JSP ainsi que dans les fichiers
statiques inclus (valeur par défaut )
▪ request : bean accessible durant la durée de vie de la requête. La méthode
getAttribute() de l'objet request permet d'obtenir une référence sur le bean.
▪ session : bean utilisable par toutes les JSP qui appartiennent à la même
session que la JSP qui a instanciée le bean. La JSP qui a créé le bean doit avoir
l'attribut session = "true" dans sa directive de page.
▪ application : bean utilisable par toutes les JSP qui appartiennent à la même
application que la JSP qui a instanciée le bean. Le bean n'est instancié que lors
du rechargement de l'application.

▷ Exemple :
<jsp:useBean id="employe1" scope="session" class=“ensa.Employe" type="Personne" />

32
L’action <jsp : setProperty>
▷ Permet d’assigner une nouvelle valeur à une propriété d’un bean,
▷ cette action possède les attributs:
Attribut Description
Attribut Description

name Identifiant du bean

property Nom de la la propriété du JavaBean à modifier

value La nouvelle valeur assignée

▷ Exemple:

33
L’action <jsp : getProperty>
▷ Permet de récupérer la valeur d'une propriété d'un objet JavaBean et
l'afficher dans la réponse HTML générée par la page.
▷ Attributs:
Attribut Description

name Identifiant du bean

property Nom de la la propriété du JavaBean dont on souhaite


obtenir sa valeur
▷ Exemple:

34
Les variables implicites
▷ Également appelées objets implicites,

▷ Objets prédéfinis qui sont automatiquement disponibles dans les pages


JSP sans avoir besoin de les importer ou les déclarer explicitement.
▷ Automatiquement créées par le conteneur JSP
▷ Les variables sont :
○ request : représente la requête HTTP courante. Elle peut être
utiliser pour accéder aux paramètres de requête, aux en-têtes, aux
cookies, etc.
Exemple : <%= request.getParameter("parametre") %>
○ response : représente la réponse HTTP que la page JSP génère.
Vous pouvez l'utiliser pour écrire du contenu HTML dans la réponse.
Exemple : <%= response.encodeURL("page.jsp") %>
35
Les variables implicites
○ out : une instance de javax.servlet.jsp.JspWriter qui permet d'écrire
du contenu HTML dans la réponse.
Exemple : <% out.println("Hello, World!"); %>
○ session : représente la session utilisateur courante. Il permet de
stocker des données qui doivent persister pendant la session.
Exemple : <%= session.getAttribute("utilisateur") %>
○ application : représente le contexte de l'application (ou contexte
servlet). Il permet de partager des données entre les différentes
sessions et les requêtes de l'application.
Exemple : <%= application.getAttribute("compteur") %>
○ config : fournit des informations sur la configuration de la servlet
associée à la page JSP.
Exemple : <%= config.getServletName() %> 36
Les variables implicites
○ pageContext : encapsule toutes les variables implicites et fournit des
méthodes pour accéder à diverses fonctionnalités, telles que
l'inclusion de contenu et la gestion des erreurs.
Exemple : <%= pageContext.getErrorData() %>
○ exception : L'objet exception est automatiquement défini en cas
d'erreur. Il contient des informations sur l'exception qui s'est produite.
Exemple : <%= exception.getMessage() %>
○ page : L'objet page représente la page JSP elle-même. Il est utile pour
appeler des méthodes définies dans la page JSP.
Exemple : <jsp:useBean id="myBean" class="com.example.MyBean" />

37
Langage d’Expression (EL)
▷ EL est un langage d'expression intégré dans les pages JSP.
▷ Permet de manipuler les données au sein d'une page JSP plus
simplement qu'avec les scriptlets Java ( <%...%>)
▷ EL prend en charge de nombreuses opérations, telles que
l'arithmétique, les opérations logiques, les opérations de chaînes, etc.
▷ EL permet également d'accéder simplement aux beans des différents
scopes de l'application web (page, request, session et application).
▷ EL est généralement utilisé dans les attributs des balises JSTL, mais il
peut également être utilisé directement dans le contenu de la page
JSP.

38
Langage d’Expression (EL)
▷ Syntaxe de base : ${ expression}
▷ Une expression EL est une expression pouvant inclure et interpréter toute
une série d'opérations. tel que:
○ Des opérations arithmétiques, applicables à des nombres : +, -, *, /, %;
○ Des opérations conditionnelles de logiques, applicables à des
booléens : &&, ||, ! ;
○ Des opérations de comparaison relationnels, basés sur l'utilisation des
méthodes equals() et compareTo(); des objets comparés et bien sur
des opérateurs correspondants == ou eq, != ou ne, < ou lt, > ou gt, <=
ou le, >= ou ge.

39
Langage d’Expression (EL)
▷ Exemple avec les opérateurs relationnels

40
Langage d’Expression (EL)
▷ Exemple avec Java bean
○ Sans EL:

41
Langage d’Expression (EL)
▷ Exemple avec Java bean
○ avec EL: il suffit d'écrire ${ Bean.propriete } pour
accéder à une propriété d’un Bean

42
Langage d’Expression (EL)
▷ L'expression EL simplifie l'écriture de manière remarquable
▷ Altératifs d’écritures pour l’accès à une propriété : (condition : Un
getter doit être implémenté dans la classe du JavaBean)
${ etudiant_1.prénom }
${ etudiant_1.getPrénom() }
${ etudiant_1[’prénom’] }
${ etudiant_1["prénom"] }
▷ Rq: la première lettre de la propriété doit être une minuscule. Même au
niveau du java Bean il faut que ses propriétés soient définies en
minuscule
${ etudiant_1.Prénom }

43
Langage d’Expression (EL)
▷ Exemple avec une collection d’objets via les expressions EL : ${ List }
Comme c’est possible de manipuler des JavaBean dans une expression EL, il est également
possible d'accéder aux collections d’objets au sens large. Cela inclut donc tous les objets de
type java.util.List, java.util.Set, java.util.Map, etc.

44
Langage d’Expression (EL)
▷ Exemple avec une collection d’objets via les expressions EL : ${ Map }
Pour accéder aux collections d’objets d’une java.util.Map

45
Langage d’Expression (EL)
▷ Il est possible d'indiquer au conteneur de ne pas interpréter les EL d'une page. Il
suffit pour cela d'utiliser l'attribut isELIgnored de la directive page :

<%@page isELIgnored=true"%>

▷ Il est également possible de ne pas interpréter une EL en particulier en la


protégeant avec un anti-slash :

\${ ceci ne sera pas interprété comme une EL }

▷ Il est possible d'indiquer au conteneur JSP (2.0 et plus) de ne pas interpréter les EL
via le fichier web.xml sur l’ensemble des pages JSP de l’application

46
JSTL
▷ JavaServer Pages Standard Tag Library : Bibliothèque de balises
personnalisées standard pour les pages JSP.
▷ JSTL est un ensemble de marqueurs standard permettant d’éviter le
mélange du code Java et des marqueurs XHTML.
▷ Conçue pour améliorer la lisibilité du code en favorisant la séparation
entre la logique de présentation et la logique métier, ce qui suit le
modèle MVC (Modèle-Vue-Contrôleur).
▷ Il existe différentes versions des JSTL(1.0, 1.1, 1.2).
▷ La plus récente se base sur les JSP 2.0 qui intègre un moteur d'EL.
▷ JSTL est souvent utilisée en conjonction avec l'EL (Expression
Language)
47
JSTL
▷ JSTL offre des bibliothèques pouvant être utilisées dans une page JSP.
▷ Chaque bibliothèque est référencée par un URI et un préfixe associé:
Bibliothèque URI Prefixe
Core http://java.sun.com/jsp/jstl/core c
Format http://java.sun.com/jsp/jstl/fmt fmt
XML http://java.sun.com/jsp/jstl/xml x
SQL http://java.sun.com/jsp/jstl/sql sql
Function http://java.sun.com/jsp/jstl/functions fn

▷ Deux façons pour utiliser la bibliothèque, soit en utilisant :


○ Une directive JSP avec le système de marqueurs JSP:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix ="c" %>
○ Une syntaxe XML:
<jsp:root xmlns:jsp=" http://java.sun.com/JSP/Page"
xmlns:c= "http://java.sun.com/jstl/core" version="1.2" >
48
JSTL Core : Bibliothèque de base
▷ Fournit des marqueurs pour manipuler des variables, traiter des erreurs, effectuer
des tests et exécuter des boucles et des itérations
Action Description
<c:out> Affiche du texte ou une valeur d'expression
<c:set> Permet de définir une variable
<c:remove> Supprime une variable
<c:catch> Capture une exception java.lang.Throwable lancée par l’une de
ses actions imbriquées
<c:if> Teste si une expression est vraie
<c:choose> Fournit plusieurs alternatives exclusives
<c:when> Représente une alternative dans une action <c:choose
<c:otherwise> Représente la dernière alternative d’une action
<c:forEach> Répète son corps pour chaque élément d’une collection ou un
nombre fixé de fois
<c:forTokens> Itère sur une liste de tokens séparés par des virgules
<c:import> Importe une ressource
<c:url> Encode une URL
<c:param> Ajoute des paramètres de requête à une URL.
<c:redirect> Redirige vers une URL précise 49
JSTL Core : Bibliothèque de base Exemple
L’exemple présente une JSP
qui boucle sur les nombres de
3 à 15 en affichant, pour
chacun d’eux, s’il est pair ou
impair.

50
JSTL : Format
▷ Bibliothèque utile pour l'internationalisation (I18N) des applications web
▷ Permet de gérer différents formats de date, de nombre et de devise en
fonction de la langue et de la région de l'utilisateur.
▷ Quelques-unes des balises de la sous-bibliothèque "format" de JSTL :

Action Description
<fmt:setLocale> Fixe la langue à utiliser
<fmt:requestEncoding> Fixe l’encodage des caractères de la requête
<fmt:timeZone> Précise la zone horaire du format de l’heure
<fmt:setTimeZone> Stocke la zone horaire indiquée dans une zone
<fmt:formatDate> spécifie la date à formater et le modèle de formatage, ainsi
que d'autres options telles que la langue et la région
<fmt:formatNumber> Formate une valeur numérique (nbre, monnaie,%) selon la locale
<fmt:parseDate> permet de parser (analyser) une chaîne de caractères en une
date en utilisant un modèle de formatage spécifié.

51
JSTL : Format

52
JSTL : SQL
▷ permet d'exécuter des opérations SQL directement dans les pages JSP.
▷ permet d’effectuer des requêtes sur une base de données (insertions,
modifications et suppressions), d’accéder aux résultats de ces requêtes et
même de mettre en place un contexte transactionnel.
▷ Cependant, l'utilisation de ces balises est généralement déconseillée en
raison de problèmes de sécurité potentiels (injection SQL) et de la
séparation des préoccupations entre la logique de présentation et la
logique d'accès aux données.
▷ Il est recommandé d'utiliser des classes Java (comme JDBC) ou un
framework de persistance (comme Hibernate) pour gérer l'accès aux bases
de données dans une application web Java

53
JSTL : SQL
Action Description
<sql:setDataSource> permet de définir une source de données (généralement une connexion JDBC)
qui sera utilisée pour exécuter des requêtes SQL dans la page JSP. Il faut
spécifier l'URL de la base de données, le nom d'utilisateur et le mot de passe
<sql:query> utilisée pour exécuter une requête SQL à partir de la source de données
définie et stocker les résultats dans une variable.
<sql:update> exécuter des opérations de mise à jour SQL telles que INSERT, UPDATE ou
DELETE
<sql:param> utilisée pour spécifier des paramètres dans les requêtes SQL. Elle est souvent
utilisée avec <sql:query> ou <sql:update> pour passer des valeurs
dynamiques dans les requêtes SQL
Exemple :
<sql:setDataSource var="myDS" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb" user="monUtilisateur" password="monMotDePasse" />

<sql:query var="result" dataSource="${myDS}">


SELECT nom, prenom FROM utilisateurs WHERE id = <sql:param value="${userId}" />
</sql:query> 54
JSTL : SQL ▷ Cette JSP importe une
bibliothèque sql et indique une
source de données ici
jdbc/__default fournie avec
GlassFish.
▷ Le résultat de la requête select
est stocké dans la variable books
et toutes les lignes obtenues se
trouvent dans la collection
books.rows, que l’on parcourt
avec le marqueur <c:forEach>.

55
JSTL : XML
▷ La bibliothèque de marqueurs XML ressemble à la bibliothèque de marqueurs
fondamentaux Core
▷ manipuler des données au format XML dans des pages JSP.
▷ permet d'extraire, de transformer et d'afficher des informations XML de
manière propre et modulaire.
Action Description
<x:parse> permet de parser (analyser) une chaîne de caractères XML et de la
transformer en une structure de données utilisable
<x:out> affiche le contenu d'une structure de données XML stockée dans une
variable
<x:set> permet de stocker une valeur dans une variable
<x:forEach> utilisée pour itérer sur des éléments d'une structure de données XML et
effectuer des opérations répétées.
<x:transform> Applique une feuille de style XSLT à un document XML
<x:param> Ajoute les paramètres de la transformation <x:transform>
<x:if> Évalue l’expression XPATH si l’expression est vraie
<x:choose> Fournit plusieurs alternatives exclusives 56
JSTL : XML books.xml

57
JSTL : Fonctions
▷ Fournit des balises pour l'exécution de fonctions dans une page
JSP
▷ peuvent être utilisées avec EL et sont principalement employées
pour traiter les chaines de caractères
▷ Pour utiliser la sous-bibliothèque "functions" dans JSTL, il faut
déclarer la balise <%@ taglib %> appropriée au début de la page
JSP.

58
JSTL : Fonctions
Balise Description
<fn:contains> Teste si une chaine contient la sous chaine indiquée
<fn:containsIgnoreCa Idem, sans tenir compte de la casse
se>
<fn:endsWith> Test si une chaîne se termine par le suffixe indiqué
<fn:escapeXml> Protège les caractères pouvant être interprétés comme du XML
<fn:indexOf> Renvoie l’indice de la première occurrence d’une sous-chaîne dans une
chaîne
<fn:join> Joint tous les éléments d’un tableau pour former une chaîne
<fn:length> Renvoie le nombre d’éléments d’une collection ou taille de string
<fn:replace> Renvoie une chaîne où toutes les occurrences de la sous-chaîne indiquée
ont été remplacées par une autre chaîne
<fn:split> Découpe une chaîne pour obtenir un tableau de sous-chaînes
<fn:startsWith> Teste si une chaîne commence par le préfixe indiqué
<fn:substring> Renvoie une sous chaîne
<fn:substringAfter> Renvoie la sous chaîne située après la sous chaîne indiquée
<fn:substringBefore> Renvoie la sous chaîne située avant la sous chaîne indiquée
<fn:toLowerCase> Convertit une chaîne en minuscules
<fn:toUpperCase> Convertit une chaîne en majuscules
<fn:trim> Supprime les espaces aux deux extrémités d’une chaîne 59
JSTL : Fonctions
Exemple

60

Vous aimerez peut-être aussi