Université St Charles Lwanga
Cours d’Architecture Client-
serveur
Présenté par : M. ABDRAMANE ISSA OUMAR
00:02 Architecture Client/Serveur, GL3 UCL - SARH 1
Introduction à Java EE
Objectifs :
Comprendre Java EE et son écosystème
Connaître les principales spécifications
Savoir pourquoi utiliser Java EE
2
Qu'est-ce que Java EE ?
Définition : Plateforme pour le développement d'applications d'entreprise.
Basé sur : Java SE (Standard Edition) + API supplémentaires.
Principales caractéristiques :
Multi-couches (web, métier, données)
Composants réutilisables (Servlets, EJB, JPA)
Normes ouvertes (Jakarta EE)
3
Histotrique
J2EE 1.2 (December 1999)
J2EE 1.3 (September 2001)
J2EE 1.4 (November 2003)
Java EE 5 (May 2006)
Java EE 6 (December 2009)
Java EE 7 (May)
Java EE 8 (August 2017)
Jakarta EE 8 (September 2019)
4
Architecture Java EE
5
Exemple d'une Servlet (Hello
World)
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
[Link]("text/html");
PrintWriter out = [Link]();
[Link]("<h1>Hello Java EE!</h1>");
}
}
6
Composants Principaux
Web : Servlets, JSP, JSF
Métier : EJB (Session Beans, Message-
Driven Beans)
Données : JPA (Hibernate), JDBC
Communication : JAX-RS (REST), JMS
(Messagerie)
7
Communication Client-serveur
Java EE
8
Communication Client-serveur
Java EE
récupérer les requêtes HTTP issues des clients ;
les mettre dans des boîtes, des objets, que votre code sera
capable de
manipuler ;
faire passer ces objets dans la moulinette qu'est votre
application, via le
conteneur ;
renvoyer des réponses HTTP aux clients, en se basant sur les
objets
retournés par votre code.
9
Le modèle MVC
récupérer les requêtes HTTP issues des clients ;
les mettre dans des boîtes, des objets, que votre code sera
capable de
manipuler ;
faire passer ces objets dans la moulinette qu'est votre
application, via le
conteneur ;
renvoyer des réponses HTTP aux clients, en se basant sur les
objets
retournés par votre code.
10
Le modèle MVC
11
Le modèle MVC
tout ce qui concerne le traitement, le stockage et la mise à
jour des données de l'application doit être contenu dans la
couche nommée "Modèle" (le M de MVC) ;
tout ce qui concerne l'interaction avec l'utilisateur et la
présentation des données (mise en forme, affichage) doit
être contenu dans la couche nommée "Vue" (le V de MVC) ;
tout ce qui concerne le contrôle des actions de l'utilisateur
et des données doit être contenu dans la couche nommée
"Contrôle" (le C de MVC).
12
Le modèle MVC en J EE
13
Le modèle MVC en J EE
Dans une application Java EE sans frameworks :
la couche Modèle (Ce bloc contient donc des
objets Java d'une part, qui peuvent contenir des
attributs (données) et des méthodes
(traitements) qui leur sont propres, et un
système capable de stocker des données
d'autre part.) est constituée d'objets Java ;
14
Le modèle MVC en J EE
la couche Vue (Elle est exécutée côté serveur et
permet l'écriture de gabarits (pages en langage
"client" comme HTML, CSS, Javascript, XML, etc.). Elle
permet au concepteur de la page d'appeler de
manière transparente des portions de code Java, via
des balises et expressions ressemblant fortement aux
balises de présentation HTML) est constituée de
pages JSP ;
la couche Contrôle est constituée de servlets.
15
Le modèle MVC en J EE
la couche Contrôle (Il fournit pour cela des
méthodes permettant de scruter les requêtes HTTP.
Cet objet n'agit jamais directement sur les
données, il faut le voir comme un simple
aiguilleur : il intercepte une requête issue d'un
client, appelle éventuellement des traitements
effectués par le modèle, et ordonne en retour à la
vue d'afficher le résultat au client.) est constituée
de servlets.
16
Outils et environnement de
développement
La création d'une application web avec Java EE
s'effectue généralement à l'aide d'un
Environnement de Développement Intégré, très
souvent raccourci à l'anglaise en IDE.
C'est un logiciel destiné à faciliter grandement le
développement dans son ensemble.
17
Serveurs Java EE
Payants :
Oracle WebLogic
IBM WebSphere
Open Source :
WildFly (ex-JBoss)
Apache TomEE
GlassFish
18
IDE & Tools
Eclipse (avec Jakarta EE plugins)
IntelliJ IDEA (Ultimate)
NetBeans (Apache NetBeans)
WebStorm
19
Choix du Serveur
d'Applications Java EE
Pour exécuter une application Java EE, un serveur d'applications est
nécessaire. Parmi les solutions disponibles, Apache Tomcat est un choix
adapté pour débuter, car :
Léger et performant : Optimisé pour les applications web
(Servlets/JSP).
Open Source : Gratuit et libre d’utilisation.
Multiplateforme : Compatible Windows, Linux, macOS.
Suffisant pour les bases : Supporte les standards web de Java EE
(Servlet, JSP, JSTL).
20
Le serveur tomcat
Pourquoi Tomcat ?
Idéal pour l’apprentissage : Configuration simple,
démarrage rapide.
Intégration facile avec les IDE (Eclipse, IntelliJ) et
Maven.
Large adoption dans l’industrie pour les applications
web légères.
21
Installer serveur tomcat
Consignes pour l‘installation
Télécharger depuis le site de tomcat ([Link]
[Link]) la dernière version pour windows ;
Installer de préférence dans un répertoire situé directement à la racine du
disque dur (évitez "Program Files" ) Le titre ne doit contenir ni espaces ni
caractères spéciaux ; Ensuite décompresser et ouvrez votre éditeur Eclipse
EE, puis clicquer sur nouveau, choisissez autre (other) chercher Server,
dans Server ouvrez apache choisissez votre version et clicquer sur Terminé
(Finish) pour finaliser l’installation.
22
serveur tomcat
Détails utiles : Stockage par défaut des applications dans le dossier webapps
qui contient le dossier de configuration conf suivants :
[Link] : contient les éléments de configuration du serveur ;
[Link] : contient les directives communes à toute les applications
web déployées sur le serveur;
[Link] : contient entre autres l'identifiant et le mot de passe
d'accéder à l'interface d'administration de votre serveur Tomcat ;
[Link] : contient les paramètres de configuration communs à toutes
les applications web déployées sur le serveur.
23
Structure d’un fichier web
sous Eclipse EE
24
Instant test, premier programme en
java ee
25
La servlet
C'est la base de la programmation Java EE, toute la
conception d'application Web repose la servlet
C’est un programme Java qui tourne sur un serveur Java
EE
Elle estpackage
invoquée lorsqu'un navigateur appelle l'URL qui lui
[Link];
import [Link];
est liéepublic class Test extends HttpServlet {
26
La servlet
Mode de communication :
Le client utilise les méthodes HTTP pour communiquer avec le serveur :
Méthode GET
Méthode POST
Méthode HEAD
…
Les packages javax.* nécessaires pour compiler un servlet :
[Link] (Internet générique)
[Link] (Server WWW)
27
La servlet
L’interaction avec un client
Quand une servlet accepte une requête d’un client, il reçoit deux
objets :
1. Un objet qui implémente ServletRequest et qui encapsule la
communication du client vers le serveur (ServletInputStream ou
HttpServletRequest)
2. Un objet qui qui implémente ServletResponse et qui encapsule la
communication du servlet vers le client (ServletOutStream ou
HttpServletResponse)
28
Mise en place d’une Servlet
La servlet est une classe Java, il va falloir configurer dans
un fichier [Link] qu’elle soit associée à une URL
Ainsi la requête HTTP du client sera automatiquement
aiguillée par notre conteneur de servlet vers la bonne
servlet, celle qui est en charge de répondre à cette
requête
29
Mise en place d’une Servlet
Le fichier de configuration doit impérativement se nommer
[Link] et se situer sous le répertoire /WEB-INF de notre
application
La mise en place d'une servlet se déroule en deux étapes :
nous devons d'abord déclarer la servlet
puis lui faire correspondre une URL.
30
Mise en place d’une Servlet
La définition de la servlet
<servlet>
<servlet-name>Test_Servlet</servlet-name>
<servlet-class>[Link].Test_Servlet</servlet-class>
</servlet>
Le mapping de la servlet
<servlet-mapping>
<servlet-name>Test_Servlet</servlet-name>
<url-pattern>/lien</url-pattern>
</servlet-mapping>
31
Mise en place d’une Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="[Link]
xmlns:xsi="[Link]
xsi:schemaLocation="[Link]
[Link] " version="3.0">
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>[Link]</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>
</web-app>
32
Mise en place d’une Servlet
Import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class Test extends HttpServlet {
public void doGet (HttpServletRequestrequest,HttpServletResponseresponse)
throws ServletException, IOException {
}
33
Java Server Pages (JSP)
La technologie servlet ne convient pas à la génération du
code de présentation
Écrire une page web en langage Java est pénible
Il est nécessaire de disposer d'une technologie qui joue le
rôle de simplification de l'API servlet :
Les pages JSP sont une abstraction "haut niveau" de la
technologie servlet
34
Java Server Pages (JSP)
Le modèle MVC recommande une séparation nette entre le code de
contrôle et la présentation
La servlet n'est pas adaptée à la prise en charge de l'affichage
Le modèle MVC recommande une séparation nette entre le code
métier et la présentation :
Dans le modèle on doit trouver le code Java responsable de la
génération des éléments dynamiques
Dans la vue on doit simplement trouver l'interface utilisateur
35
Java Server Pages (JSP)
Dans le modèle MVC, tout ce qui touche à l'affichage final (texte,
mise en forme, etc.) doit être placé dans une couche à part : la vue
En Java EE, la technologie utilisée pour réaliser une vue est la page
JSP (Java Server Pages)
L'intérêt est de rendre possible la création de pages dynamiques :
Il y a une étape de génération sur le serveur, il devient possible
de faire varier l'affichage et d’interagir avec l'utilisateur, en
fonction notamment de la requête et des données reçues
36
Java Server Pages (JSP)
Une page JSP ressemble à une page HTML, à quelques différences près :
L'extension d'une telle page devient .jsp et [Link]
Une telle page peut contenir des balises HTML, mais également des
balises JSP qui appellent de manière transparente du code Java ;
Contrairement à une page HTML statique directement renvoyée au
client, une page JSP est exécutée côté serveur, et génère alors une
page renvoyée au client (traduit en servlet: voir répertoire de travail
du serveur : sous Tomcat, il s'agit du répertoire /work)
37
Java Server Pages (JSP)
Les pages JSP se présentent sous la forme d'un simple
fichier au format texte, contenant des balises respectant
une syntaxe à part entière
Le langage JSP combine à la fois les technologies HTML,
XML, servlet et JavaBeans
C'est un objet Java qui permet aux développeurs de créer
des vues dynamiques
38
Java Server Pages (JSP)
La technologie JSP offre les capacités dynamiques aux servlets tout
en permettant une approche naturelle pour la création de contenus
statiques. Ceci est rendu possible par :
Un langage dédié : les pages JSP sont des documents au format
texte, à l'opposé des classes Java que sont les servlets
La simplicité d'accès aux objets Java : des balises du langage
rendent l'utilisation directe d'objets au sein d'une page très aisée
39
Mise en place d’une JSP
Création de la vue
On crée une page JSP par défaut sous Eclipse (on peut remplacer son
contenu par notre modèle d'exemple (Page_jsp.jsp)
<%@ page pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Page de Test</title>
</head>
<body>
<p>Ceci est une page générée depuis une JSP.</p>
</body>
</html>
40
Java Server Pages (JSP)
Mise en relation de JSP et servlet
...
public void doGet( HttpServletRequest request, HttpServletResponse
response ) throws ServletException, IOException {
[Link]().getRequestDispatcher( "/WEB-INF/Page_jsp.jsp").forward( request,
response );
}
getServletContext() : retourne un objet ServletContext contient un ensemble de méthodes qui
permettent à une servlet de communiquer avec le conteneur de servlet ;
getRequestDispatcher() : retourne un objet RequestDispatcher, : c'est grâce à lui que notre servlet
est capable de faire suivre nos objets requête et réponse à une vue. On précise le chemin complet
vers la JSP, en commençant obligatoirement par un / ;
nous utilisons ce dispatcher pour réexpédier la paire requête/réponse HTTP vers notre page JSP via
sa méthode forward().
41
Java Server Pages (JSP)
La page JSP devient accessible au travers de la servlet
La servlet ne fait que transférer le couple requête reçue et
réponse vers la JSP finale.
42
Transmission des données
issue du serveur (les attributs)
Transmettre des variables de la servlet à la JSP
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException{
String message = "Transmission de variables : OK !";
[Link]( "test", message );
[Link]().getRequestDispatcher( "/WEB-INF/Page_jsp.jsp").forward( request, response );
}
Le principe est d'appeler la méthode setAttribute() de l'objet requête pour y enregistrer
un attribut. Cette méthode prend en paramètre le nom que l'on souhaite donner à
l'attribut suivi de l'objet lui-même.
L'attribut créé est une chaîne de caractères (un objet String) nommé test lors de son
enregistrement dans la requête
Côté vue, c'est par ce nom d'attribut que vous pourrez accéder à votre objet
43
Transmission des données
issue du serveur (les attributs)
Comment récupérer et afficher l'objet côté vue :
<%@ page pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test</title>
</head>
<body>
<p>Ceci est une page générée depuis une JSP.</p>
<p>
<% String attribut = (String) [Link]("test");
[Link]( attribut );
%>
</p>
</body>
</html>
44
Transmission des données
issues du client (les
paramètres)
Paramètres transmis au serveur directement via l'URL peuvent être de
type <!--
: URL sans paramètres -->
/[Link]
<!-- URL avec un paramètre nommé 'cat' et ayant pour valeur
'java‘ -->
/[Link]?cat=java
<!-- URL avec deux paramètres nommés 'lang' et 'admin', et
ayant
pour valeur respectivement 'fr' et 'true' -->
/[Link]?lang=fr&admin=true
45
Transmission des données
issues du client (les
paramètres)
Récupération des paramètres par le serveur
public void doGet( HttpServletRequest request, HttpServletResponse
response ) throws ServletException, IOException{
String paramAuteur = [Link]( "auteur" );
String message = "Transmission de variables : OK ! " + paramAuteur;
[Link]( "test", message );
[Link]().getRequestDispatcher(
"/WEB-INF/Page_jsp.jsp").forward( request, response );
}
[Link]
Pour tester
String parametre = [Link]( "auteur" );
[Link]( parametre );
En y ajoutant a notre page jsp
46
Le JavaBean
Un JavaBean (bean) désigne un composant réutilisable
Il est construit selon certains standards, définis dans les
spécifications de la plate-forme du langage Java
Son utilisation ne requiert aucune bibliothèque
Un bean est un simple objet Java qui suit certaines
contraintes, et représente généralement des données du
monde réel
47
Le JavaBean
Un bean est conçu pour être paramétrable
Les propriétés (de type primitif ou objet) permettent de paramétrer le
bean, en y stockant des données
Un bean est conçu pour pouvoir être persistant
La sérialisation est un processus qui permet de sauvegarder l'état
d'un bean, et donne ainsi la possibilité de le restaurer par la suite
Un bean est un composant conçu pour être réutilisable
Ne contenant que des données ou du code métier, un tel composant
n'a en effet pas de lien direct avec la couche de présentation
48
Le JavaBean
Un bean est conçu pour être paramétrable de manière
dynamique
L'introspection est un processus qui permet de
connaître le contenu d'un composant (attributs,
méthodes et événements) de manière dynamique, sans
disposer de son code source
49
La structure de JavaBean
Un bean :
doit être une classe publique ;
doit avoir au moins un constructeur par défaut, public et sans paramètres. Java
l'ajoutera de lui-même si aucun constructeur n'est explicité ;
peut implémenter l'interface Serializable, il devient ainsi persistant et son état
peut être sauvegardé ;
ne doit pas avoir de champs publics ;
peut définir des propriétés (des champs non publics), qui doivent être
accessibles via des méthodes publiques getter et setter, suivant des règles de
nommage.
50
Exemple 1 de JavaBean
/* Cet objet est une classe publique */
public class MonBean{
/*ne possède aucun constructeur, Java lui assigne un par défaut public et sans
paramètre. */
private String proprieteNumero1;
private int proprieteNumero2;
/* Les propriétés de l'objet sont accessibles via des getters et setters publics */
public String getProprieteNumero1() {
return this.proprieteNumero1;
}
public int getProprieteNumero2() {
return this.proprieteNumero2;
}
public void setProprieteNumero1( String proprieteNumero1 ) {
this.proprieteNumero1 = proprieteNumero1;
}
public void setProprieteNumero2( int proprieteNumero2 ) {
this.proprieteNumero2 = proprieteNumero2;
}
} 51
Exemple 2 de JavaBean
package [Link];
public class Etudiant {
private String nom;
private Stringprenom;
public String getNom() {
return [Link];
}
public String getPrenom() {
return [Link];
}
public void setNom( String nom ) {
[Link] = nom;
}
public void setPrenom( String prenom ) {
[Link] = prenom;
}
}
52
Où placé le code JavaBean
Pour la création de bean :
Il doit être placé dans le répertoire des sources "src" de notre projet web, de
préférence dans un package à préciser
Il va falloir modifier le Build Path de notre projet :
Clic droit sur le dossier du projet, sélectionnez "Build Path" puis "Configure Build
Path... "
Sélectionnez alors l'onglet source, puis regardez en bas le champ Default output
folder,
Préciser le chemin vers WEB-INF/classes afin que nos classes, lors de leur
compilation, soient automatiquement déposées dans le dossier pris en compte
par notre serveur d'applications
53
Mise en œuvre de notre bean
...
import [Link];
...
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws
ServletException, IOException{
/* Création et initialisation du message. */
String paramAuteur = [Link]( "auteur" );
String message = "Transmission de variables : OK ! " + paramAuteur;
/* Création du bean */
Etudiant premierBean = new Etudiant();
/* Initialisation de ses propriétés */
[Link]( "Ali" );
[Link]( "Adoum" );
/* Stockage du message et du bean dans l'objet request */
[Link]( "test", message );
[Link]( "etudiant", premierBean );
/* Transmission de la paire d'objets request/response à notre JSP*/
[Link]().getRequestDispatcher( "/WEB-INF/[Link]").forward( request,
response );
}
54
Mise en œuvre de notre bean
<%@ page pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head> <meta charset="utf-8" /> <title>Test</title> </head>
<body>
<p>Ceci est une page générée depuis une JSP.</p>
<p> <% String attribut = (String) [Link]("test"); [Link]( attribut );
String parametre = [Link]( "auteur" );
[Link]( parametre );
%> </p>
<p> Récupération du bean :
<%
[Link] notreBean = ([Link])
[Link]("etudiant");
[Link]( [Link]() );
[Link]( [Link]() );
%></p>
</body>
</html>
55
Syntaxe des balises JSP
Balises de commentaire :
Exemple :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Exemple</title>
</head>
<body>
<%-- Ceci est un commentaire JSP, non visible dans la page HTML
finale --%>
<!-- Ceci est un simple commentaire HTML. -->
<p>Ceci est un simple texte.</p>
</body>
</html>
56
Syntaxe des balises JSP
<%! et %>.
Balises de déclaration
<%! String chaine = " ma chaine."; %>
Balises de scriptlet
Sert à inclure du code Java au sein de vos pages
<form action="/tirage" method="post">
<%
for(int i = 1; i < 3; i++){
[Link]("Numéro " + i + ": <select name=\"number"+i+"\">");
for(int j = 1; j <= 10; j++){
[Link]("<option value=\""+j+"\">"+ j + "</option>");}
[Link]("</select><br />"); }
%>
<br />
<input type="submit" value="Valider" />
</form>
57
Les directives JSP
Les directives JSP permettent :
d'importer un package ;
d'inclure d'autres pages JSP ;
d'inclure des bibliothèques de balises
de définir des propriétés et informations relatives à une page JSP
Les directives contrôlent comment le conteneur de servlets va gérer le JSP
Il en existe trois : taglib, page et include
Elles sont toujours comprises entre les balises <%@ et %>
58
Les directives JSP
Directive taglib
Le code ci-dessous inclut une bibliothèque personnalisée nommée maTagLib :
<%@ taglib uri="[Link]" prefix="tagExemple" %>
Directive page
La directive page définit des informations relatives à la page JSP
Voici par exemple comment importer des classes Java :
<%@ page import="[Link], [Link]" %>
59
Les directives JSP
Directive include <%@ include file="[Link]" %>
Action standard include
Permet d'inclure du contenu de manière "dynamique". Le contenu sera ici
chargé à l'exécution, et non à la compilation comme c'est le cas avec la
<%-- L'inclusion dynamique
directive précédente : d'une page fonctionne par URL relative : --%>
<jsp:include page="[Link]" />
<%-- Son équivalent en code Java est : --%>
<% [Link]( "[Link]" ).include( request,
response ); %>
<%-- Et il est impossible d'inclure une page externe comme ci-dessous : -->
<jsp:include page="[Link] />
60
La portée des objets
La portée des objets (visibilité), définit tout simplement leur durée de
vie
Les objets sont accessibles via l'objet HttpServletRequest et ne sont
visibles que durant le traitement d'une même requête
Ils sont créés par le conteneur lors de la réception d'une requête HTTP,
et disparaissent dès lors que le traitement de la requête est terminé.
61
La portée des objets
Il existe au total quatre portées différentes dans une application :
page (JSP seulement) : les objets dans cette portée sont uniquement
accessibles dans la page JSP en question ;
requête : les objets dans cette portée sont uniquement accessibles
durant l'existence de la requête en cours ;
Session : les objets sont accessibles durant l'existence de la session
en cours;
application : les objets dans cette portée sont accessibles durant toute
l'existence de l'application.
62
La JSTL : Définition
C’est une bibliothèque regroupant des balises implémentant des
fonctionnalités à des fins générales , communes aux applications
web
Par exemple la mise en place de boucles, de tests conditionnels , le
formatage des données ou encore la manipulation de données XML
Son objectif est de permettre au développeur d'éviter l'utilisation de
code Java dans les pages JSP, et ainsi de respecter le découpage en
couches recommandé par le modèle MVC
63
La JSTL : Avantages
1. La lisibilité du code produit
Comparons les deux codes (une boucle dans une JSP en java puis en JSTL)
Boucle avec une scripte java
La même boucle avec des tags JSTL
64
La JSTL : Avantages
La boucle réalisée est nettement plus lisible ; elle ne fait plus
intervenir d'attributs et de méthodes Java comme size(), get() ou
encore des déclarations de variable, ni de types d'objets (List,
ArrayList, Date, etc.), mais uniquement des balises à la syntaxe
proche du XML qui ne gênent absolument pas la lecture du code et de
la structure de la page
la bibliothèque de balises (de tags) utilisée, indiquée par le préfixe c:,
est la bibliothèque Core
65
La JSTL : Avantages
2. Moins de code à écrire
L'utilisation des balises issues des bibliothèques standard réduit la
quantité de code à écrire
La syntaxe de nombreuses actions est simplifiée et raccourcie en
utilisant la JSTL
L'usage des scriptlets (code Java entouré de <% %>) est fortement
déconseillé, depuis l'apparition des TagLibs (la JSTL) et des EL
66
La JSTL : Avantages
3. Pas de codes de Java directement dans JSP
La vue (JSP) ne doit se consacrer qu'à l'affichage
Ne pas avoir à déclarer de méthodes dans une JSP,
Ne pas modifier directement des données depuis une JSP, ne pas y
insérer de traitement métier, …
Avec les tags JSTL, la séparation est bien plus nette
Écrire du code Java directement dans une JSP rend la maintenance d'une
application extrêmement compliquée, et réduit fortement son évolutivité.
67
La JSTL : Les Versions
La JSTL a fait l'objet de plusieurs versions :
JSTL 1.0 pour la plate-forme J2EE 3, et un conteneur JSP 1.2 (ex:
Tomcat 4) ;
JSTL 1.1 pour la plate-forme J2EE 4, et un conteneur JSP 2.0 (ex:
Tomcat 5.5) ;
JSTL 1.2, qui est partie intégrante de la plate-forme Java EE 6, avec
un conteneur JSP 2.1 ou 3.0 (ex: Tomcat 6 et 7).
68
La JSTL : Configuration
la JSTL contient nativement plusieurs bibliothèques, et Core est l'une
d'entre elles
C'est l'archive jar ([Link]) de la JSTL tout entière qu’il faut devoir
ajouter au projet
69
La JSTL : Configuration
Le tag est issu d'une bibliothèque (la JSTL), il est nécessaire de préciser à
Eclipse où ce tag est réellement défini
Dans le paramètre uri se trouve le lien vers la définition de la bibliothèque
dans le paramètre prefix se trouve l'alias utilisé dans la page JSP pour faire
appel aux balises de la bibliothèque
Cela signifie que si souhaite appeler le tag if de la bibliothèque Core, on dois
écrire <c:if>. Si on entre "core" dans le champ prefix de la directive au lieu de
"c", j'aurais alors dû écrire <core:if>.
70
La JSTL : Configuration
Exemple :
Un exemple simple : il s 'agit ici d'un tag JSTL issu de la bibliothèque
Core, permettant d'afficher du texte dans une page
71
La JSTL : tags
Tag Description
<c:out > Identique à <%= ... >, mais pour les expressions.
<c:set > Affecte le résultat d'une expression à un 'scope'
<c:remove > Efface une variable (depuis un scope, si défini).
<c:catch> Gère les exceptions 'Throwable' qui surviennent dans le contenu du tag.
<c:if> Tag permettant de traiter une condition (if).
<c:choose> Tag permettant de gérer un ensemble de conditions exclusives (identique
à switch/break).
<c:when> Sous-tag de 'choose' pour traiter une condition.
72
La JSTL : tags
<c:otherwise > Sous-tag de 'choose' pour traiter tout autre cas que ceux indiqués dans 'when'.
<c:import> Affecte le contenu d'une page pointée par une URL à une variable.
<c:forEach > Permet de faire une boucle sur tout ce qui est 'Iterable' ou tableau.
<c:forTokens> Boucle sur une chaine possédant un séparateur défini (exemple
'chaine1,chaine2,chaine3').
<c:redirect > Redirige l'utilisateur vers une nouvelle URL.
<c:url> Crée une URL absolue en fonction du contexte de la servlet, avec des paramètres ou non.
<c:param> Sous-tag de 'URL' permettant d'ajouter (ou remplacer) un paramètre à la Query
String.
73
PL ANNING MARKETING DESIGN STRATEGY L AUNCH
Synergize Disseminate Coordinate e- Foster holistically Deploy strategic
scalable e- standardized business superior networks with
commerce metrics applications methodologies compelling e-
business needs
74
75