J2EE: CR ATION DES
APPLICATIONS WEB D'ENTREPRISE
BAS ES COMPOSANTS
Pr. Youn s EL BOUZEKRI EL IDRISSI
AU: 2016/2017
R F RENCES (AVALABLE 4 STUDENTS)
Beginning Java EE, de Antonio Goncalves Apress
Edition 2013.
J2EE Developer's Handbook de Paul J. Perrone, Venkata
S.R. "Krishna" R. Chaganti et Tom Schwenk. Felleuitter
edition 2003;
EJB & JSP: Java On The Edge, Unlimited Edition, de
Lou Marco, 2010;
JEE guide de d veloppement d'application Web en Java,
de Jerome Laafousse, 2009.
2
PLAN DU COURS
Introduction
L'architecture Java Entreprise Edition
Les composants
Les Conteneurs JEE
Les services et les API
Le serveur Java Tomcat
Le framework Struts
Le framework Hibernate
Les EJBs
3
LES PILIERS D'UNE APPLICATION
Pr sentation
Prise en charge des jeux d'affichage (affichage HTML en
cas du web)
M tier
Appeler aussi couche applicative, tape o l'ex cution des
application se d roule (la g n ration du code HTML en cas
du Web).
G rer les requ tes SQL et les r sultats
Persistance
Propre au serveur de BD: Gestion de la correspondance
entre le serveur m tier avec celui de la base de donn es.
4
MOD LE CENTRALIS
Tout est sur la m me machine
Pr sentation
M tiers
Persistance
5
A DEUX NIVEAUX
Client / serveur de base, avec 2 l ments
Client : pr sentation, interface utilisateur
Serveur : partie persistance, gestion physique des donn es
Les services m tier / la partie applicative peuvent tre
Soit enti rement cot client, int gr s avec la pr sentation
La partie serveur ne g re que les donn es
Ex : application acc dant une BDD distante
Soit enti rement cot serveur
L'interface utilisateur peut m me tre ex cut e sur le serveur
Fonctionnement mode terminal / mainframe
Soit d coup s entre la partie serveur et la partie client
6
DEUX NIVEAUX (2-TIERS)
Pr sentation
M tiers
Persistance
Client
Serveur
Pr sentation
M tiers
Persistance
7
DEUX NIVEAUX: IL EST AUSSI ACCEPTABLE
Pr sentation
Pr sentation
M tiers
Persistance
Client
Serveur
Pr sentation
M tiers
M tiers
Persistance
8
TROIS NIVEAUX (3-TIERS)
Les 3 principaux tiers s'ex cutent chacun sur une machine
diff rente:
Pr sentation
Machine client
Applicatif / m tier
Serveur d'applications
Persistance
Serveur de base de donn es
Pr sentaion
M tiers
Persistance
Client
Serveur
d'application
Serveur de base
de donn es
9
N NIVEAUX (N-TIERS)
Par rapport 3-tiers: ajoute des couches suppl mentaires;
Pr cis ment la couche m tier n'est pas atomique
(monolithique), elle est compos e d'un ensemble de
services;
Interaction horizontale:
Les services (application) m tiers peut interagir avec d'autres
services m tiers (composition de services);
Interaction verticale;
Les services m tiers peuvent utiliser des services techniques (non
m tiers) :
R pertoire (LDAP)
Messagerie;
S curit
10
NB: Chaque service correspond un niveau: N niveaux
N NIVEAUX: DISCUSSION
Int r ts d'avoir plusieurs services / couches (3 ou plus)
R utilisation de services existants;
D couplage des aspects m tiers et techniques et des services
entre eux : meilleure modularit ;
Facilite l' volution : nouvelle version de service;
Facilite passage l' chelle : volution de certains services:
Permet de faire voluer les services un par un sans modification du
reste de l'application.
Inconv nients
En g n ral, les divers services s'appuient sur des technologies
tr s vari es : n cessit de g rer l'h t rog n it et
l'interop rabilit :
Utilisation de framework / outils suppl mentaires.
Les services tant plus d coup s et distribu s, pose plus de
11
probl mes li s la distribution
N-TIERS AVEC LE WEB
12
TIERS CLIENT
Un navigateur
Interpr te les pages HTML ou XML;
Ex cute les applets ou du code JavaScript;
Poss de diff rents niveaux de s curit configurable;
Peut interagir avec un serveur d application via HTTP.
Application cliente
Diff rente quun navigateur, elle ne se base pas sur HTTP
Communique via RPC, Corba, RMI,JRMP, IIOP, TCP/IP, ...
13
TIERS WEB: SERVEUR
Fourni du contenu Web (HTML, &)
Communique via HTTP, ...
Traite des requ tes: CGI par exemple
Peut tre un proxy frontal d un serveur d applications:
Ex: Apache, Tomcat
14
TIERS D'APPLICATION: SERVEUR
Permettent d'ex cuter des composants;
Conformes une technologie, JEE par exemple;
Ind pendants du visuel et de l acc s aux donn es;
D ployable dans un environnement:
Permettant une large possibilit d extension de puissance;
Saffranchissant du lieu.
Le composant le plus volu est un Enterprise Java
Bean ;
Ex: Jonas, GlassFish, Apache Geromino, WebSpher,
WebLogic&.
15
TIERS DONN ES: PERSISTANCE
Stockage et manipulation des donn es de l'application
Plusieurs supports physiques:
Fichiers binaires, textes de base ;
Fichiers XML;
Une base de donn es ou un ensemble de bases de donn es.
Mode d'emploi:
N cessit d'envoyer distance des requ tes (types SQL) et
d'en r cup rer les r sultats.
Deux proc dures:
Soit c'est natif dans le langage utilis (ex : PHP);
Soit on passe par des frameworks ou des API d di s.
16
PERSISTANCE: G N RALIT S
APIs de persistance:
RDA (Remote Data Access) de l'ISO;
ODBC (Open Data Base Connectivity) ;
JDBC (Java Data Base Connectivity) ;
Fonctionnement g n ral:
Gestion de requ tes SQL mais avec ind pendance du SGBDR utilis
(mySQL, PostgreSQL, Oracle ...).
En g n ral, seule la phase de connexion au SGBDR est sp cifique.
Frameworks de haut niveau
Ex: Hibernate (Sun, J2EE):
On d finit de mani re abstraite (via XML ) la structure des donn es
manipuler;
L'outil transforme des donn es relationnelles vers des objets;
17
L'outil fait en interne le lien avec le support et les objets persistants.
SERVEUR D'APPLICATIONS
Services d'administration:
D ploiement des composants (ex: servlets) ;
Structuration en serveur, application;
Gestion d'annuaires (ex: JNDI);
Gestion des sources de donn es.
Publicité
Mod le de s curit applicable:
Au niveau de chaque composant;
Au niveau de chaque m thode.
18
J2EE: JAVA 2 PLATFORM ENTREPRISE EDITION
Il s'agit d'un standard et un ensemble de sp cification;
Les applications doivent respecter le standard;
Les applications sont d ployables dans tout
environnement (serveur) respectant la sp cification
J2EE;
Composants logiciels : EJB;
Applications orient es Web : JSP, Servlet;
Communication distance : Java RMI, IIOP, JMS
(communication par message), Web Services;
Gestion donn es distantes : JDBC, JPA (Java Persistance API);
Gestion d'annuaires (type LDAP) : JNDI;
Transactions : JTA.
19
J2EE ET LE N-TIERS
Pr sentation:
Avec client l ger (Html) ou client lourd (API).
Interaction avec la partie applicative sur le serveur:
Via JSP / Servlet pour un client l ger:
S'occupe de la logique de pr sentation.
Direct si client lourd (via un middleware type RMI).
Logique applicative:
R alis e par composants EJB;
Communication via Hibernate ou JDBC pour attaquer
BDD distante.
20
J2EE: 3-TIERS ET N-TIERS
Client lours
Client leger
Application
Conteneur
d'application
Base de
donn es
21
Serveur de BD
JSP/Servlet
Conteneur Web
Application
Conteneur
d'application
Serveur J2EE
Base de
donn es
Serveur de BD
21
J2EE: COMMUNICATION DE SERVEUR
Ref: www.oracle.com
22
APPLICATION J2EE 3-TIERS
Ref: www.oracle.com
23
APPLICATION J2EE 4 ET PERSISTANCE-TIERS
Ref: www.oracle.com
24
J2EE: EXEMPLE DE SERVEUR
GlassFish
Ref http:// / ifsic-DIC2-ARC-LSI-Architecture JEE / p9 (eric hebert
25
Ref: www.oracle.com
26
LES COMPOSANTS D'UNE APPLICATION J2EE
Ref: http://www.cmg.org/measureit/issues/mit18/m_18_6.html
27
ARCHITECTURE D'UNE APPLICATION J2EE
R f: http://www.cmg.org/measureit/issues/mit18/m_18_6.html
28
PROGRAMMATION C T SERVEUR
G N RATION DES PAGES HTML
Servlet & JSP
29
OBJECTIF: PAGES HTML DYNAMIQUES
G n ration du code HTML partir du serveur
Parfois accompagn du style de la page;
Visant un client l ger: Navigateur Web;
Envoi et r cup ration des donn es partir du navigateur;
Proc dures:
Ex cuter un code diff rent sur une plateforme afin de
produire du code HTML;
L'affichage ob ira plusieurs crit res:
Selon le type de donn es;
Selon le r le de l'utilisateur;
30
G N RATION DES PAGES DYNAMIQUES: APPROCHES
Ex cution d'un programme:
Un programme complet s'ex cute et g n re du contenu
HTML;
La page est enti rement dynamique;
Plus pr cis ment : les partie statiques existent mais elles sont
int gr es dans le code, pas crites directement en HTML standard;
Le navigateur demande l'ex cution d'un programme et
r cup re le code HTML g n r :
La demande d'ex cution est transparente : utilise URL standard.
31
G N RATION DES PAGES: APPROCHES II
Langages de scripts
Double type de contenu dans une page HTML
Partie statique : balises HTML standards avec contenu textuel;
Partie dynamique : du code crit dans un langage de script:
Ce code g n re du code HTML standard.
La page entrem le les parties statiques et dynamiques;
Quand un navigateur demande le contenu d'une page:
La partie dynamique est ex cut e et remplac e par le HTML
g n r ;
Le navigateur du client re oit donc uniquement du code HTML.
32
G N RATIONS DES PAGES: TECHNOLOGIES
Langage de script:
PHP;
Asp.net;
JSP.
Ex cution d'un programme
CGI;
Servlet.
33
TECHNOLOGIES
Protocole de communication:
HTTP: le client invoque l'ex cution des programmes dans
le serveur via ce protocole;
Serveur HTTP &/ou serveur d'application (conteneur)
Serveur HTTP;
Apache par exemple;
Conteneur d'application (eventuels EJBs):
GlassFish;
Tomcat &/ou Geronimo.
34
LES SERVLETS
Servlet est un programme Java avec des caract ristiques
particuli res:
Accessible par une URL donn e:
D tecter et r pondre des requ tes de l'utilisateur;
Chercher et invoquer le traitement correspondant;
G n rer une page Html et y mettre la r ponse;
HTML
35
SERVLET II
Applet: programme Java s'ex cutant au niveau client;
Servlet: Programme Java s'ex cutant au niveau serveur;
Classe Java avec ces m thodes et attributs;
L'ex cution et l'interactions diff rentes d'un objet Java
standard:
Pas d'appel de constructeur, pas de main();
A la cr ation de la servlet par le serveur d'ex cution:
Appel par le serveur d'ex cution de la fonction init(ServletConfig);
On peut y faire les actions qu'on ferait dans un constructeur;
Quand la servlet est d truite:
Appel par le serveur d'ex cution de destroy();
A red finir si on veut effectuer certaines actions la suppression de
36
la servlet.
SERVLET: REQU TE-R PONSE
Le client envoie les requ tes standards du HTTP:
Post, Get, Put, Delete&
Au niveau serveur chaque m thode re ue, son homologue
dans la Servlet est ex cut e:
Exemple: Requ te Post trouve doPost() dans la Servlet;
Les m thodes doXXX h ritent de la classe HttpServlet;
Les m thodes doXXX sont red finies pour y placer le
code ex cuter par la Servlet;
En pratique, pas besoin de red finir toutes les m thodes
(GET et POST minimum).
37
SERVLET: EXEMPLE GET
doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
request : contient la description de la requ te du client;
response : utiliser pour envoyer la r ponse au client;
Toutes les m thodes doXXX(...) ont la m me signature.
38
HTTPSERVLETREQUEST REQUEST
Initialis par l'appel du client (le navigateur);
Donn es / informations sur la requ te envoy e par le
client;
On peut y r cup rer notamment:
Valeurs entr es pour un formulaire;
Une session pour g rer un tat d di chaque client;
Cookies du client envoy s avec la requ te;
Informations sur l'URL utilis e pour l'appel de la Servlet;
Login de l'utilisateur s'il s'est identifi .
39
HTTPSERVLETRESPONSE RESPONSE
A initialiser et utiliser par la Servlet pour g n rer le
r sultat envoyer au navigateur client;
D finir le type MIME des donn es envoy es
G n ralemet du code HTML
response.setContentType("text/html;charset=UTF-8");
R cup rer le flux de sortie pour envoyer les donn es:
PrintWriter getWriter()
Flux texte, typiquement pour du HTML
ServletOutputStream getOutputStream
Flux binaire pour des images, vid os ...
Ajouter/envoyer des donn es cot client
Cr er ou modifier un nouveau cookie;
40
Publicité
SERVLET: CARACT RISTIQUES
Unicit d'une Servlet:
Une Servlet n'est cr e qu'en une seule instance.
Si plusieurs clients acc dent l'URL d'une m me Servlet:
Appelle les m thodes sur cette instance unique.
Une Servlet poss de des attributs donc un tat:
Cet tat est permanent et conserv (tant que la Servlet
existe).
Il est acc d / modifi par tous les clients : tat global.
41
SERVLET: CARACT RISTIQUES II
Pour chaque client acc dant la Servlet, le serveur lui
contribue un tat (temporaire ou permanent):
Temporaire:
Pour chaque client, une session est cr e;
On peut lui associer des donn es via des couples cl (chaine) /
objet ;
La session a une dur e de vie configurable;
Exemple typique d'utilisation d'une session Panier d'un
utilisateur sur un site de vente en ligne : conserve les produits
choisis par l'utilisateur pendant son parcours sur le site.
Permanent:
Cr ation des cookies c t client.
42
SERVLET: STRUCTURE AVEC DOGET
import javax.servlet.*;
import javax.servlet.http.*;
public class SimpleServlet extends HttpServlet {
public void doGet(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
try { out.println("<html>");
out.println("<body>");
out.println(<h1> Coucou </h1>);
out.println("</body>"); out.println("</html>");
}}
public void destroy() {&}
43
SERVLETS: CR ATION
Une Servlet peut tre charg e :
automatiquement lors du d marrage du serveur Web;
lorsque le premier client demande les services de la
Servlet.
Une fois charg es, les servlets restent actives dans
l'attente d'autres requ tes du client;
La Servlet peut utiliser toutes les fonctions du langage
Java lors de la cr ation de la r ponse;
Elle peut galement communiquer avec des ressources
externes tels que des fichiers ou des bases de donn es, ou
avec d'autres API (application ou composant Java).
44
Exemple: d'autres Servlets.
SERVLET: OPPORTUNIT S
Les servlets ex cutent un grand nombre de fonctions,
par exemple:
Une Servlet peut cr er et renvoyer une page Web HTML
compl te dont le contenu dynamique d pend de la nature
de la requ te du client;
Une Servlet peut simplement cr er une partie d'une page
Web HTML qui est int gr e une page HTML statique
existante;
Une Servlet peut traiter les connexions avec plusieurs
clients en acceptant les donn es en entr e de plusieurs
clients et en diffusant ces derniers des r sultats.
45
SERVLET: AVANTAGES
Les servlets sont ind pendantes des OS (Unix ou NT) et
des serveurs Web (Apache, IIS etc.) ;
Peuvent produire de l'HTML c t client (notamment
pour la consultation de la base), sur la base d'http;
Peuvent dialoguer avec des applets Java c t client avec
un protocole objets distribu s de type RMI;
S'appuient sur un langage vraiment standard : Java (et
non pas Java script ou Visual Basic);
Par rapport aux applets, le client est all g ;
Par rapport aux CGI, les servlets prennent en charge les
connexions des utilisateurs en multi-thread, qui nest
pas le cas des CGI.
46
SERVLET VS CGI
La plus grande diff rence entre les CGI et les servlets
est la performance;
Il n'y a qu'une seule machine virtuelle Java qui tourne
sur le serveur;
La Servlet est plac e en m moire une fois qu'elle est
appel e. Elle n'est pas remise en m moire jusqu' ce que
la Servlet change;
Une Servlet dont le code a t modifi peut tre r activ e
(c'est dire replac e en m moire) sans red marrer le
serveur ou l'application.
47
SERVLET VS CGI II
Req. CGI1
Req. CGI2
Req. CGI1
Processus Fils pour CGI1
Processus
Principal
Processus Fils pour CGI2
CGI
Processus Fils pour CGI1
Req.
servlet1
Req.
servlet2
Req. servlet1
Processus Principal
Thread
Thread
servlet1
Les servlets
Thread
servlet2
48
SERVLET: PERFORMANCE
Les servlets r sident en m moire, de ce fait leur
ex cution est tr s rapide;
L'information statique peut tre partag e par plusieurs
invocations de la Servlet:
Possibilit de partager cette information entre plusieurs
utilisateurs.
Les servlets sont modulaires, chaque Servlet peut
accomplir une tache sp cifique et ainsi vous pouvez les
rendre communicantes.
Moins il y a de calcul faire c t client, plus lapproche
servlet est int ressante.
49
L'INTERFACE SERVLET
java.lang.Object
|
+--javax.servlet.GenericServlet
|
+--javax.servlet.http.HttpServlet
Toutes les servlets implantent l'interface Servlet:
javax.servlet.Servlet
soit directement ou bien via une classe qui implante cette interface,
comme:
javax.servlet.GenericServlet
(paquetage javax.servlet)
javax.servlet.http.HttpServlet
(paquetage javax.servlet.http)
particuli rement d sign e pour des requ tes et r ponses HTTP
50
L'INTERFACE SERVLET
cette interface poss de les m thodes pour :
initialiser la servlet : init()
recevoir et r pondre aux requ tes des clients : service()
d truire la servlet et ses ressources : destroy()
la servlet est cr e puis initialis e (init() )
cette m thode nest appel e par le serveur quune seule fois lors du
chargement en m moire par le moteur de servlet.
Le service du client est impl ment (service() )
cette m thode est appel e automatiquement par le serveur chaque
requ te de client.
la servlet est d truite (destroy() )
cette m thode nest appel e par le serveur quune seule fois la fin
permet de lib rer des ressources (allou es par init() ).
51
UNE SERVLET WEB : HTTPSERVLET
Pour faciliter le traitement particulier des serveurs Web,
la classe Servlet est affin e en
javax.servlet.http.HttpServlet
2 m thodes remplacent service() de la classe m re :
doGet() : pour les requ tes Http de type GET;
doPost() : pour les requ tes Http de type POST.
la classe servlet doit obligatoirement contenir lune ou lautre de ces 2
m thodes red finies, choisies selon le mode denvoi du formulaire
HTML qui l'ex cute;
service() de HttpServlet appelle automatiquement la bonne
m thode en fonction du type de requ tes Http .
52
SERVLET: GESTION DES SESSIONS
Service avec/sans tat: Le serveur ne garde pas une
tra abilit sur la navigation du client:
Parfois, dans quelques applications il est tr s utile de
reconnaitre l'utilisateur afin de poursuivre son activit sur
le serveur.
Deux techniques:
Sessions;
Cookies.
53
SERVLET: GESTION DES SESSIONS II
Champ cach : Les serveur peut inclure des informations
cach es dans un formulaire afin d'identifier la
navigation du client:
<input type="hidden" name="sessionid" value="2013">
Le nom et la valeur de l'entr e sont automatiquement
inclus dans la m thode post ou get;
A chaque fois le navigateur envoie une requ te, le serveur
a la possibilit de suivre la navigation.
Inconv nient: Le cas du href le serveur ne pourra pas
poursuivre la navigation.
54
SERVLET: GESTION DES SESSIONS III
HttpSession: L'API Servlet fournit une interface
HttpSession qui permet de garder trace de l'utilisateur
travers plusieurs pages dans le m me site.
Il y a aussi la possibilit de stocker des informations
Publicité
propos de l'utilisateur dans le site (meta-donn es).
Le conteneur de Servlet utilise cette interface pour cr er
une session entre un client et serveur http.
La session persiste durant une p riode dans le temps (
d finir par le d veloppeur), travers plusieurs pages et
durant plusieurs connexions.
Exemple:
HttpSession session = request.getSession();
55
SERVLET: GESTION DES SESSIONS IV
Quelques m thodes utiles:
Request.getSession(true) // pr la cr ation de la session
getAttribute(String name)
Enumeration getAttributeNames()
long getCreationTime()
String getId()
long getLastAccessedTime()
boolean isNew()
setAttribute(String name, Object value)
56
SERVLET: GESTION DES SESSIONS V
Exemple:
doGest&..
HttpSession session = request.getSession(true);
Date createTime = new Date(session.getCreationTime());
Date lastAccessTime = new Date(session.getLastAccessedTime());
Int visitCount =0;
String visitCountKey = "visitCount";
String userIDKey = "userID";
String userID = "younes";
if (session.isNew()){
title = "Welcome to my website";
session.setAttribute(userIDKey, userID);
else {
}
visitCount = (Integer)session.getAttribute(visitCountKey);
visitCount = visitCount + 1;
userID = (String)session.getAttribute(userIDKey); }
session.setAttribute(visitCountKey, visitCount);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
57
SERVLETS: GESTION DES COOKIES
Un cookie: fichier texte stock c t client enregistrant
toutes les interactions avec le serveur;
Les informations d'un cookie aide le serveur s'adapter
un client particulier;
C'est le serveur qui cr e le cookie dans le client. Lors d'une
connexion le client envoie le cookie au serveur.
Plusieurs caract ristiques:
Les informations de navigation;
Les donn es saisies par le client dans un formulaires;
Dur e de vie d finir par le serveur&
58
SERVLETS: GESTION DES COOKIES II
Utiliser les fonctions de l API des servlets&
cr er un cookie : classe Cookie,
crire/lire un cookie : addCookie(mycookie),
getCookies(),
positionner des attributs dun cookie : mycookie.setXxx(&)
Exemple d'envoi d'un cookie :
...
String nom = request.getParameter("nom");
Cookie myCookie = new Cookie("nom", "c le nom de
mon cookie");
...ici positionner des attributs si on le d sire
response.addCookie(myCookie);
...
59
SERVLETS: GESTION DES COOKIES III
Quelques m thodes utiles:
getValue/setValue;
getName/setName ;
getComment/setComment;
getMaxAge/setMaxAge :
d lai restant avant expiration du cookie (en seconde) par
d faut : pour la session courante.
getPath/setPath :
r pertoire o s'applique le cookie dir. courant ou pages
sp cifiques.
60
ANATOMIE D'UNE APPLICATION JAVA WEB
61
DESCRIPTEUR DE D PLOIEMENT: WEB.XML
Il s'agit d'un fichier situ dans le r pertoire WEB-INF du
r pertoire racine de l'application web.
Il contient les caract ristiques et les param tres de
l'application.
la description des servlets utilis es;
les diff rents param tres d'initialisation.
Il repr sente un sch ma pour le serveur afin de relier les
Servlets avec leurs compilations et leurs param tres
dans le serveur.
62
SQUELETTE DE BASE DU WEB.XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
...
</web-app>
Toutes les descriptions de l'application sont ins r es
dans la balise <web-app>;
C'est au niveau de cette balise le serveur cherche les
Servlets et leurs param tres.
63
WEB.XML: <WEB-APP>
On y trouve deux balises pour la description de
l'application (pas d'influence technique):
display-name permet de donner un nom l'application. Il s'agit
de description, pour s'y retrouver dans les fichiers;
La balise description permet de fournir une description plus
d taill e. elle est inop rante techniquement parlant.
<web-app>
...
<display-name>Application pr mon stage</display-name>
<description>Cette premi re application web est un exemple
permettant de pr senter le d ploiement d'une webapp.
</description>
...
</web-app>
64
WEB.XML ET LES SERVLETS:
Une Servlet est toujours d clar e entre <servlet> et
</servlet>
On doit affecter un nom chaque Servlet d clar e, dans
une balise servlet-name.
Ce nom n'est pas n cessairement le nom de la classe de la
servlet.
la balise description permet de fournir une information
sur la Servlet;
la balise servlet-class permet de d finir la classe de la
Servlet. La classe doit se trouver dans le r pertoire
WEB-INF/classes de l'application, en respectant les
packages.
65
WEB.XML ET LES SERVLETS II
La balises init-param permet de sp cifier des param tres
d'initialisation pour une servlet.
Des param tres charg s en m me temps que la servlet, et
qu'elle peut r cup rer.
La balise param-name permet de d finir le nom du param tre,
et param-value pour sp cifier la valeur.
L'application peut r cup rer un tel param tre gr ce la
m thode getServletConfig().getInitParameter("random")
La balise load-on-startup demande que la servlet soit charg e
d s le d marrage du serveur (et non lors de sa premi re
sollicitation). Le nombre entier situ l'int rieur de ces balises
repr sente l'ordre de chargement.
66
WEB.XML: MAPPING DES SERVLETS
Le mapping d'une Servlet sert indiquer au serveur
quelle Servlet charger pour tel requ te du client (telle
URL demand e). Rappelons que les URL des servlets
sont relatives l'URL du context (la webapp) auquel
elles appartiennent.
<web-app>
...
<servlet-mapping>
<servlet-name>maservlet</servlet-name>
<url-pattern>/uneservlet</url-pattern>
</servlet-mapping>
...
</web-app>
67
WEB.XML ET LES SERVLETS:
<web-app>
...
<servlet>
<servlet-name>maservlet</servlet-name>
<servlet-class>org.test.servlet.PremiereServlet</servlet-class>
<description>des servlets pr le test</description>
<init-param>
<param-name>random</param-name>
<param-value>org.test.randomizer</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
...
</web-app>
68
SERVLET: LIMITATION
Par rapport aux applets, interface graphique utilisateur
limit e HTML;
Solution d'autre framework de pr sentation (JSF par
exemple);
69
JSP: JAVA SERVER PAGE
70
VUE D'ENSEMBLE
La sp cification J2EE permet aux utilisateurs de
d velopper des pages statiques et dynamiques:
La partie statique: pure Html;
La partie dynamique: langage Java.
Deux possibilit s:
API Servlet: du code Java dans lequel on ins re du Html;
API JSP: une page Html dans laquelle on ins re du Java.
71
Y. EL BOUZEKRI EL IDRISSI
Publicité
COMMENT A MARCHE?
Le d veloppeur a la possibilit d'ins rer du code java
dans le fichier Html l'aide des balises pr d finies;
Le moteur des JSP (Serveur d'app) reconnait ces
balises, puis proc de leur compilation et leur
ex cution;
Le serveur traite les balises html et java
diff remment afin de cr er une Servlet quivalente
la JSP, l'ex cution de cette derni re g n re le code
Html quivalent au r sultat.
NB: possibilit aussi de g n rer du code Xml.
72
Y. EL BOUZEKRI EL IDRISSI
CYCLE DE VIE D'UNE JSP
Moteur JSP
Compilation de laJSP
Servlet quivalente
Serveur
Web
Client
73
Y. EL BOUZEKRI EL IDRISSI
EXEMPLE SIMPLE: DATE()
Datecourante.jsp
<html>
<title> Ma JSP</title>
<body>
La date retourn e par la JSP
<% = new Java.util.Date() %>
</body>
</html>
74
Y. EL BOUZEKRI EL IDRISSI
LES BALISES JSP
Toutes les balises JSP doivent tre entre <% %>;
Elles repr sentent les l ments de base pour construire la
Servlet (lors de l'instanciation);
On peut introduire plusieurs instructions Java dans une
balise, comme on peut cr er plusieurs balises Java
ind pendantes;
L'emplacement des balises dans le serveur est le dossier Web,
tandis que, dans une application J2EE est le WebContent
75
Y. EL BOUZEKRI EL IDRISSI
LA SYNTAXE DES BALISES
On distingue cinq types de balise JSP:
Les commentaires:
< -- hello -- >
Scriplets: insertion du code Java:
<% System.out.println("hello"); %>
L'affichage des valeurs:
<%= "hello" > quvalent <% System.out.println("hello"); %>
Balise de d claration globale:
<%! Int compteur; %>
Directives et param tres appliquer sur la JSP:
<%@ page import= "java.util.Date" %>
76
Y. EL BOUZEKRI EL IDRISSI
<%! BALISE %>
L'objectif de cette balise est de d clarer des membres
globaux de la Servlets:
M thodes;
Variables;
Exemples:
<%! Int compteur = 0; %>
<%! Int somme (int a, int b) {
return a+b; ] %>
77
Y. EL BOUZEKRI EL IDRISSI
SCRIPLET <% %>
L'objectif est d'ins rer plusieurs instructions Java
dans la m me balise;
A remarquer que les variables d clar es dans la
Scriplet, leur port ne d passe pas la fermeture de la
balise;
Exemple:
<% int x = "chaine"; for (int i=0; i<10; i++)
out.println(x); %>
78
Y. EL BOUZEKRI EL IDRISSI
<%@ BALISE DES DIRECTIVES %>
L'objectif est le param trage de la page pour la
compilation;
Les directives en jeu:
Page:
Include:
Taglibs
Syntaxe:
<%@directive param=valeur %>
79
Y. EL BOUZEKRI EL IDRISSI
DIRECTIVE: INCLUDE
Permet d'ins rer un fichier texte brut ou une autre
ressource textuelle;
Lors de la compilation, exactement la conversion
vers une Servlet, le moteur JSP inclut le texte
externe;
Il s'agit d'une forme d'entit externe ins rer,
comme si elle faisait partie du fichier:
Exemple:
<%@Include file="c:\partie.txt"] %>
80
Y. EL BOUZEKRI EL IDRISSI
DIRECTIVE PAGE
Contr le des attributs de la page et du Servlet:
Param tres :
contentType type de contenu (text/html);
<%@page contentType="(text/pl ain)"%>
import Classes Java utiliser;
<%@page import="java.util.*"%
errorPage Page afficher en cas derreur;
<%@page errorPage="/erreur.jsp"%>
isErrorPage Si la page est une page derreur;
81
session Si la page fait partie dune session;
Y. EL BOUZEKRI EL IDRISSI
DIRECTIVE PAGE: ISERRORPAGE
Mapage.jsp
<%@page language="Java" contentType="Text/html"%>
<%@page errorPage="/casderreur.jsp"%>
<html>&&..</html>
Errorpage.jsp
<%@page language="Java" contentType="Text/html"%>
<%@page isErrorPage="true"%>
<html>&.
<%=exception.getClass().getName()%><
/html>
82
Y. EL BOUZEKRI EL IDRISSI
DIRECTIVE: TAGLIBS
L'API JSP permet l'utilisateur de d finir des
balises personnalis es (ou une biblioth que de tag)
de la page JSP;
Il s'agit de d finir un comportement personnalis de
la page JSP;
La d claration de la directive Taglib vous permet
l'utilisation de tag personnalis e et un moyen de les
appeler:
URI
Pr fix
83
Y. EL BOUZEKRI EL IDRISSI
DIRECTIVE: TAGLIBS
<%@ taglib uri="uri" prefix="prefixOfTag" >
Exemple; La librairie custlib et le pr fixe mytag
<%@ taglib uri="http://www.example.com/custlib"
prefix="mytag" %>
<html>
<body>
<mytag:hello/>
</body>
</html>
84
Y. EL BOUZEKRI EL IDRISSI
TAGLIB : TUTO
Pour y faire il faut deux tapes:
D claration d'une classe:
D claration de la tag dans fichier tld
mmmmm.tld
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Example TLD</short-name>
<tag>
<name>Hello</name>
<tag-class>com.tutorial.HelloTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;
public class HelloTag extends SimpleTagSupport {
public void doTag() throws JspException,
IOException {
JspWriter out = getJspContext().getOut();
out.println("Hello Custom Tag!");
}
}
85
Y. EL BOUZEKRI EL IDRISSI
DESIGN PATTERN MVC
86
Struts dans votre web application
LE DESIGN PATTERN MVC
Design pattern (mod le patron): Une d marche qui est
propos e, puis utilis e et finalement fait preuve de son
performance:
Son utilisation est tr s recommand e.
MVC: une d marche pour la cr ation des applications,
particuli rement Web dont le contenu est d compos
selon sa nature:
Donn es, leurs pr sentations et la gestion des v nements
envoy s par un utilisateur.
87
Y. EL BOUZEKRI EL IDRISSI
...