Escolar Documentos
Profissional Documentos
Cultura Documentos
Fvrier 2016
Fvrier 2016 | 1
Plan
1.
2.
3.
4.
5.
La plateforme JEE
Les servlets
Java Server Pages
Le Framwork JSF
Les Javabeans
Fvrier 2016
Fvrier 2016 | 2
La plateforme JEE
Introduction
Avantages
La facilit de prise en main des fonctionnalits de cette plateforme,
Pas dintrt recoder des fonctionnalits communes et rcurrentes,
Gain de temps et dargent
Khaoula ADDAKIRI(FP-Ouarzazate )
Fvrier 2016 | 3
La plateforme JEE
Introduction
Java Framework est compos de trois ditions, destines des usages diffrents :
Java Micro Edition ( JME )
Java Micro Edition est prvu pour le dveloppement d'applications embarques,
notamment sur des assistants personnels (PDA) et terminaux mobiles
(tlphone portables, );
Java Standard Edition(JSE)
Java Standard Edition est destin au dveloppement d'applications pour
ordinateurs personnels ;
Java Entreprise Edition(JEE)
Java Enterprise Edition (JEE) : est destin un usage professionnel avec la mise
en uvre de serveurs.
Fvrier 2016 | 4
La plateforme JEE
Introduction
La plateforme JEE
JEE est une norme propose par la socit Oracle, porte par un consortium de
socits internationales, visant dfinir un standard de dveloppement
d'applications d'entreprises multi-niveaux, bases sur des composants.
JEE dsigne l'ensemble constitu des services (API) offerts et de l'infrastructure
d'excution.
JEE comprend:
Les spcifications du serveur d'application : l'environnement d'excution,
Fvrier 2016 | 5
La plateforme JEE
Introduction
Les composants
Les applets,
Les Applications clientes,
Les composants web,
Les composants mtier.
Les services
Les services d'infrastructures,
Les services de communication.
Fvrier 2016 | 6
La plateforme JEE
Les composants
Les applets : Une applet est un programme destin s'excuter dans une
page HTML visualise dans un navigateur. Elles utilisent lAPI Swing pour
fournir des interfaces utilisateurs puissantes.
Les applications clientes : sont des programmes excuts sur un client. Il sagit
le plus souvent dinterfaces graphiques ou de programmes non interactifs qui
ont accs toutes les fonctionnalits de la couche mtier de JEE.
Les composants web : (Servlets et Java Server Pages) sexcutent dans un
conteneur web et rpondent aux requtes HTTP envoyes par les clients web.
Les composants mtier : EJB (Enterprise Java Beans). Il s'agit de composants
spcifiques chargs des traitements des donnes propres un secteur
d'activit (on parle de logique mtier ou de logique applicative) et de
l'interfaage avec les bases de donnes
Fvrier 2016 | 7
La plateforme JEE
Les services
Fvrier 2016 | 8
La plateforme JEE
Les services
Fvrier 2016 | 9
La plateforme JEE
Architecture
Architecture de JEE
Fvrier 2016 | 10
La plateforme JEE
Architecture
Architecture de JEE
La couche prsentation
Fvrier 2016 | 11
La plateforme JEE
Architecture
Architecture de JEE
La couche prsentation
La couche mtier
La couche fonctionnelle ou mtier est en gnral un serveur Web,
Elle
contient
l'essentiel des traitements de donnes
se basant sur des API existantes.
en
Fvrier 2016 | 12
La plateforme JEE
Architecture
Archirecture de JEE
La couche prsentation
La couche mtier
La couche de donnes
La couche de donnes est lie au serveur de bases de donnes (SGBD),
Elle correspond aux informations de l'entreprise stockes :
dans des fichiers,
dans des bases de donnes relationnelles ou XML,
dans des annuaires d'entreprise,
dans des systmes d'information complexes.
Fvrier 2016 | 13
La plateforme JEE
Architecture
Architecture de JEE
Conteneurs
Les conteneurs (lenvironnement dexcution JEE) fournissent les services pour
les diffrents composants (reprsenter par les rectangles dans les rectangles)
Exemples :
Conteneur de servlet : Tomcat : http://www.apache.org
Conteneur dEJB : EasyBeans : http://www.easybeans.net/xwiki/bin/view/Main/WebHome
Serveurs dapplications
Fvrier 2016 | 14
La plateforme JEE
Architecture
Architecture de JEE
Conteneurs
Serveurs dapplications
Jonas : http://jonas.objectweb.org/
JBoss : http://www.jboss.org/products/jbossas
Weblogic de BEA : http://www.bea.com
Etc...
Fvrier 2016 | 15
Servlets
Introduction
Rappel
Le protocole HTTP
L'HyperText Transfer Protocol (HTTP)
est un protocole de communication clientserveur dvelopp pour le World Wide
Web (WWW) qui permet de transfrer des
messages avec des en-ttes dcrivant le
contenu du message en utilisant un codage
de type MIME (Multipurpose Internet Mail
Extensions).
Le but du protocole HTTP est de permettre
un transfert de fichiers (au format HTML)
localiss grce un URL entre un
navigateur (le client) et un serveur Web.
Fvrier 2016 | 16
Servlets
Introduction
Rappel
Syntaxe dune requte HTTP
EN-TETE : Valeur<crlf>
Ligne vide<crlf>
CORPS DE LA REQUETE
Exemple
GET http://www.fpo.ac.ma
HTTP/1.0
Accept : text/html
If-Modified-Since : Saturday,
15-January-2012 14:37:11 GMT
User-Agent : Mozilla/9.0
(compatible; MSIE 5.0; Windows 7)
VERSION-HTTP CODE
EXPLICATION <crlf>
EN-TETE : Valeur <crlf>
...
EN-TETE : Valeur <crlf>
Ligne vide <crlf>
CORPS DE LA REPONSE
Exemple
HTTP/1.0 200 OK
Date : Sat, 15 Jan 2012
4:37:12 GMT
Server : Microsoft-IIS/2.0
Content-Type : text/HTML
Content-Length : 1245
Last-Modified : Fri, 14 Jan 2012
08:25:13 GMT
Fvrier 2016 | 17
Servlets
Introduction
Rappel
Le type MIME
o MIME (Multipurpose Internet Mail Extensions) est un standard qui a t
propos par les laboratoires Bell Communications en 1991 afin d'tendre les
possibilits des courriers lectroniques.
o MIME est utilis pour typer les documents transfrs par le protocole HTTP.
o Un type MIME est constitu de la manire suivante:
Content-type: TYPE-PRINCIPAL/SOUS-TYPE
o Exemples :
Content-type: image/gif (Images gif )
Content-type: image/jpeg (Images jpeg )
Content-type: text/html (Fichiers HTML )
Content-type: text/plain (Fichiers texte sans mise en forme)
Fvrier 2016 | 18
Servlets
Introduction
Etapes
Fvrier 2016 | 19
Servlets
Introduction
Fvrier 2016 | 20
Servlets
Introduction
Fvrier 2016 | 21
Servlets
Introduction
Fvrier 2016 | 22
Servlets
ntroduction
Les servlets
Les servlets sont des applications Java fonctionnant du ct serveur.
Elles permettent de grer des requtes HTTP et de fournir au client
une rponse HTTP dynamique.
Etant donn qu'il s'agit d'une technologie java, les servlets
portables sur n'importe quelle plateforme et sont de
indpendantes du serveur web. En effet, les servlets s'excutent
un moteur de servlet utilis pour tablir le lien entre la servlet
serveur
sont
plus
dans
et le
web.
Fvrier 2016 | 23
Servlets
ntroduction
Fvrier 2016 | 24
Servlets
ntroduction
Fvrier 2016 | 25
Servlets
ntroduction
Fvrier 2016 | 26
Servlets
API servlets
Une servlet est un composant logiciel, utilis dans un serveur web, tel que
Tomcat, qui peut tre invoqu par les navigateurs clients via une URL,
Le principe de fonctionnement est trs simple : ce composant logiciel reoit
une requte, et il envoie une rponse. Cette rponse est transmise au client,
qui linterprte enfin.
Techniquement, lAPI Servlet est un ensemble dinterfaces et de classes Java,
ranges dans les packages:
javax.servlet : contient les classes pour dvelopper des servlets
gnriques indpendantes d'un protocole
javax.servlet.http: contient les classes pour dvelopper des servlets qui
reposent sur le protocole http utilis par les serveurs web.
Fvrier 2016 | 27
Servlets
Le package javax.servlet
la
fois
Fvrier 2016 | 28
Servlets
Le package javax.servlet
Les classes :
GenericServlet : Classe dfinissant une servlet indpendante detout
protocoles
ServletInputStream : permet la lecture des donnes de la requte
cliente
ServletOutPutStream : permet l'envoie de la rponse de la servlet
Les exceptions :
ServletException : Exception gnrale en cas de problme durant
l'excution de la servlet
UnavailableException : Exception leve si la servlet n'est pas disponible
Fvrier 2016 | 29
Servlets
Le package javax.servlet.http
Le package javax.servlet.http dfinit plusieurs interfaces et mthodes :
Les interfaces :
HttpServletRequest : Hrite de ServletRequest : dfinit un objet contenant
une requte selon le protocole http
HttpServletResponse : Hrite de ServletResponse : dfinit un objet
contenant la rponse de la servlet selon le protocole http
HttpSession : Dfinit un objet qui reprsente une session
Les classes :
Cookie : Classe reprsentant un cookie (ensemble de donnes sauvegardes
par le browser sur le poste client)
HttpServlet : Hrite de GenericServlet : classe dfinissant une servlet
utilisant le protocole http
HttpUtils : Classe proposant des mthodes statiques utiles pour le
dveloppement de servlet http (classe devenue obsolte)
Fvrier 2016 | 30
Servlets
Classe httpServlet
Cette classe est un peu plus volue et davantage oriente dveloppement
Web. Elle est cependant inclue dans le package :
javax.servlet.http.
De mme que pour la classe prcdente, nous pouvons simplement
implmenter la mthode :
public void service(ServletRequest req, ServletResponse res)
Comme le protocole HTTP permet de transmettre des donnes de diffrentes
manires (GET ou POST), cette classe possde les mthodes suivantes:
public doGet(HttpServletRequest req, HttpServletResponse res) est appele
lors dune requte de type GET.
public doPost(HttpServletRequest req, HttpServletResponse res) est
appele lors dune requte de type POST.
Fvrier 2016 | 31
Servlets
Fvrier 2016 | 32
Servlets
Fvrier 2016 | 33
Servlets
Fvrier 2016 | 34
Servlets
out.println("</HTML>");
Fvrier 2016 | 35
Servlets
Interface servlet
Une servlet est une classe Java qui implmente l'interface javax.servlet.
Cette interface dfinit 5 mthodes qui permettent au conteneur web de
dialoguer avec la servlet : elle encapsule ainsi les mthodes ncessaires la
communication entre le conteneur et la servlet :
Linterface Servlet se compose des mthodes suivantes :
la mthode init()
la mthode service()
la mthode getServletConfig()
la mthode getServletInfo()
la mthode destroy()
Fvrier 2016 | 36
Servlets
La mthode init()
Signature :
public void init(ServletConfig config)throws ServletException
La Servlet est cre puis initialise
Cette mthode nest appele par le serveur quune seule fois lors du
chargement en mmoire par le moteur de Servlet.
Lors de l'instanciation, le conteneur de servlet passe en argument la
mthode init() :
ServletConfig :permet de charger des paramtres de configuration
propres la servlet.
ServletException :En cas derreur lors de l'appel de la mthode init(),
celle-ci renvoie une exception de type ServletException et la servlet
n'est pas initialise.
Fvrier 2016 | 37
Servlets
La mthode service()
Signature :
public void service(ServletRequest req, ServletResponse res) throws
ServletException, IOException
Cette mthode service() est appele automatiquement par le serveur
chaque requte dans une nouvelle thread.
Elle dtermine le type de requte dont il s'agit, puis transmet la requte et la
rponse la mthode adquate (doGet() ou doPost).
Chaque requte du client dclenche une seule excution de cette
mthode.
Fvrier 2016 | 38
Servlets
La mthode getservletConfig()
Signature :
public ServletConfig getservletConfig()
Renvoie un objet ServletConfig qui constitue un intermdiaire
permettant daccder au contexte application.
On peut aussi utiliser ServletConfig pour rcuprer les paramtres du fichier
web.xml :
Exemple :
String param;
public void init(ServletConfig config)
{
param = config.getInitParameter("param");
}
Fvrier 2016 | 39
Servlets
La mthode getservletInfo()
Signature:
public String getServletInfo()
Lorsqu'elle est surcharge permet de retourner des informations sur la servlet.
Ces informations peuvent tre exploites pour affichage par des outils dans les
conteneurs Web.
Exemple :
public String getServletInfo() {
return "Hello World Servlet";
}
Fvrier 2016 | 40
Servlets
La mthode destroy()
Signature :
void destroy()
La mthode destroy() est appele par le conteneur lors de l'arrt du
serveur Web.
Elle permet de librer proprement certaines ressources (fichiers,
bases de donnes ...) alloues par init() .
C'est le serveur qui appelle cette mthode.
Fvrier 2016 | 41
Servlets
Exemple
Les paramtres dinitialisation sont dclars dans le fichier web.xml:
<servlet-name>InitParam</servlet-name>
<servlet-class>InitParam</servlet-class>
<init-param>
<param-name>count</param-name>
<param-value>5</param-value>
</init-param>
<init-param>
<param-name>message</param-name>
<param-value>hello config</param-value>
</init-param>
</servlet>
Fvrier 2016 | 42
Servlets
Exemple
public class InitParam extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/plain");
PrintWriter out= response.getWriter();
Demande la valeur
for(int i=0;i<count;i++) {
du paramtre count
out.println(message); }}
public void init(ServletConfig config) throws ServletException {
count = Integer.parseInt(config.getInitParameter("count"));
message = config.getInitParameter("message"); }
public void destroy() {
message=null;}
private int count;
private String message;
Libration des
paramtres
}
Khaoula ADDAKIRI (FP-Ouarzazate )
Fvrier 2016 | 43
Servlets
Excution
Fvrier 2016 | 44
Servlets
Fvrier 2016 | 45
Servlets
Fvrier 2016 | 46
Servlets
Excution
Fvrier 2016 | 47
Servlets
Rappel
Un formulaire, en HTML, c'est tout simplement ceci :
<form name="formulaire" action="/traitement" method="post">
<!-- Diffrents champs de formulaires -->
</form>
Nous avons un formulaire :
qui s'appelle "formulaire"
qui envoie les donnes des champs vers la page "/traitement" ;
qui envoie ces informations via une requte de type "post".
Fvrier 2016 | 48
Servlets
La balise<input>
La balise<input>
Permet la saisie d'informations travers plusieurs interfaces graphiques
Les informations saisies peuvent tre de la forme :
ligne de texte
nom de fichier
case cocher
Attributs:
name :nom du paramtre transmis aprs validation
value: texte saisi
maxlength: nombre maximal de caractres pouvant tre saisis
size: taille visible du champ de saisie
type: type de l'information saisir
Fvrier 2016 | 49
Servlets
La balise <input>
L'attribut type :
<input type = text --->information de type texte dans un champ de saisie
passwd ---> texte remplac par des *
file ---> boite de dialogue pour localiser le fichier
radio ---> choisir une case et une seule
checkbox ---> slection d'une ou plusieurs options
submit ---> bouton de validation du formulaire
reset ---> efface le contenu d'un formulaire
hidden ---> envoi de donnes caches l'utilisateur
Fvrier 2016 | 50
Servlets
La balise <texarea>
Fvrier 2016 | 51
Servlets
La balise <select>
La balise <select> insre une liste droulante d'options slectionner
Les attributs :
name ---> nom donn au paramtre liste
size ---> nombre de lignes affiches
<option value= ... ></option>
Exemple
Excution
Fvrier 2016 | 52
Servlets
Fvrier 2016 | 53
Servlets
Excution
Fvrier 2016 | 54
Servlets
Exemple
<html>
<head> <title>Premier formulaire</title> </head>
<body>
<form method="get" action="Servlet" >
Votre nom est :
<input type="text" name="nom"/>
<input type="submit"/>
</form>
</body>
</html>
Fvrier 2016 | 55
Servlets
Exemple
Import java.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
public classAccueilextendsHttpServlet{
publicvoid doGet
(HttpServletRequest req,HttpServletResponse res)
throwsServletException,IOException{
res.setContentType("text/html");
PrintWriter out = res.getWriter();
String nom = req.getParameter("nom");
out.println("<HTML>");
out.println("<HEAD><TITLE>Bonjour</TITLE></HEAD>");
out.println("<BODY>");
out.println("<b>Bonjour </b><b>"+nom+"</b>");
out.println("</BODY></HTML>");}}
Fvrier 2016 | 56
Servlets
Excution
Fvrier 2016 | 57
Servlets
Exemple
<html>
<head><title>Formulaire</title></head>
<body>
<form action= '/servlets/simplecookie' method='post'>
<b>Rfrence:</b><input type='text' name='ref'/><br>
<b>Quantit :</b><input type='text' name='quantit'/><br>
<b>Prix HT :</b><input type='text' name='prix' value= 'dhs'/><br>
<hr></hr>
<b>Prnom :</b> <input type='text' name='prnom'/><br>
<b>Nom :</b> <input type='text' name='nom'/> <br>
<b>Adresse:</b> <br>
<textarea name='adresse' rows='3' cols='40'></textarea><br>
<hr></hr>
<b>Carte de Credit:</b><br>
<input type= 'radio' name='TypeCarte 'value='Visa'/>Visa<br>
<input type= 'radio' name='TypeCarte 'value='Master Card'/> Master Card<br>
<input type='radio'name= 'TypeCarte 'value= 'Java SmartCard'/> Java SmartCard<br>
<b>Numro de la carte:</b>
<input type='password name= 'numroCarte'/> <br>
<b>Rpter (Numro de la carte):</b>
<input type='password' name='numroCarte'/> <br><br>
<hr></hr>
<input type='submit' value='valider commande'/><br></form></body></html>
Khaoula ADDAKIRI (FP-Ouarzazate )
Fvrier 2016 | 58
Servlets
Excution
Fvrier 2016 | 59
Servlets
Notion de Contexte
Fvrier 2016 | 60
Servlets
Notion de Contexte
Chaque contexte est propre une application et qu'il n'est pas possible
de partager des ressources entre applications diffrentes.
Le fichier web.xml est donc un descripteur de dploiement du
contexte. Il peut contenir entre autres:
Les paramtres d'initialisation du contexte.
Les dfinitions des servlets et des JSPs.
La liste des fichiers de bienvenue.
Les pages d'erreur.
Etc..
Fvrier 2016 | 61
Servlets
<servlet>
<servlet-name>Servlet</servlet-name>
<servlet-class>Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-pattern>/Servlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>
index.html
</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/erreur404.html</location>
</error-page>
</web-app>
Khaoula ADDAKIRI (FP-Ouarzazate )
Fvrier 2016 | 62
Servlets
1.le serveur cre un pool de threads auxquels il va pouvoir affecter chaque requte
2. La servlet est charge au dmarrage du serveur ou lors de la premire requte
3. La servlet est instancie par le serveur
4. La mthode init() est invoque par le conteneur
5. Lors de la premire requte, le conteneur cre les objets Request et Response
spcifiques la requte
6. La mthode service() est appele chaque requte dans une nouvelle thread. Les
objets Request et Response lui sont passs en paramtre
7. Grce l'objet Request, la mthode service() va pouvoir analyser les informations
en provenance du client
8. Grce l'objet Response, la mthode service() va fournir une rponse au client
9. La mthode destroy() est appele lors du dchargement de la servlet, c'est--dire
lorsqu'elle n'est plus requise par le serveur.
Fvrier 2016 | 63
Servlets
Fvrier 2016 | 64
Servlets
Des servlets qui s'excutent dans le mme serveur peuvent communiquer les unes
avec les autres :
Elles peuvent partager de l'information :
un tat ( tat des ventes, des achats, des clients, ...)
une ressource (connexion BD, un fichier statique, ...)
Elles peuvent partager le contrle d'une mme requte :
la requte reue par une servlet peut tre traite en partie par une autre servlet
Fvrier 2016 | 65
Servlets
Fvrier 2016 | 66
Servlets
Fvrier 2016 | 67
Servlets
Fvrier 2016 | 68
Servlets
Fvrier 2016 | 69
Servlets
Deux possibilits :
Dlgation de la requte une autre servlet
Une servlet reoit une requte et laisse une autre servlet( jsp ) la responsabilit de la
traiter (en partie ou totalement). Dans ce cas le contrle est pass la seconde
servlet
Inclusion de contenu
Une servlet inclut dans sa propre rponse un contenu gnr dynamiquement par
une autre servlet
La rponse peut tre ainsi construite partir d'un ensemble de contenus gnrs par
divers composants web
Dans ce cas la premire servlet conserve le contrle
Fvrier 2016 | 70
Servlets
Dlgation
La dlgation est obtenue par un distributeur de requte, instance de la classe
javax.servlet.RequestDispatcher.
La servlet obtient un distributeur sur la requte vers un composant de l'application
(servlet, jsp, fichier statique, ...) en indiquant son URI par la mthode :
public RequestDispatcher
ServletRequest.getRequestDispatcher(String uri)
l'URI peut tre :
relatif, on reste dans le contexte de la servlet courante
absolu, il est interprt relativement la racine du contexte Le chemin peut
tre complt par une chane d'interrogation
Fvrier 2016 | 71
Servlets
RequestDispatcher
la mthode : forward()
passe la requte complte au composant cible.
Exemple
Une servlet (Servlet1) reoit une requte
Elle y place un attribut X quelle y met la chane "salut "
Elle renvoie ensuite cette requte une autre Servlet (Servlet2).
Servlet2 rcupre cet attribut et se charge de crer la rponse quelle
renvoie lutilisateur.
Fvrier 2016 | 72
Servlets
Exemple
Code pour servlet1
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Servlet1 extends HttpServlet {
protected void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException, IOException {
req.setAttribute("X", "salut" );
RequestDispatcher dispat =
req.getRequestDispatcher(" /Servlet2" );
dispat.forward(req,res);
}
Fvrier 2016 | 73
Servlets
Exemple
Code pour servlet2
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Servlet2 extends HttpServlet {
protected void doGet(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/plain");
PrintWriter out = res.getWriter();
out.println("l'attribut que j'ai rcupr de servlet
1 est: " +req.getAttribute("X"));
}}
Fvrier 2016 | 74
Servlets
Excution
Fvrier 2016 | 75
Servlets
RequestDispatcher
la mthode : include()
inclut un contenu la rponse courante
la servlet appelante garde le contrle de la rponse
// on passe une chane la rponse
RequestDispatcher distributeur =
req.getRequestDispatcher(ServletReponse?numero=21515);
distributeur.include(req,res);
// on passe un attribut (donc un objet part entire)
RequestDispatcher distributeur = req.getRequestDispatcher(ServletReponse);
req.setAttribute("objet",new Object()); distributeur.include(req,res);
Fvrier 2016 | 76
Servlets
Exemple
Une requte mise Principale construit une rponse sous la forme dun texte
form partir de Principale et dun contenu inclus fourni par Secondaire
Fvrier 2016 | 77
Servlets
Fvrier 2016 | 78
Servlets
Fvrier 2016 | 79
Servlets
Fvrier 2016 | 80
Servlets
Fvrier 2016 | 81
Servlets
Fvrier 2016 | 82
Servlets
Fvrier 2016 | 83
Servlets
Fvrier 2016 | 84
Servlets
Excution
Fvrier 2016 | 85
Servlets
Session
Utilise pour grer les informations confidentielles propre chaque internaute.
Ces donnes sont stockes sur le serveur du site
Permet aussi de rassembler toutes les donnes sous un mme identifiant
pour un suivi de requtes changes entre le serveur et le client.
Chaque session d'un client est gre via un objet HttpSession
Rcupration d'une session par HttpServletRequest :HttpSession
getSession()
Quelques mthodes de HttpSession :
void setAttribute(String name, Object value)
void getAttribute(String name)
Fvrier 2016 | 86
Servlets
Exemple
<form method="post" action="Validate">
User: <input type="text" name="user" /><br/>
Password: <input type="text" name="pass" ><br/>
<input type="submit" value="submit">
</form>
Index.html
Fvrier 2016 | 87
Servlets
Exemple
<servlet>
<servlet-name>Validate</servlet-name>
<servlet-class>Validate</servlet-class>
</servlet>
<servlet>
<servlet-name>Welcome</servlet-name>
<servlet-class>Welcome</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Validate</servlet-name>
<url-pattern>/Validate</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Welcome</servlet-name>
<url-pattern>/Welcome</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
Fvrier 2016 | 88
Servlets
Exemple
public class Validate extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String name = request.getParameter("user");
String pass = request.getParameter("pass");
if(pass.equals("1234"))
{
//creating a session
HttpSession session = request.getSession();
session.setAttribute("user", name);
response.sendRedirect("Welcome");
}
}
Fvrier 2016 | 89
Servlets
Exemple
public class Welcome extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
String user = (String)session.getAttribute("user");
out.println("Bonjour "+user);
}
Fvrier 2016 | 90
Servlets
Fvrier 2016 | 91
JSP
Introduction
Exemple de JSP
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>JSP Page</title>
</head>
<body>
<h2>Hello World </h2>
</body>
</html>
Fvrier 2016 | 92
JSP
Introduction
Excution
Fvrier 2016 | 93
JSP
Introduction
Fvrier 2016 | 94
JSP
Introduction
Fvrier 2016 | 95
JSP
Introduction
Illustration du fonctionnement
<html>
<head>
<title>JSP Page</title>
</head>
<body>
<h1>Calcul de le factorielle!</h1>
<%
int i,fact;
for(i=1,fact=1;i<4;i++,fact*=i)
out.print(i+"!="+fact+"<BR>");%>
</body>
</html>
Code java
Invocation et
excution
ct serveur
rsultat = code
html
gnr via l'objet
prdfini out
Fvrier 2016 | 96
JSP
Introduction
Fvrier 2016 | 97
JSP
Introduction
Fvrier 2016 | 98
JSP
Introduction
La syntaxe de base
Les directives
Instruction pour le moteur JSP
Encadres par <%@ %>
Les dclarations
Dclarations de variables ou de mthodes utilisables dans la page
Encadres par <%! %>
Les expressions
Un expression est value, transforme en chaine et incluse dans la page
Encadres par <%= %>
Les scriplets
Morceau de code java excut dans la page
Encadrs par <% %>
Fvrier 2016 | 99
JSP
Introduction
Les directives
Forme gnrale
<%@ directive attribut=valeur1>
Les directives vont agir sur ltape de compilation (JSP- - ->JAVA)
Les directives:
La directive Page
La directive Include
La directive Taglib
Les directives page et taglib occupent les premires lignes d'une page avant
toutes les lignes de codes HTML ou JSP.
JSP
Introduction
buffer
autoFlush
import
JSP
Introduction
Spcifie le type de la page JSP. Si false alors la page JSP est une
page normale. Sinon, la page est une page d'erreur. False
session
extends
isThreadSafe
info
JSP
Introduction
JSP
Introduction
La directive Include
Une page JSP peut contenir plusieurs inclusions. La page principale est les
diffrentes pages incluses forment une unit de traduction JSP
<% page language="java" contentType="text/html" %>
<html>
<tr> <td colspan="2"><%@ include file="header.jsp" type="jsp" %></td></tr>
<tr> <td><%@ include file="menu.jsp" type="jsp" %></td>
<td><%@ include file="content.jsp" type="jsp" %></td>
</tr>
...
</html>
JSP
Introduction
La directive Taglib
JSP
Introduction
Les dclarations
JSP
Introduction
Excution
JSP
Introduction
Les scriplets
JSP
Introduction
Les commentaires
Le langage jsp propose deux types:
Commentaires visibles
<!-- -->
Exemple
<! -la date daujourdhui:<%=(new java.util.Date())%>-->
Commentaires cachs
<%-- --%>
Exemple
<%-- Dclaration dobjets ou de variables --%>
JSP
Introduction
JSP
Introduction
Excution
JSP
Introduction
<jsp:include>
<jsp:forward>
<jsp:param>
<jsp:useBean>
<jsp:getProperty>
<jsp:setProperty>
JSP
Introduction
Inclusion de JSP
<html>
<head>
<title>The include Action Example</title>
</head>
<body>
<center>
<h2>The include action Example</h2>
<jsp:include page="date.jsp" flush="true" />
</center>
url de la
</body>
page
</html>
<p>
Today's date: <%= (new java.util.Date()).
toLocaleString()%>
</p>
main.jsp
date.jsp
Pas de
html Body
JSP
Introduction
Excution (main.jsp)
JSP
Introduction
Dlgation de JSP
Une JSP peut dlguer le traitement d'une requte une autre JSP
Directives <jsp:forward> et </jsp:forward>
JSP
Introduction
Dlgation de de JSP
<html>
<head>
<title>The Forward Action Example</title>
</head>
<body>
<center>
<h2>The Forward action Example</h2>
<jsp:forward page="date.jsp" />
</center>
url de la
</body>
page
</html>
<p>
Today's date: <%= (new java.util.Date()).
toLocaleString()%>
</p>
Index.jsp
date.jsp
Pas de
html Body
JSP
Introduction
Excution (index.jsp)
JSP
Introduction
Fichier formu.jsp
Fichier formurep.jsp
<HTML> <BODY>
<jsp:forward
page="formurep.jsp">
<jsp:param name="nom"
value= Khaoula" />
</jsp:forward></BODY>
</HTML>
<HTML> <BODY>
<H1>BienVenue ... </H1>
<% String nom
=request.getParameter("nom");
out.println("Bonjour "+nom); %>
</BODY> </HTML>
JSP
Introduction
Excution
Fichier formu.jsp
Fichier formurep.jsp
<HTML> <BODY>
<jsp:forward
page="formurep.jsp">
<jsp:param name="nom"
value="Khaoula" />
</jsp:forward></BODY>
</HTML>
<HTML> <BODY>
<H1>BienVenue ... </H1>
<% String nom
=request.getParameter("nom");
out.println("Bonjour "+nom); %>
</BODY> </HTML>
JSP
Introduction
Exemple
Fichier formu.jsp
Fichier formurep.jsp
<HTML> <BODY>
<H1>Simple formulaire ... </H1>
<form action="formurep.jsp
"method="POST">
NOM <input type="text"
name="nom" value=""size="50"/><p>
<input type="submit"
value="Envoyer" name="Envoi" />
</form>
</BODY> </HTML>
<HTML> <BODY>
<H1>BienVenue ... </H1>
<% String nom
=request.getParameter("nom");
out.println("Bonjour "+nom); %>
</BODY> </HTML>
JSP
Introduction
JSP
Introduction
JavaBean
JSP
Introduction
JavaBean
Ecrire un JavaBean
Exemple : calcul du cout dune voiture
dfinition des proprits
private float coutRoue;
private float coutCarosserie;
private float coutMoteur;
private float coutRevient;
Mthodes daccs en criture : setters
public void setCoutRoue(float valeur){}
public void setCoutCarroserie(float valeur){}
public void setCoutMoteur(float valeur){}
Mthodes daccs en lecture: getters
public float getCoutRoue(){}
public float getCoutCarroserie(){}
public float getCoutMoteur(){}
public float getCoutRevient(){}
JSP
Introduction
JavaBean
Ecrire un JavaBean
Chaque composant est conu pour accomplir un traitement
Ce traitement est raliss par des mthodes internes :
mthodes mtier = mthodes invisibles
Dans notre cas : le traitement demand est le calcul du cout de revient dune
voiture
Mthodes invisibles (mtier)
Private float CalculCoutRevient(){
Return coutRoue*4+ coutCarosserie+ coutMoteur;}
JSP
Introduction
JavaBean
Ecrire un JavaBean
Un JavaBean est une classe java, les instructions qui le composent sont insres
dans le bloc
public class CoutDeRevient implements
java.io.Serializable{}
Cette interface est ncessaire pour limplmentation dun bean
Un javabean est appel depuis une jsp qui communique laide dun flux
dcoup
La faon de dcouper ce flux est dcrite dans linterface Serializable
JSP
Introduction
JavaBean
JSP
Introduction
JavaBean
JSP
Introduction
JavaBean