Você está na página 1de 128

Introduction la plateforme

Java Entreprise Edition(JEE)

Prof. Khaoula ADDAKIRI


FP - Ouarzazate

Fvrier 2016

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 1

Plan

1.
2.
3.
4.
5.

La plateforme JEE
Les servlets
Java Server Pages
Le Framwork JSF
Les Javabeans

Fvrier 2016

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 2

La plateforme JEE

Introduction

Pourquoi utiliser une plateforme?

Une plateforme est une base gnrique qui :

fournit un ensemble de fonctionnalits utiles pour une majorit dapplications,


se construit sur la base dun ensemble de besoins gnriques partags entre
plusieurs applications.

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 )

Introduction la plateforme JEE

Fvrier 2016 | 3

La plateforme JEE

Introduction

Introduction au Java Framework

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.

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

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,

Des services, au travers d'API : des extensions Java indpendantes permettant


d'offrir en standard un certain nombre de fonctionnalits.

API: Application Programming Interface. Interface de programmation dapplications,


contenant un ensemble de librairies ou bibliothques de fonctions destines tre
utilises par les programmeurs dans leurs applications.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 5

La plateforme JEE

Introduction

Les API de JEE


Les API de JEE peuvent se rpartir en deux grandes catgories :

Les composants

Les applets,
Les Applications clientes,
Les composants web,
Les composants mtier.

Les services
Les services d'infrastructures,
Les services de communication.

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 6

La plateforme JEE

Les API de JEE

Les diffrents composants

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

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 7

La plateforme JEE

Les API de JEE

Les services

Les services dinfrastructures


JDBC (Java DataBase Connectivity) est une API d'accs aux bases de donnes
relationnelles.
JNDI (Java Naming and Directory Interface) est une API d'accs aux services de
nommage et aux annuaires d'entreprises tels que DNS, NIS, LDAP, etc.
JTA/JTS (Java Transaction API/Java Transaction Services) est un API dfinissant
des interfaces standard avec un gestionnaire de transactions.
JCA (JEE Connector Architecture) est une API de connexion au systme
d'information de l'entreprise, notamment aux systmes dits Legacy tels que
les ERP.
JMX (Java Management Extension) fournit des extensions permettant de
dvelopper des applications web de supervision d'applications.

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 8

La plateforme JEE

Les API de JEE

Les services

Les services de communication


JAAS (Java Authentication and Authorization Service) est une API de gestion
de l'authentification et des droits d'accs.
JavaMail est une API permettant l'envoi de courrier lectronique.
JMS (Java Message Service) fournit des fonctionnalits de communication
asynchrone (appeles MOM pour Middleware Object Message) entre
applications.
RMI-IIOP est une API permettant la communication synchrone entre objets.

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 9

La plateforme JEE

Architecture

Architecture de JEE

Les couches de larchitecture de JEE


Cette architecture est compose de
trois couches :
La couche prsentation,
La couche mtier ,
La couche de donnes.

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 10

La plateforme JEE

Architecture

Architecture de JEE
La couche prsentation

La couche prsentation correspondant l'interface homme-machine (IHM).


On distingue deux types de clients:
Le client lger ( thin client) : il sagit dune application accessible via
une interface web (en HTML) consultable l'aide d'un navigateur web, o
la totalit de la logique mtier est traite du ct du serveur. Pour ces
raisons, le navigateur est parfois appel client universel.
Le client lourd (fat client ou heavy client) : Il sagit dune application composer
dune interface graphique qui peut sexcuter sur le systme dexploitation de
lutilisateur. Dans lidal, les clients lourds communiquant ne contiennent que la
logique prsentation (affichage des donnes). Tous les traitements sont
dlgus des composants mtier distants.
Le client riche est un compromis entre le client lger et le client lourd.
L'objectif du client riche est de proposer une interface graphique, dcrite
avec une grammaire de description base sur la syntaxe XML, permettant
d'obtenir des fonctionnalits similaires celles d'un client lourd.

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

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.

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

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.

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

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

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 14

La plateforme JEE

Architecture

Architecture de JEE

Conteneurs

Serveurs dapplications

Le serveur d'application est l'environnement d'excution des applications ct


serveur.
Il prend en charge l'ensemble des fonctionnalits qui permettent plusieurs
clients d'utiliser une mme application
Exemples :

Jonas : http://jonas.objectweb.org/
JBoss : http://www.jboss.org/products/jbossas
Weblogic de BEA : http://www.bea.com
Etc...

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

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.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 16

Servlets

Introduction

Rappel
Syntaxe dune requte HTTP

Syntaxe dune rponse HTTP

METHODE URL VERSION<crlf>


EN-TETE : Valeur<crlf>

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)

Khaoula ADDAKIRI (FP-Ouarzazate )

VERSION-HTTP CODE
EXPLICATION <crlf>
EN-TETE : Valeur <crlf>
...
EN-TETE : Valeur <crlf>
Ligne vide <crlf>
CORPS DE LA REPONSE

Exemple

Introduction la plateforme JEE

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)

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 18

Servlets

Introduction

omment une page Web est affiche par un navigateur?

Etapes

1. l'utilisateur entre une URL dans la barre d'adresses de son navigateur ;


2. le navigateur envoie alors une requte HTTP au serveur pour lui demander la page
correspondante ;
3. le serveur reoit cette requte, l'interprte et gnre alors une page web qu'il va
renvoyer au client par le biais d'une rponse HTTP ;
4. le navigateur reoit la page web finale, qu'il affiche alors l'utilisateur.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 19

Servlets

Introduction

ommon Gateway Interface

Le Common Gateway Interface (CGI)


Toutes les informations nont de nature statique. Souvent les pages HTML ont
besoin de gnrer des informations de manire dynamique.
Des pages web dynamiques sont gnrs par le serveur web. Le serveur web
excute certains programmes pour traiter les demandes des utilisateurs de
navigateurs afin de produire une rponse personnalise.
Le Common Gateway Interface (CGI) a t propos pour gnrer du contenu
Web dynamique. L'interface fournit un cadre standard pour les serveurs Web
pour interagir avec le programme externe appel les programmes CGI.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 20

Servlets

Introduction

ommon Gateway Interface


Le Common Gateway Interface (CGI)
Lorsqu'un serveur Web reoit une demande d'un navigateur, il passe au
programme CGI. Le programme CGI traite la demande et gnre une
rponse l'excution.
Les
programmes
CGI
peuvent
tre
crits
dans
n'importe quel langage, mais Perl est le choix le plus populaire.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 21

Servlets

Introduction

ommon Gateway Interface

Les limites de GCI


CGI offre une approche relativement simple pour crer des applications web
dynamiques qui acceptent une demande de l'utilisateur, la traiter sur le ct
serveur, et retourner des rponses au navigateur de l'utilisateur.

Toutefois, CGI est extrmement lent lors de la manipulation d'un grand


nombre de demandes en mme temps, parce que le serveur web doit lancer un
processus pour l'excution de chaque programme CGI.
Les servlets Java ont t dveloppes pour remdier au problme du
rendement des programmes CGI. Les servlets Java sont essentiellement des
programmes Java qui se comportent comme des programmes CGI.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

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

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

sont
plus
dans
et le
web.

Fvrier 2016 | 23

Servlets

ntroduction

Excution des servlets


Nous allons examiner les servlets qui implmentent le modle requte/
rponse entre les clients et les serveurs utilisant le protocole HTTP. Cette
architecture
est
indique
sur
le
schma
ci-dessous:

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 24

Servlets

ntroduction

Excution des servlets


Une application client envoie une requte HTTP au serveur.
Le conteneur de servlet reoit la requte et ordonne qu'il soit trait
par la servlet approprie.
la servlet fait de son traitement, ce qui peut comprendre
l'interaction avec une base de donnes ou d'autres composants ct
serveur, comme d'autres servlets ou des JSP.
la servlet renvoie ses rsultats au client - normalement sous la
forme d'un document HTML, XHTML ou XML afficher dans un navigateur.
Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 25

Servlets

ntroduction

Les avantages des servlets


Les servlets ont de nombreux avantages par rapport aux autres
technologies ct serveur:
Peut utiliser toutes les API Java afin de communiquer avec des
applications extrieures, se connecter des bases de donnes, accder aux
entre-sorties
Sont indpendantes du serveur Web
Se chargent automatiquement lors du dmarrage du serveur ou bien lors
de la connexion du premier client.
La rsidence en mmoire leur permettent :
De traiter les demandes des clients grce des threads.
Doccuper moins de mmoire et de charge du processeur.
loppos, les langages de script traditionnels crent de nouveaux
processus pour chaque requte HTTP.
permettant de crer des composants rutilisables.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 26

Servlets

Implmentation dune 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.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 27

Servlets

Implmentation dune servlets

Le package javax.servlet

Le package javax.servlet dfinit plusieurs interfaces, mthodes et exceptions :


Les interfaces :
RequestDispatcher : dfinit un objet qui reoit les requtes du client et les
envoie n'importe quelle ressource (par exemple servlet, fichiers HTML
ou JSP) sur le serveur.
Servlet : interface de base d'une servlet
ServletConfig : Dfinit d'un objet utilis par le conteneur de la servlet pour
passer de linformation une servlet pendant son initialisation.
ServletContext : Dfinit un ensemble de mthodes quune servlet utilise
pour communiquer avec le conteneur de servlets
ServletRequest : Dfinit un objet contenant la requte du client.
ServletResponse : Dfinit un objet qui contient la rponse renvoye par la
servlet
SingleThreadModel : Permet de dfinir une servlet qui ne rpondra qu'
une
seule
requte

la
fois

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 28

Servlets

Implmentation dune 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

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 29

Servlets

Implmentation dune 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)

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 30

Servlets

Implmentation dune 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.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 31

Servlets

Implmentation dune servlets


Exemple
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyHelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Bonjour tout le monde</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Bonjour tout le monde</h1>");
out.println("</body>");
out.println("</html>");
}
}
Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 32

Servlets

mplmentation dune servlets


Analyse de lexemple
La premire tape consiste
importer les packages
ncessaires la
cration de la servlet
il faut donc importer
javax.servlet, javax.servlet.http
et java.io
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

Khaoula ADDAKIRI (FP-Ouarzazate )

Analyse dune servlet


Si le type de la requte est GET, alors la
mthode de la Servlet qui traite la requte
est la suivante :
public void doGet(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
//traitement
}
Si le type de la requte est POST alors la
mthode doit tre :
public void doPost(HttpServletRequest
req, HttpServletResponse res)
throws ServletException, IOException {
//traitement
}

Introduction la plateforme JEE

Fvrier 2016 | 33

Servlets

Implmentation dune servlets

Analyse dune servlet

La mthode doGet (resp. doPost) prend deux paramtres :


Un paramtre de type HttpServletRequest reprsentant la requte
client
Un paramtre de type HttpServletResponse reprsentant la
rponse renvoyer au client
Lobjet
HttpServletResponse
doit
tre
complt
dinformations
par la servlet avant de le renvoyer au client.
La premire tape consiste dfinir le type de donnes qui vont tre
envoyes au client (gnralement il s'agit d'une page HTML).
La mthode setContentType() de l'objet HttpServletResponse prend donc comme
paramtre le type MIME associ au format HTML (text/html):
res.setContentType("text/html");

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 34

Servlets

Implmentation dune servlet

Analyse dune servlet


La cration d'un objet PrintWriter grce la mthode getWriter() de l'objet
HttpServletResponse permet d'envoyer du texte formatt au navigateur
PrintWriter out = res.getWriter();

La mthode println() de l'objet PrintWriter permet d'envoyer


les donnes textuelles au navigateur
out.println("<HTML>");

out.println("</HTML>");

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 35

Servlets

Implmentation dune servlet

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

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 36

Servlets

Implmentation dune servlet

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.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 37

Servlets

Implmentation dune servlet

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.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 38

Servlets

Implmentation dune servlet

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");
}

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 39

Servlets

Implmentation dune servlet

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";
}

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 40

Servlets

mplmentation dune servlet

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.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 41

Servlets

Implmentation dune servlet

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>

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 42

Servlets

Implmentation dune servlet

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 )

Introduction la plateforme JEE

Fvrier 2016 | 43

Servlets

Implmentation dune servlet

Excution

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 44

Servlets

Dveloppement dune servlet

Dvelopper une servlet


Les tapes de dveloppement dune servlet sont les suivantes:
1 . Lecture de la requte (reprsente par lobjet HttpServletRequest )
2. Traitement
3. Cration de la rponse (reprsente par lobjet HttpServletResponse)

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 45

Servlets

Dveloppement dune servlet

Lecture dune requte


Lobjet HttpServletRequest fournit un ensemble de mthodes pour
avoir toutes les informations concernant une requte.
Ces mthodes sont comme suit :
String getMethod() : Rcupre la mthode HTTP utilise par le client
String getHeader(String name): Rcupre la valeur de lentte demande
String getRemoteHost() : Rcupre le nom de domaine du client
String getRemoteAddr() : Rcupre l'adresse IP du client
String getParameter(String name) : Rcupre la valeur du paramtre name d'un
formulaire. Lorsque plusieurs valeurs sont prsentes, la premire est retourne
String[] getParameterValues(String name) : Rcupre les valeurs correspondant au
paramtre name d'un formulaire, c'est--dire dans le cas dune slction multiple
(cases cocher, listes choix multiples) les valeurs de toutes les entits
slectionnes
String getServerName() : Rcupre le nom du serveur
String getServerPort() : Rcupre le numro de port du serveur

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 46

Servlets

Dveloppement dune servlet


Exemple
Import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public classInfoClientextendsHttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException{
res.setContentType("text/html");
PrintWriter out =res.getWriter();
out.println(req.getServerName());
out.println("<br/>");
out.println(req.getServerPort());
out.println("<br/>");
out.println(req.getLocalName());}}

Excution

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 47

Servlets

Gnrer une page partir dun formulaire

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

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 48

Servlets

Gnrer une page partir dun formulaire

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

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 49

Servlets

Gnrer une page partir dun formulaire

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

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 50

Servlets

Gnrer une page partir dun formulaire

La balise <texarea>

La balise <texarea> insre une zone de saisie de texte


Les attributs :
name ---> fournit un nom la zone de texte pour rcuprer les
donnes transmises
rows ---> nombre de lignes de la zone de texte
cols ---> nombre de colonnes de la zone de texte

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 51

Servlets

Gnrer une page partir dun formulaire

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

<select name="liste" >


<option value="FF80FF">rose</option>
<option value="80FFFF">bleu</option>
<option value="FFFF80">jaune</option>
<input type="submit"/>
</select>
Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 52

Servlets

Gnrer une page partir dun formulaire


Exemple
<html>
<head> <title>Premier formulaire</title> </head>
<body>
<form method="get"action="" >
Votre nom est :
<input type="text" name="nom"/>
<input type="submit"/>
</form>
</body>
</html>
Excution

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 53

Servlets

Gnrer une page partir dun formulaire


Exemple

Excution

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 54

Servlets

Gnrer une page partir dun formulaire

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>

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 55

Servlets

Gnrer une page partir dun formulaire

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>");}}

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 56

Servlets

Gnrer une page partir dun formulaire


Excution

Excution

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 57

Servlets

Gnrer une page partir dun formulaire

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 )

Introduction la plateforme JEE

Fvrier 2016 | 58

Servlets

Gnrer une page partir dun formulaire

Excution

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 59

Servlets

Implmentation dune servlet

Notion de Contexte

Un contexte constitue une vue sur le fonctionnement dune mme application


web qui peut tre compose de :
Servlets
JSP
Documents statiques (pages html, images, sons, etc.)
Etc..
Grce ce contexte, il est possible d'accder chacune des ressources de
l'application web correspondant au contexte.
Dans le code source d'une servlet, un contexte est reprsent par un objet
de type ServletContext.
Exemple :
getServletContext().getServerInfo() retourne le nom du logiciel
utilis pour prendre en charge la requte , par exemple Tomcat/7.0.47.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 60

Servlets

Implmentation dune servlet

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

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 61

Servlets

Implmentation dune servlet


Notion de Contexte

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

faire correspondre notre


servlet frachement
dclare une URL, afin
qu'elle soit joignable par
les clients

Introduction la plateforme JEE

Fvrier 2016 | 62

Servlets

Implmentation dune servlet


Cycle de vie dune servlet

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.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 63

Servlets

Implmentation dune servlet


Cycle de vie dune servlet

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 64

Servlets

Implmentation dune servlet


Collaboration de 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

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 65

Servlets

Implmentation dune servlet


Collaboration de Servlets

La collaboration est obtenue par linterface ServletContext


Lutilisation de ServletContext permet aux applications web de disposer de son
propre conteneur dinformations unique
Une Servlet retrouve le ServletContext de son application Web par
un appel getServletContext()
Exemples de mthodes :
*void setAttribute(String nom, Object o) : lie un objet sous le nom
indiqu
* Object getAttribute(String nom) : retrouve lobjet sous le nom indiqu
*Enumeration getAttributeNames() : retourne lensemble des noms de
tous les attributs lis
*void removeAttribute(String nom) : supprime lobjet li sous le nom
indiqu

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 66

Servlets

Implmentation dune servlet


Partage dinformation
Exemple : Servlets qui vendent des pizzas et partagent une spcialit du jour
import javax.servlet.*;
import javax.servlet.http.*;
public class PizzasAdmin extends HttpServlet {
protected void doGet(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/plain");
PrintWriter out = res.getWriter();
ServletContext context = this.getServletContext();
context.setAttribute("Specialite", "quatre saisons");
out.println("La pizza du jour a t dfinie." ); }
}

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 67

Servlets

Implmentation dune servlet


Partage dinformation
import javax.servlet.*;
import javax.servlet.http.*;
public class PizzasClient extends HttpServlet {
protected void doGet(HttpServletRequest req,
HttpServletResponse res)
throws ServletException,IOException {
res.setContentType("text/plain");
PrintWriter out = res.getWriter();
ServletContext context = this.getServletContext();
String pizza_spec =
(String) context.getAttribute("Specialite");
out.println("Aujourd'hui, notre specialite est : " +
pizza_spec); }
}

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 68

Servlets

Implmentation dune servlet


Excution

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 69

Servlets

Implmentation dune servlet


Partage du contrle

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

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 70

Servlets

Implmentation dune servlet

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

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 71

Servlets

Implmentation dune servlet

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.

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 72

Servlets

Implmentation dune servlet

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);
}

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 73

Servlets

Implmentation dune servlet

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"));
}}

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 74

Servlets

Implmentation dune servlet

Excution

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 75

Servlets

Implmentation dune servlet

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

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 76

Servlets

Implmentation dune servlet

Exemple

Le projet include contient 2 servlets : Principale et Secondaire

Une requte mise Principale construit une rponse sous la forme dun texte
form partir de Principale et dun contenu inclus fourni par Secondaire

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 77

Servlets

Implmentation dune servlet


Exemple : Principale
public class Principale extends HttpServlet { protected void processRequest(HttpServletRequest
req, HttpServletResponse res) throws ServletException, IOException {
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws
ServletException, IOException {
res.setContentType("text/html;charset=UTF-8");
PrintWriter out = res.getWriter();
out.println("<html>");
out.println("<title>Servlet Principale</title></head>");
out.println("<body>");
out.println("<h3>Servlet Principale at");
out.println(" req.getContextPath() </h3>");
out.println(" le texte suivant est inclus par la servlet secondaire");
out.println("<hr />");
RequestDispatcher dist = req.getRequestDispatcher("Secondaire");
dist.include(req,res);
out.println( "<hr />");
out.println( " retour la servlet principale");
out.println("</body></html>");
out.close();}
Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 78

Servlets

Implmentation dune servlet


Exemple: Secondaire
public class Secondaire extends HttpServlet {
protected void processRequest(HttpServletRequest req, HttpServletResponse res) throws
ServletException, IOException {
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html;charset=UTF-8");
PrintWriter out = res.getWriter();
out.println("<h3>Servlet Secondaire at" );
out.println(request.getContextPath () + "</h3>");
out.println(" Caractristiques de la machine <br>");
out.println("Fonction Aquastop.<br>");
out.println("5 tempratures: 45 70.<br>");
out.println("Dpart diffr de 1 19 h.<br>");
out.println("nergie/lavage/schage : classe A/A/A<br>");
out.println("Niveau sonore : 47 dB.<br>");
}

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 79

Servlets

Implmentation dune servlet


Excution

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 80

Servlets

Implmentation dune servlet


Cookies
Sont des petits fichiers cres la demande du serveur et dposs sur la machine
de linternaute
Plus souvent utiliss pour enregistrer les prfrences du client
Cration dun cookie : en utilisant la classe java Cookie
Cookie UnCookie= new Cookie(" preference","rouge");

Enregistrement de cet objet sur le disque du client : en utilisant


lobjet response : Response.addCookie(UnCookie);
N. B. Les cookies sont accessibles par tous les utilisateurs de la
machine cliente. De ce fait les donnes confidentielles ne
peuvent tre stockes dans un cookie

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 81

Servlets

Implmentation dune servlet


Exemple
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Cration des cookies pour Prnom et Nom
Cookie Prnom = new Cookie("first_name", request.getParameter("first_name"));
Cookie Nom = new Cookie("last_name", request.getParameter("last_name"));
// Ajout des deux cookies dans l'entte de la rponse
response.addCookie( Prnom );
response.addCookie( Nom );
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Cookies Example";

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 82

Servlets

Implmentation dune servlet


Exemple
out.println(
"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor=\"#f0f0f0\">\n" +
"<h1 align=\"center\">" + title + "</h1>\n" +
"<ul>\n" +
" <li><b>Prnom</b>: "
+ request.getParameter("first_name") + "\n" +
" <li><b>Nom</b>: "
+ request.getParameter("last_name") + "\n" +
"</ul>\n" +
"</body></html>");
}

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 83

Servlets

Implmentation dune servlet


Index.html
<html>
<body>
<form action="HelloForm" method="GET">
Prnom: <input type="text" name="first_name">
<br />
Nom: <input type="text" name="last_name" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 84

Servlets

Implmentation dune servlet

Excution

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 85

Servlets

Implmentation dune servlet

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)

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 86

Servlets

Implmentation dune servlet

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>

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Index.html

Fvrier 2016 | 87

Servlets

Implmentation dune servlet

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>

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 88

Servlets

Implmentation dune servlet

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");
}
}

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 89

Servlets

Implmentation dune servlet

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);
}

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 90

Servlets

Implmentation dune servlet


Excution

Khaoula ADDAKIRI (FP-Ouarzazate )

Introduction la plateforme JEE

Fvrier 2016 | 91

JSP

Introduction

Java Server Page

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>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 92

JSP

Introduction

Java Server Page

Excution

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 93

JSP

Introduction

Java Server Page

JSP cest quoi?


du code Java embarqu dans une page HTML entre les balises <% et %>
extension .jsp pour les pages JSP
les fichiers .jsp sont stocks sur le serveur
ils sont dsigns par une URL
http://serveurWeb:<port>/.../nom_jsp.jsp
Ex : http://localhost:8080/JSP1/NewFile.jsp
Le chargement de l'URL provoque l'excution de la JSP ct serveur

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 94

JSP

Introduction

Java Server Page


Chargement de JSP

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 95

JSP

Introduction

Java Server Page

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

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 96

JSP

Introduction

Java Server Page

Mcanisme mis en uvre


Toute la page .jsp est convertie en une servlet
Cette servlet est traite par le moteur Java intgr au serveur Web (technologie
des servlets) et retourne la page HTML construite
Concrtement avec les JSP :
les parties statiques de la page HTML sont crites en HTML
les parties dynamiques de la page HTML sont crites en Java

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 97

JSP

Introduction

Java Server Page

Algorithme dexcution de la JSP

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 98

JSP

Introduction

Java Server Page

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 <% %>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 99

JSP

Introduction

Java Server Page

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.

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 100

JSP

Introduction

Java Server Page


La directive Page
La directive page permet de dfinir un ensemble d'attributs propre chaque
page JSP But: d'adapter le comportement du serveur d'application.
language

Dfinit le langage de script utilis dans la page JSP. JAVA

buffer

Dfinit la taille en kilo-octets de la zone mmoire alloue pour


contenir le rsultat d'une page JSP. 8 Kb

autoFlush

Si true alors la zone mmoire alloue est vide ds qu'elle pleine.


True

contentType Spcifie le type MIME de la rponse gnre par la page. text/html


errorPage

Une adresse relative une page ou un contexte vers laquelle est


redirige la rponse en cas d'exception

import

Les package importer pour permettre la satisfaction de la logique


d'une page JSP

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 101

JSP

Introduction

Java Server Page


La directive Page
isErrorPage

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

Si true alors la page participe une session, sinon la page est


autonome et la variable implicite session n'est pas disponible.True

extends

Spcifie la superclasse de la servlet JSP qui sera gnre.

isThreadSafe

Si true ,alors la servlet de la page JSP est partage entre plusieurs


clients concurrents. Sinon, la servlet de la page JSP ne peut tre
partage, si plusieurs clients veulent y accder en mme temps, le
conteneur JSP cre plusieurs instances. True
Dfinit une chane de caractres qui peut tre lue via la
fonction getServletInfo

info

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 102

JSP

Introduction

Java Server Page


La directive Page
Exemple
<%@ page language=java
contentType=text/html
buffer=none
errorPage=/err/errorPage.jsp
isErrorPage=false %>
<%@ page import=java.util.*,com.enterprise.package.* %>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 103

JSP

Introduction

Java Server Page

La directive Include

La directive include permet l'inclusion du contenu (statique ou dynamique )


d'une page secondaire pendant la translation de la page principale en servlet JSP.
File

Un chemin d'URI relatif la page ou au contexte dsignant le fichier


inclure

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>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 104

JSP

Introduction

Java Server Page

La directive Taglib

La directive taglib permet la dclaration d'une bibliothque de balises dont les


gestionnaires sont les actions personnalises utilises dans la page.
prefix Prfixe utilis dans les balises pour dsigner un ensemble d'actions
personnalises.
uri

Un chemin d'URI relatif au fichier TLD ou le fichier JAR de la bibliothque

<%@ page language="java" contentType="text/html" %>


<%@ page import="java.util.*" %>
<%-- Struts Taglib ----------------------------------------------%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%-- JSTL Taglib ------------------------------------------------%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c_rt" %>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 105

JSP

Introduction

Java Server Page

Les dclarations

Dclarations de variables et de fonctions locales la page (en java)


<%! int i; %>
<%!
int i=0;
String text;
%>
<%!
boolean f(int i)
{return (i>0);}
%>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 106

JSP

Introduction

Java Server Page


Les expressions
Une expression est une expression java dont la valeur est calcule, tranforme en
String et insre dans la page.
Exmple
<body>
<h2>Hello World </h2>
Aujourd'hui on est le
<%= new java.util.Date(System.currentTimeMillis()).toString()%>
</body>

Excution

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 107

JSP

Introduction

Java Server Page

Les scriplets

Peuvent contenir des fragments de code valide en java


Ils sont excuts quand la requte est value
<% if (compte>0) { %>
Tu as encore des sous <BR>
<% } else { %>
Tu es dans le rouge cette fois <BR>
<% } %>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 108

JSP

Introduction

Java Server Page

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 --%>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 109

JSP

Introduction

Java Server Page


Exemple
<html>
<head>
<title>Exemple Complet</title>
</head>
<body>
<%! String[] langages = {"Java","C++","Smalltalk", "Simula67"};
int random4() { return (int) (Math.random() * 4); }
%>
<p>Parmi tous les langages orients objets :</p>
<ol>
<%
for (int i=0; i < langages.length; i++) {
out.println("<li>" + langages[i] + "</li>");
}
%>
</ol>
<p>Le prochain que j'apprends est <b><%= langages[random4()] %>
</b></p>
</body>
</html>
Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 110

JSP

Introduction

Java Server Page

Excution

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 111

JSP

Introduction

Java Server Page


Actions
Tags spciaux fournissant un ensemble de fonctionnalits
Minimum de code
Manire standard
o
o
o
o
o
o

<jsp:include>
<jsp:forward>
<jsp:param>
<jsp:useBean>
<jsp:getProperty>
<jsp:setProperty>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 112

JSP

Introduction

Java Server Page

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>

Khaoula ADDAKIRI (FP-Ouarzazate)

main.jsp

date.jsp

Introduction la plateforme JEE

Pas de
html Body

Fvrier 2016 | 113

JSP

Introduction

Java Server Page

Excution (main.jsp)

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 114

JSP

Introduction

Java Server Page

Dlgation de JSP
Une JSP peut dlguer le traitement d'une requte une autre JSP
Directives <jsp:forward> et </jsp:forward>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 115

JSP

Introduction

Java Server Page

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>

Khaoula ADDAKIRI (FP-Ouarzazate)

Index.jsp

date.jsp

Introduction la plateforme JEE

Pas de
html Body

Fvrier 2016 | 116

JSP

Introduction

Java Server Page

Excution (index.jsp)

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 117

JSP

Introduction

Java Server Page


Dlgation et inclusion de JSP
Transmission de paramtres aux inclus et aux dlgus
Utilisation de couples (name, value)
Directive <jsp:param name="..." value="..." />

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>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 118

JSP

Introduction

Java Server Page

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>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 119

JSP

Introduction

Java Server Page

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>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 120

JSP

Introduction

Java Server Page


Excution

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 121

JSP

Introduction

JavaBean

Les composants JavaBeans

Les niveaux serveur et client peuvent aussi inclure des JavaBeans


Ils sont des composants indpendants quon peut intgrer dans un script jsp.
Ils sont dveloppes pour fournir un rsultat prcis : fonctionnalit mtier.
Un JavaBean est une classe java (attributs, mthodes) qui change ses donnes
avec un script jsp
Un script jsp peut accder aux donnes dun JavaBean grasse aux mthodes
daccs : en criture et en lecture

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 122

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(){}

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 123

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;}

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 124

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

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 125

JSP

Introduction

JavaBean

Appeler un bean depuis une jsp


Ltiquette jsp:useBean
Indique au serveur quel composant javaBean est utilis
Syntaxe
<jsp:useBean id="nomObjet" class ="nomClass" />
Exemple
<jsp:useBean id="auto" class="javabeans.CoutDeRevient"/>
Ltiquette jsp:setProperty
Permet de modifier la valeur dune proprit dun objet
Elle fait directement appel la mthode daccs en criture de cette
proprit
Exemple
<jsp:setProperty name="auto" property=" coutRoue value=1000"/>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 126

JSP

Introduction

JavaBean

Appeler un bean depuis une jsp


Ltiquette jsp:getProperty
Permet de retourner la valeur dune proprit du JavaBean
Renvoie un contenu directement affichable dans une page HTML
Exemple
<jsp:getProperty name="auto" property="coutRevient"/> dirhams

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 127

JSP

Introduction

JavaBean

Appeler un bean depuis une jsp


<jsp:useBean id="auto" class="javabeans.NewBean">
<jsp:setProperty name="auto" property="coutRoue" value=" 1000"/>
<jsp:setProperty name="auto" property=" coutCarosserie " value="80000"/>
<jsp:setProperty name="auto" property=" coutMoteur " value="20000"/>
</jsp:useBean>
<html>
<body>
<h1>Le prix de la voiture est </h1>
<jsp:getProperty name="auto"
property="coutRevient "/>
</body>
</html>

Khaoula ADDAKIRI (FP-Ouarzazate)

Introduction la plateforme JEE

Fvrier 2016 | 128

Você também pode gostar