ENSEM
COURS DE
Java - JEE
Enseignant : Pr. AOUN Oussama
Année Universitaire 2024/2025
Java EE
Les bases de la plateforme
Java EE
ENSEM Introduction à Java EE 1
Plan
⚫ Rappels
• HTTP
⚫ La plateforme Java Enterprise Edition
• Introduction
• L’architecture Java EE et les conteneurs
• Les composants Java EE
• Le services Java EE
ENSEM Introduction à Java EE 2
Rappels
ENSEM Introduction à Java EE 3
Rappels
⚫ Internet : est un assemblage de multiples réseaux, tous
connectés entre eux. Aussi, appelé le réseau des
réseaux.
⚫ Le Web : est un système de fichiers présents sur des
serveurs transitant par des protocoles particuliers,
consultable grâce à des navigateurs web.
⚫ Pour une bonne communication entre le client et le
serveur, un ensemble de protocoles de transfert de
fichiers sont utilisés tels que : HTTP, FTP, SMTP, POP,
etc.
ENSEM Introduction à Java EE 4
HyperText Transfer Protocol
(HTTP)
⚫ HTTP est le protocole d'applications le plus utilisé dans l'Internet (ou
sur le Web).
⚫ Un client HTTP envoie un message de requête à un serveur
HTTP. Le serveur, à son tour, renvoie un message de réponse.
⚫ HTTP est un protocole sans état. En d'autres termes, la demande
actuelle ne sais pas ce qui a été fait dans les demandes précédentes.
⚫ HTTP est basé sur des couples questions (requêtes) /réponses
⚫ La requête contient au minimum des informations permettant
d’identifier la ressource demandée par le client.
⚫ La requête est simplement un bloc de texte transitant du client vers le
serveur.
ENSEM Introduction à Java EE 5
Protocole HTTP
ENSEM Introduction à Java EE 6
Communication client serveur
ENSEM Introduction à Java EE 7
L’URL
⚫ URL : Uniform Resource Locator est associé au protocole HTTP.
⚫ URL permet de localiser la ressource que l’on souhaite récupérer via
une requête.
⚫ Son format : protocole:// nom d’hôte: n° de port/ressource
⚫ protocole : spécifie protocole utilisé HTTP, FTP, TELNET,…
⚫ Nom d’hôte : nom de domaine DNS ([Link]) ou l’adresse IP
([Link]) du serveur.
⚫ numéro du port : numéro du port TCP sur lequel le serveur écoute les
requêtes entrantes provenant des clients. Exemples : HTTP:port 80;
FTP:port 20 ou 21; SMTP:port 25; …
[Link]
ENSEM Introduction à Java EE 8
L’URL
⚫ ressource : détermine l’emplacement de la ressource que l’on souhaite
obtenir.
⚫ Par exemple, dans l'URL [Link] ,
⚫ le protocole de communication est HTTP,
⚫ le nom d'hôte est [Link] .
⚫ Le numéro de port n'est pas spécifié dans l'URL, et prend le numéro
par défaut, qui est le port TCP 80 pour HTTP.
⚫ L’emplacement de la ressource est situé au " /docs/[Link] ".
⚫ D’autres exemples d'URL :
• [Link]
• mailto: user@[Link]
• telnet :/ / [Link]/
ENSEM Introduction à Java EE 9
Protocole HTTP
⚫ Soit une requête HTTP concernant la page d’accueil du
site [Link]
[Link]
ENSEM Introduction à Java EE 10
Protocole HTTP
⚫ réponse HTTP faite par le serveur est (corps de la
réponse tronqué ) :
ENSEM Introduction à Java EE 11
Les différents types de requêtes
⚫ HTTP 1.0 dispose de 3 types de requêtes :
⚫ Requête GET : pour obtenir une ressource disponible sur le
serveur. Avec Get, les paramètres envoyés sont ajoutés à la
suite de l’URL.
⚫ Requête POST : pour envoyer vers le serveur des
informations saisies dans un formulaire HTML. Les
informations étant transférées via le corps de la requête et
ne sont pas visibles dans l’URL.
⚫ Requête HEAD : comme Get mais le serveur ne retourne
rien dans le corps de la réponse HTTP. Elle utilisée pour la
gestion de la mise en cache des informations.
ENSEM Introduction à Java EE 12
Les différents types de requêtes
⚫ HTTP 1.1 ajoute de nouveaux types de requêtes :
⚫ Requête PUT : permet d’envoyer vers le serveur une
ressource pour l’enregistrement permanent.
⚫ Requête DELETE : permet de demander au serveur la
suppression d’une ressource indiquée.
⚫ Requête TRACE : pour le test, permet de demander au
serveur de retourner dans le corps de la réponse une copie
de la requête qu’il vient de recevoir.
⚫ Requête OPTIONS : permet d’obtenir les informations sur
les options utilisables pour obtenir une ressource.
ENSEM Introduction à Java EE 13
Les différents types de réponses
⚫ Les réponses HTTP sont organisées en cinq catégories :
⚫ 1XX : information. (100 continue : pour requêtes en plusieurs
parties. dire que le début est bien reçu et j’attend la suite)
⚫ 2XX : succès (200 OK : requête traitée correctement, 201
créé : ressource créée correctement en réponse à put)
⚫ 3XX : redirection (301 déplacement permanent, 302
déplacement temporaire, 304 non modifié)
⚫ 4XX : erreur liée au client (400 mauvaise requête, 401 client
non autorisé, 403 accès interdit, 404 ressource non trouvée)
⚫ 5XX : erreur liée au serveur (500 erreur interne, 503 service
indisponible, 505 version HTTP non prise en charge)
ENSEM Introduction à Java EE 14
JEE : Histoire
2016 2018
ENSEM Introduction à Java EE 15
La galaxie java
ENSEM Introduction à Java EE 16
Java EE
⚫ Java EE : signifie Java Entreprise Edition et représente
essentiellement des applications d’entreprise (réservation
de vols,…).
⚫ Java EE : Un ensemble de technologies pour construire
des applications réparties
• JSP/Servlet , JSF(i.e. Web Component) : pages web dynamiques
• Composants EJB (i.e. Enterprise Java Bean) : composants JEE
• JDBC : API d’accès à des SGBD, JPA
• Et de nombreuses autres : JNDI, JTA, JCA, JMX, JAX, …
⚫ Les applications d’entreprise peuvent avoir des interfaces
utilisateurs multiples : interface web accessible sur Internet
et une interface graphique sur le réseau local.
ENSEM Introduction à Java EE 17
Java EE
⚫ Les applications Java EE doivent posséder les qualités suivantes :
• gérer les communications entre systèmes distants.
• s'occuper automatiquement des différents protocoles de
communication
• synchroniser les sources avec éventuellement des technologies
différentes
• s'assurer que le système respecte en permanences les règles de
l'activité de l'entreprise, appelés règles "métier".
• s'occuper automatiquement de la base de données sans que le
développeur est à intervenir.
ENSEM Introduction à Java EE 18
Serveurs d’applications
⚫ Les serveurs d'applications mettent à disposition du
programmeur les fonctionnalités permettant de réaliser des
applications d'entreprise :
⚫ communication entre ordinateurs
⚫ mis en place de protocole adaptés
⚫ gestion des connexions avec une base de données
⚫ présentation de pages Web
⚫ gestion des transactions
⚫ etc.
ENSEM Introduction à Java EE 19
Java EE : applications distribuées
⚫ Java EE est une collection de composants, de conteneurs et de services
permettant de créer et de déployer des applications distribuées au sein
d'une architecture standardisée.
⚫ Java EE est surtout destiné aux gros systèmes d'entreprise. Il ne
fonctionne pas sur un simple PC mais requière une puissance beaucoup
plus importante.
⚫ Les applications JEE doivent être constituées de plusieurs composants
pouvant être déployés sur des plateformes multiples afin de disposer de
la puissance de calcul nécessaire. C'est la raison d'être des applications
distribuées.
ENSEM Introduction à Java EE 20
JEE : architecture multi-tiers
ENSEM Introduction à Java EE 21
Les composants de Java EE
⚫ Les applications Java EE sont formées de composants
⚫ Un composant Java EE est une application fonctionnelle
formée de classes et de fichiers qui peut communiquer
avec d’autres composants.
⚫ L’application client et les applets sont des composants
coté client
⚫ Les servlets, JSF et JSP sont des composants web côte
serveur
⚫ Les EJB sont des composants métiers côte serveur
⚫ Java Bean n’est pas considéré comme composant
ENSEM Introduction à Java EE 22
Architecture JEE
2013/2014 Introduction à Java EE 23
Architecture Java EE
L'architecture d’une application Java EE se découpe idéalement en
au moins trois couches :
⚫ La couche cliente (présentation) : permet de dialoguer avec
l’utilisateur. Elle est composée d’une application stand-alone,
application web ou applet.
⚫ La couche métier : encapsule les traitements (dans des
composants EJB )
⚫ La couche de données : stocke des données ( Fichiers, Bases de
données relationnelles ou XML, Annuaires d'entreprise, …)
ENSEM Introduction à Java EE 24
Architecture d’une application
Java EE
ENSEM Introduction à Java EE 25
Architecture d’une application
Java EE
ENSEM Introduction à Java EE 26
Java EE : côté client
⚫ Un client Java EE peut être :
• une application console écrite en Java
• une application dotée d'une interface graphique Swing. Ce type de
client est appelé client lourd, en raison de la quantité importante de
code qu'il met en œuvre.
⚫ Un client Java EE peut également être conçu pour être utilisé à partir du
Web.
• Ce type de client fonctionne à l'intérieur d'un navigateur Web.
• La plus grande partie du travail est reportée sur le serveur et le client
ne comporte que très peu de code. Pour cette raison, on parle de
client léger.
• Un client léger peut être une simple interface HTML, une page
contenant des scripts JavaScript, ou encore une applet Java si une
interface un peu plus riche est nécessaire.
ENSEM Introduction à Java EE 27
JEE : côté serveur
⚫ Les API de Java EE peuvent se répartir en deux grandes
catégories :
⚫ Les composants déployés sur le serveur
• Les composants web qui sont réalisés à l'aide de servlets,
de JavaServer Pages (JSP) ou de Java server face (JSF).
• Les composants métier sont des Entreprise JavaBeans
(EJB). Il s'agit de composants spécifiques chargés des
traitements des données et de l'interfaçage avec les bases de
données.
⚫ Les services
• Les services d'infrastructures : JDBC, JNDI, JTA, JCA, JMX
• Les services de communication : RMI-IIOP, JavaMail, JAAS
ENSEM Introduction à Java EE 28
les conteneurs Java EE
⚫ Les conteneurs sont les éléments fondamentaux de l'architecture Java
EE.
⚫ Ils fournissent un ensemble de services permettant aux développeurs
d'applications de se concentrer sur la logique métier du problème à
résoudre sans se préoccuper de toute l'infrastructure interne.
⚫ Les conteneurs assurent la gestion du cycle de vie des composants qui
s'exécutent en eux. Les conteneurs fournissent des services qui
peuvent être utilisés par les applications lors de leur exécution.
ENSEM Introduction à Java EE 29
les conteneurs Java EE
⚫ La plate-forme Java EE disposent de conteneurs pour les composants
Web et les composants métiers.
⚫ Ces conteneurs possèdent des interfaces leur permettant de
communiquer avec les composants qu'ils hébergent.
⚫ Il existe plusieurs conteneurs définit par Java EE:
• conteneur web : pour exécuter les servlets, les JSP et JSF
• conteneur d'EJB : pour exécuter les EJB
• conteneur client : pour exécuter des applications autonomes sur les
postes qui utilisent des composants Java EE
ENSEM Introduction à Java EE 30
Les conteneurs Java EE
ENSEM Introduction à Java EE 31
Les serveurs JEE
⚫ Un serveur JEE est capable d’exécuter :
• des servlets : classes Java exécutées côté serveur
• des JSP, JSF :
• Java Server Pages
• Fichiers de script qui «mélangent» du Java et du
HTML/Javascript
⚫ Le développement avec les servlets/JSP nécessite des conteneurs de
servlets simples : Tomcat (référence), Resin, Jetty,…
⚫ Le développement de l’ensemble des spécifications JEE exige des
conteneurs de servlets et des EJBs :
⚫ Les serveurs d'applications peuvent fournir un conteneur web
uniquement (Tomcat) ou un conteneur d'EJB uniquement (JBoss,
Jonas, ...) ou les deux (GlassFish, Websphere, Weblogic, ...).
ENSEM Introduction à Java EE 32
Java EE : Les APIs du conteneur web
ENSEM Introduction à Java EE 33
Java EE : Les APIs du conteneur EJB
2013/2014 Introduction à Java EE 34
Java EE : Les APIs du conteneur client
ENSEM Introduction à Java EE 35
déploiement d’une application
⚫ Pour déployer une application dans un conteneur, il faut lui fournir
deux éléments :
⚫ l'application avec tous les composants (classes compilées,
ressources ...) regroupée dans une archive ou module. Chaque
conteneur possède son propre format d'archive.
⚫ un fichier descripteur de déploiement contenu dans le module qui
précise au conteneur des options pour exécuter l'application
⚫ Une application est un regroupement d'un ou plusieurs modules
dans un fichier EAR (Entreprise ARchive). L'application est décrite
dans un fichier [Link] lui même contenu dans le fichier
EAR
ENSEM Introduction à Java EE 36
Les packages d’une application JEE
⚫ Les composants web
• Une application Web (*.xhtml, *.jsp, servlets, …) empaquetée dans un .jar
(.war) et est paramétrée dans le fichier WEB-INF/[Link]
• L’application est installée dans le répertoire webapps du serveur web
JavaEE
⚫ Structure d’une Web Application Archive (.war)
• *.xhtml, *.png, *.jsp, …, [Link], [Link]
• WEB-INF/[Link] : Fichier de déploiement pour paramétrer les servlets,types
MIME additionnels, …
• WEB-INF/classes/ : .class des servlets et des classes (JavaBean, …) associées
ressources additionnelles ([Link], …)
• WEB-INF/lib/ : .jar additionnels provenant de tierce parties (comme des drivers
JDBC,TagLib (jsf, …), …
• WEB-INF/tlds/ : .tld décrivant les TagLibs
ENSEM Introduction à Java EE 37
Assemblage
⚫ Lorsque tous les modules sont assemblés dans un fichier jar, on peut les
déployer directement dans un conteneur.
⚫ On peut aussi intégrer le fichier jar dans un fichier ear (entreprise
archive) et déployer ce dernier.
⚫ Un fichier ear sert à assembler un ou plusieurs modules (des EJB ou des
applications web) en une archive unique afin que leur déploiement sur un
serveur d’applications soit simultané et cohérent.
⚫ Pour déployer une application web on peut assembler les EJB et les
entités dans des fichiers jar séparés, les servlets dans un fichier war et
tout regrouper dans un fichier ear.
⚫ Il suffit ensuite de déployer ce fichier sur le serveur d’applications pour
pouvoir manipuler les entités à partir de la servlet en utilisant les EJB.
ENSEM Introduction à Java EE 38
Assemblage
⚫ Depuis EJB 3.1, les EJB peuvent également être assemblés directement
dans un module web (fichier war).
⚫ Dans la figure de droite, la servlet, l’EJB et l’entité sont tous assemblés
dans le même fichier war, avec tous les descripteurs de déploiement.
⚫ Le descripteur de déploiement est stocké dans META-INF/[Link]
dans le module EJB et dans WEB-INF/[Link] dans le module web.
ENSEM Introduction à Java EE 39
Extraction
⚫ Pour visualiser le ce contenu de l’archivage d’une
application :
jar tf [Link]
⚫ Les fichiers peuvent être extraits de l’archive avec la
commande suivante
jar xvf [Link]
⚫ Les fichiers dans l’archive sont recrées sur le disque
dans le répertoire courant
ENSEM Introduction à Java EE 40
Les Servlets
ENSEM Introdution à JEE 1
Les technologies côté serveur
⚫ Il ya beaucoup de technologies disponibles côté serveur :
⚫ Java (servlet, JSP, JSF, Struts, Spring, Hibernate),
⚫ ASP,
⚫ PHP,
⚫ script CGI, et bien d'autres.
⚫ Servlet Java est le fondement de la technologie Java
côté serveur, JSP (JavaServer Pages), JSF (JavaServer
Faces), Struts, Spring, Hibernate, et d'autres, sont des
extensions de la technologie des servlets.
ENSEM Java EE : servlets 1
Les versions des Servlet
⚫ J2EE 1.2 (12 Décembre 1999) ( Java Servlet 2.2 , JSP 1.1, EJB 1.1,
JDBC 2.0)
⚫ J2EE 1.3 (24 Septembre 2001) ( Java Servlet 2.3 , JSP 1.2, EJB 2.0,
JDBC 2.1)
⚫ J2EE 1.4 (11 Novembre 2003) ( Java Servlet 2.4 , JSP 2.0, EJB 2.1,
JDBC 3.0)
⚫ Java EE 5 (11 mai 2006) ( Java Servlet 2.5 , JSP 2.1, JSTL 1.2, JSF
1.2, EJB 3.0, JDBC 3.0)
⚫ Java EE 6 (10 Décembre 2009) ( Java Servlet 3.0 , JSP 2.2/EL 2.2,
JSTL 1.2, JSF 2.0, EJB 3.1, JDBC 4.0)
⚫ Java EE 7: (septembre 2013) (Java Servlet 3.1, JSP 2.3/EL 3.0, JSF
2.2, HTML 5, EJB 3.2, JPA 2.1)
ENSEM Java EE : servlets 2
Web dynamique : principes
Formulaire :
-Champs de saisie
-Bouton de
validation
ENSEM Java EE : servlets 3
Web dynamique : principes
Transmission des
données du
formulaire
Réponse à la
demande
ENSEM Java EE : servlets 4
Web dynamique : principes
ENSEM Java EE : servlets 5
Les servlets : introduction
⚫ Les servlets sont au serveur web ce que les applets sont aux
navigateurs pour le client.
⚫ Les servlets sont des applications java coté serveur, comme les
CGI, ASP ou PHP.
⚫ Les servlets permettent de gérer des requêtes HTTP et
fournissent au client une réponse HTTP dynamique.
ENSEM Java EE : servlets 6
Les servlets : fonctionnement
⚫ Une Servlet est un programme Java qui lit les données envoyées par
un client web et elle génère un résultat.
⚫ Les données sont envoyées des formulaires ou des entêtes des
requêtes.
⚫ Lors de la création d’une réponse, une servlet :
• peut utiliser toutes les fonctions du langage Java
• peut communiquer avec des ressources externes (fichiers, BD, ...) et/ou
d’autres applications
ENSEM Java EE : servlets 7
Avantage des servlets par rapport aux CGI
⚫ Portabilité : indépendante système exploitation et des serveurs web
⚫ Efficacité : semi compilée, multithread (plutôt que des processus pour
les CGI), gestion du cache, connexions persistantes
⚫ Puissance : communication bidirectionnelle avec le serveur web,
partage de données entre servlets, chaînage de servlets, servlet
modifiée peut être réactivée sans redémarrage du serveur
⚫ Modularité : possibilité d’avoir plusieurs servlets, chacune pouvant
accomplir une tâche spécifique
⚫ Pratique : gestion des cookies, suivi des sessions, manipulation
simple du protocole HTTP, peut dialoguer avec applets coté client via
RMI
ENSEM Java EE : servlets 8
Les technologies
ENSEM Java EE : servlets 9
Package Servlet
⚫ L’API pour les servlets est constituée de deux packages :
• [Link] : package générique
• [Link] : package spécifique pour les servlets HTTP
ENSEM Java EE : servlets 10
API des servlets
ENSEM Java EE : servlets 11
API servlet
⚫ l'API Servlet fournit
deux classes qui
proposent déjà une
implémentation:
• GenericServlet :
pour la
conception de
Servlets
indépendantes
du protocole
• HttpServlet : pour
la conception de
Servlets
spécifiques au
protocole HTTP
ENSEM Java EE : servlets
1
Fonctionnement d'une servlet
⚫ Lorsqu'une servlet est appelée par un client, la méthode
service() est exécutée. Celle-ci est le principal point d'entrée de
toute servlet et accepte deux objets en paramètres :
⚫ l'objet ServletRequest encapsulant la requête du client, c'est-à-
dire qu'il contient l'ensemble des paramètres passés à la
servlet (informations sur l'environnement du client, cookies du
client, URL demandée, ...)
⚫ l'objet ServletResponse permettant de renvoyer une réponse
au client (envoyer des informations au navigateur). Il est ainsi
possible de créer des en-têtes HTTP (headers), d'envoyer des
cookies au navigateur du client, ...
Développer une servlet
⚫ Afin de développer une servlet fonctionnant avec le protocole HTTP, il suffit
de créer une classe étendant HttpServlet.
⚫ La classe HttpServlet (dérivant de GenericServlet) permet de fournir une
implémentation de l'interface Servlet spécifique à HTTP.
⚫ La classe HttpServlet surcharge la méthode service en lisant la méthode
HTTP utilisée par le client, puis en redirigeant la requête vers une méthode
appropriée.
⚫ Les deux principales méthodes du protocole HTTP étant GET et POST, il
suffit de surcharger la méthode adéquate afin de traiter la requête :
• Si la méthode utilisée est GET, il suffit de redéfinir la méthode
public void doGet(HttpServletRequest req, HttpServletResponse res);
• Si la méthode utilisée est POST, il suffit de redéfinir la méthode
public void doPost(HttpServletRequest req, HttpServletResponse res);
ENSEM Java EE : servlets 14
Servlet web : HttpServlet
⚫ Une servlet HTTP doit hériter de la classe HttpServlet orientée développement
Web.
⚫ La classe HttpServlet possède des méthodes :
• init(ServletConfig) : exécutée au chargement de la servlet
• doGet(HttpServletRequest, HttpServletResponse) : exécutée à chaque
connexion d’un navigateur (demande ressource)
• doPost(HttpServletRequest, HttpServletResponse) : exécutée à chaque
validation de formulaire (modifie la ressource)
• destroy() : exécutée lors de l’arrêt du serveur
• Les méthodes doGet(), doPost(), doPut(), doDelete(), doHead(),
doOptions() et doTrace() utilisent des objets HttpServletRequest et
HttpServletResponse passés en paramètres .
• [Link]() : vérifie si le contenu délivré par la servlet a
changé
ENSEM Java EE : servlets 15
Lire la requête : HttpServletRequest
⚫ Dans la méthode doXXX() (doGet() ou doPost() selon la méthode invoquée) la
requête de l'utilisateur est passée en paramètres sous forme HttpServletRequest
⚫ Les requêtes sont transmises du client au serveur par le protocole HTTP.
⚫ les différentes méthodes de HttpServletRequest :
• String getMethod() : récupère la méthode HTTP utilisée par leclient
• String getHeader(String Key) :récupère la valeur de l'attribut Key del'en-tête
• String getRemoteHost() : récupère le nom de domaine du client
• String getRemoteAddr() : récupéré l'adresse IP du client
• String getParameter(String Key) : récupère la valeur du paramètre Key (clé) d'un
formulaire. Lorsque plusieurs valeurs sont présentes, la première est retournée
• String[] getParameterValues(String Key) : récupère les valeurs correspondant au
paramètre Key (clé) d'un formulaire, c'est-à-dire dans le cas d'une sélection multiple
(cases à cocher, listes à choix multiples) les valeurs de toutes les entitéssélectionnées
• Enumeration getParameterNames() : retourne un objet Enumération contenant laliste
des noms des paramètres passés à la requête
• String getServerName() : récupère le nom du serveur
•ENSEM
String getServerPort() : récupère le numéro de port du serveur
Java EE : servlets 16
Créer la réponse : HttpServletResponse
⚫ La réponse à fournir à l'utilisateur est représentée sous forme d'objet
HttpServletResponse.
⚫ Les différentes méthodes de l'objet HttpServletResponse sont :
• String setStatus(int StatusCode) : définit le code de retour de laréponse
• void setHeader(String Nom, String Valeur) : définit une paire clé/valeur dans les en-
têtes
• void setContentType(String type) : définit le type MIME de la réponse HTTP, c'est-à-
dire le type de données envoyées au navigateur
• void setContentLength(int len) : définit la taille de la réponse
• PrintWriter getWriter() : retourne un objet PrintWriter permettant d'envoyer du texte
au navigateur client. Il se charge de convertir au format approprié les caractères
Unicode utilisés par Java
• ServletOutputStream getOutputStream() : définit un flot de données à envoyerau
client, par l'intermédiaire d'un objet ServletOutputStream, dérivé de la classe
[Link]
• void sendredirect(String location) : permet de rediriger le client vers l'URLlocation
ENSEM Java EE : servlets 17
Servlet : cycle de vie
⚫ Un client émet une requête
destinée à une servlet
⚫ Le serveur charge et exécute
les classes Java qui génèrent
des informations
⚫ Le serveur retourne les
informations au client
⚫ Les états d'une servlet. Le
passage d'un état à un autre
est automatique et est fait
par le conteneur de servlets.
ENSEM Java EE : servlets 18
Servlet : cycle de vie
⚫ Une fois chargée en mémoire dans le moteur (conteneur) de servlets
(i.e. la JVM), le conteneur lance la méthode service(…) à chaque
requête.
⚫ Les trois méthodes :
• public void init(),
• public void service(…),
• public void destroy()
sont définies dans la classe abstraite [Link].
⚫ La méthode service(...) contient deux paramètres qui modélisent la
requête et la réponse
ENSEM Java EE : servlets 19
HttpServlet : exemple 1
package mypkg;
import [Link].*;
import [Link].*;
import [Link].*;
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Etape 1. Spécifier le type MIMEdu contenu de la réponse
[Link]("text/html");
// Etape 2. Récupère le PrintWriter pour envoyer des données au client
PrintWriter out = [Link]();
// Step 3. Envoyer l’information au client
[Link]("<html>");
[Link]("<head><title>Hello Servlet</title></head>");
[Link]("<body>");
[Link]("<h1>Hello à tous les étudiants AII !</h1>");
[Link]("Il est : " + new [Link]());
[Link]("</body></html>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
} }
ENSEM Java EE : servlets 20
Manipulation manuelle de
Tomcat
⚫ On lance le serveur web Tomcat
⚫ La servlet compilée est rangée
sous
REP_INSTAL_TOMCAT\webapp
s\helloServlet\WEBINF\classes
⚫ correspond à l'URL :
[Link]
sayHello
⚫ Mettre à jour [Link]
ENSEM Java EE : servlets 21
[Link]
⚫ Le fichier [Link] du répertoire WEB-INF de l'application web
configure l'application web.
⚫ L'élément <servlet> associe un nom à une classe Java servlet
⚫ L'élément <servlet-mapping> associe à ce nom l'URL relative qui
permet d'atteindre cette servlet.
<servlet>
<servlet-name> HelloServlet </servlet-name>
<servlet-class> [Link] </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> HelloServlet </servlet-name>
<url-pattern> /sayhello </url-pattern>
</servlet-mapping>
ENSEM Java EE : servlets 22
Fichier de description : [Link]
ENSEM Java EE : servlets 23
Entête du [Link]
⚫ Syntaxe de " [Link] " en servlet 3.0 (Tomcat 7 et Glassfish 3.1 ) :
⚫ Alors que sa syntaxe en servlet 2.5 (Tomcat 6 and Glassfish 3) :
ENSEM Java EE : servlets 24
Exemple 1 : exécution
ENSEM Java EE : servlets 25
HttpServlet : exemple 2
//Source Code for RequestInfo Example
import [Link].*;
import [Link].*;
import [Link].*;
public class RequestInfo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
IOException, ServletException {
[Link](" text/html ");
PrintWriter out = [Link]();
[Link](" <html> ");
[Link](" <body> ");
[Link](" <head> ");
[Link](" <title>Request Information Example</title> ");
[Link](" </head> ");
[Link](" <body> ");
[Link](" <h3>Request Information Example</h3> ");
[Link](" Method: " + [Link]());
[Link](" Request URI: " + [Link]());
[Link](" Protocol: " + [Link]());
[Link](" PathInfo: " + [Link]());
[Link](" Remote Address: " + [Link]());
[Link](" </body> "); [Link](" </html> ");
}
/** We are going to perform the same operations for POST requests as for GET methods,
so this method just sends the request to the doGet method. */
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException { doGet(request, response);
}}
ENSEM Java EE : servlets 26
Exemple 2 :exécution
ENSEM Java EE : servlets 27
Servlet : exemple 3
⚫ Chaque servlet n'est instanciée qu’une seule fois
⚫ D’où la persistance de ses données entre 2 invocations
public class CompteurServlet extends HttpServlet {
int compteur = 0;
public void service( HttpServletRequest request,
HttpServletResponse response )
throws ServletException, IOException {
[Link]( "text/html" );
PrintWriter out = [Link]();
[Link]( "<html><body>" );
[Link]( "<h1> "+ " Compteur = "+compteur++ + "</h1>" );
[Link]( "</body></html>" );
}}
ENSEM Java EE : servlets 28
Exemple 3 : exécution
ENSEM Java EE : servlets 29
Atelier 1 : servlet
Les étapes pour construire un exemple
de servlet en utilisant Eclipse et tomcat
7.x
ENSEM Java EE : servlets 30
Tomcat
⚫ Un «conteneur web» (web container) JEE
⚫ Implémentation Java de référence
⚫ Serveur open-source gratuit et multiplateformes(écrit en
Java)
⚫ Téléchargeable sur : [Link]
⚫ Tomcat utilise la variable d’environnement JAVA_HOME qui désigne
le dossier d’installation du JDK.
⚫ Eclipse / window / préférences :
• Tomcat: choisir version 7.x, répertoire d’installation de Tomcat, un fichier
par contexte,
• Rep_tomcat\conf\catalina\localhost
ENSEM Java EE : servlets 31
Vérification de l’installation
⚫ Si tout s’est bien passé, en tapant [Link] dans le
navigateur on obtient :
ENSEM Java EE : servlets 32
Pilotage de Tomcat à partir d’eclipse
⚫ Préciser à Eclipse le répertoire d’installation de Tomcat :
• Préférences->Server->Installed Runtimes :
(Par exemple C:\repInstal\Apache Software Foundation\Tomcat 7.0)
⚫ Piloter tomcat à partir d’Eclipse :
• Afficher la vue 'Serveurs' : menu Fenêtre->Afficher la vue->Autre...,
puis Serveur->Serveurs.
• Dans la vue 'Serveurs' menu contextuel :
ENSEM Java EE : servlets 33
Ajout nouveau serveur
⚫ Pour ajouter un serveur, il faut ajouter son répertoire d’installation.
⚫
ENSEM Java EE : servlets 34
Pilotage des serveurs à partir
d’Eclipse
⚫ La vue 'Serveurs' permet de piloter les serveurs déclarés, il est
notamment possible de les démarrer en mode exécution ou débogage :
ENSEM Java EE : servlets 35
Vérification de l’installation dans
navigateur interne à Eclipse
⚫ Allez dans window de Eclipse, Show View, other…, General et Internal
Web Browser, puis tapez [Link] dans le navigateur.
⚫ En cas de l’erreur 404 :
• Allez dans le dossier : votre-dossier-instal-tomcat\webapps et
copiez le dossier root
• Allez dans : votre-dossier-
workspace\.metadata\.plugins\[Link]\tmp0\wtpwebapp
s ou […\tmp1\wtpwebapps si vous avez un autre serveur déjà
enregistré avec Eclipse ]
• Collez dans ici le dossier root (dites yes pour fusionner et remplacer
le dossier et les fichiers).
• Copiez les dossiers docs, examples et host-manager, situé au
même emplacement que root, dans : votre-dossier-
workspace\.metadata\.plugins\[Link]\tmp0\webapps
ENSEM Java EE : servlets 36
Création d’un projet web
⚫ Menu contextuel de la vue 'Explorateur de projet', ensuite création de
projet Web dynamique.
⚫
ENSEM Java EE : servlets 37
Création d’un projet web
⚫ 1 - Le nom du projet.
2- L'environnement d'exécution
cible : serveur associé au projet,
pour ajouter les fichiers JAR
nécessaires dans le chemin de
compilation du projet.
3- Appartenance à un EAR : le
projet Web dynamique correspond à
un WAR, lors du déploiement un
WAR puisse être stocké dans un
fichier EAR. L'association d'un WAR
avec un EAR est facultative. Tomcat
ne supporte pas le format EAR.
ENSEM Java EE : servlets 38
Création du projet web
1- Le nom de contexte : apparaît dans
les URL permettant d'accéder à
l'application. Par défaut, nom du projet.
2 - Le nom du 'répertoire de contenu' :
un projet Web Dynamique n'a pas
directement la structure d'un WAR. La
structure du WAR se trouve dans un sous-
répertoire du projet, (par défaut est
'WebContent'. Permet de stocker dans le
projet des fichiers qui ne seront pas
visibles par le serveur de test et qui ne
seront pas exportés lors de la création du
fichier WAR correspondant au projet. Par
exemple, le code source n'est pas stocké
dans le WAR, il est dans le sous-répertoire
'src'.
ENSEM Java EE : ser vlets
3
Développement d’une servlet
⚫ Création d’une servlet : menu contextuel
associé au projet Web, dans ce menu
choisir 'Nouveau->Servlet‘
⚫ Saisir le nom du package et le nom de
classe de la servlet
⚫ Dans l’étape suivante
ENSEM Java EE : servlets 40
Développement d’une servlet
⚫ La seconde étape permet de saisir des
informations qui seront utilisées pour
déclarer la servlet dans le descripteur de
déploiement de l'application (fichier
[Link]).
⚫ La plus importante information est la liste
des alias (champ 'Mappage d'URL'). Ces
alias apparaîtront dans les URL
permettant d'accéder à la servlet (la
forme de ces URLs sera
[Link]
exte/Alias).
⚫ Une servlet peut avoir plusieurs alias, par
défaut projet web définit nom de la classe
de la servlet comme un alias.
ENSEM Java EE : servlets 41
Développement d’une servlet
⚫ La dernière étape
permet de
sélectionner les
méthodes qui devront
être générées lors de
la création de la
classe de la servlet :
⚫ cliquer sur 'Terminer',
la classe est crée.
Cette nouvelle classe
apparaît dans la vue
'Explorateur de projet'
et est ouverte en
édition.
ENSEM Java EE : servlets 42
Développement d’une servlet
⚫ Ajouter le code suivant dans la méthode doGet :
ENSEM Java EE : servlets
43
Développement d’une servlet
⚫ Le fichier [Link] est mis à jour.
ENSEM Java EE : servlets 44
Test de la servlet
⚫ Pour tester la servlet à partir de
eclipse :
⚫ menu contextuel associé à la classe
de la servlet, dans ce menu choisir
'Exécuter en tant que->Exécuter
sur le serveur'.
⚫ Le serveur peut aussi être lancé en
mode debug en utilisant 'Deboguer
en tant que->Deboguer sur le
serveur'.
⚫ À la première utilisation, une boîte
de dialogue permet d'indiquer le
serveur sur lequel l'exécution doit se
faire :
ENSEM Java EE : servlets 45
Test d’une servlet
⚫ Un navigateur Web est ouvert dans la zone d'édition et invoque la servlet.
⚫ Pour notre exemple, nous avons modifié l'URL déclenchée
automatiquement pour ajouter le paramètre attendu par notre servlet :
ENSEM Java EE : servlets 46
Servlet et formulaire
⚫ Un formulaire peut envoyer des informations à une servlet:
⚫ Mettre le nom de la servlet qui va recevoir les informations en tant que valeur de
l'attribut Action de la balise Form,
⚫ Spécifier la méthode HTTP désirée grâce à l'attribut Method.
⚫ Les données sont envoyées à l'aide de la méthode spécifiée (GET par défaut)
après que l'utilisateur clique sur un bouton de type Submit
⚫ Exemple : formulaire en HTML qui envoie des infos à la servlet Parametres :
<FORM Method="POST"
Action="[Link]
Nom : <INPUT type=text size=20 name=nom><BR>
Prénom : <INPUT type=text size=20 name=prenom><BR>
Age : <INPUT type=text size=2 name=age><BR>
<INPUT type=submit value=Envoyer>
</FORM>
ENSEM Java EE : servlets 47
Envoie par la méthode get
⚫ Chaque élément du formulaire doit posséder un nom unique.
⚫ La valeur et le nom de l'élément forme une paire nom/valeur du type :
Nom_de_l_element = valeur_element
⚫ L'ensemble des paires nom/valeur sont séparées par des ET ("&").
⚫ champ1=valeur1&champ2=valeur2&champ3=valeur3
⚫ L'envoi de cette chaîne se fera différemment selon que la méthode utilisée pour
l'envoi du formulaire est GET ou POST.
⚫ La méthode GET : envoie les éléments du formulaire au travers de l'URL, en
ajoutant l'ensemble des paires nom/valeur à l'URL, séparé d’un point
d'interrogation, ce qui donne une URL du type :
[Link]
⚫ La longueur de l’URL étant limitée à 255 caractères, les informations situées au-
delà de cette limite seront perdues.
⚫ De plus, cela crée une URL surchargée dans la barre d'adresse d'un navigateur
et peut dévoiler des informations sensibles comme un mot de passe...
ENSEM Java EE : servlets 48
Envoie par la méthode post
⚫ La méthode POST : est une bonne alternative à la méthode GET.
⚫ Cette méthode code les informations de la même façon que la
méthode GET (encodage URL et paires nom/valeur)
⚫ mais elle envoie les données à la suite des en-têtes HTTP, dans un
champ appelé corps de la requête.
⚫ De cette façon la quantité de données envoyées n'est plus limitée, et
est connue du serveur grâce à l'en-tête permettant de connaître la
taille du corps de la requête.
ENSEM Java EE : servlets 49
Lecture des paramètres avec une
servlet
⚫ L'un des points forts des servlets est la possibilité de traiter
("parser") les données en provenance de formulaires.
⚫ L'objet HttpServletRequest possède de nombreuses méthodes (la
plus courante getParameter()) permettant de retourner la valeur d'un
champ du formulaire, qu'il s'agisse de données passées par POST
ou GET.
⚫ La méthode getParameter() : permet de retourner le valeur d'un
champ dont on a passé le nom en argument :
⚫ public String getParameter(String Key)
⚫ Les noms des champs sont sensibles à la casse. Si le champ est
vide, une chaîne vide est retournée. Si le champ n'existe pas, la
valeur null est retournée.
ENSEM Java EE : servlets 50
Formulaire et servlet
⚫ Un formulaire comportant une entrée comme suit :
⚫ <Input type="text" name="NomDuChamp"> sera traité dans la servlet
de cette façon : String Champ = [Link]("NomDuChamp")
⚫ La méthode getParameterValues() : un champ ayant plusieurs
valeurs (liste à choix multiples, cases à cocher, ...).
⚫ public String[] getParameterValues(String Key) : retourne l'ensemble
des valeurs affectées à la clé spécifiée en paramètre.
⚫ La méthode getParameterNames() : donne l'ensemble des noms
des champs du formulaire passé à la servlet.
⚫ Enumeration getParameterNames() : L’objet Enumeration, contient la
liste des champs du formulaire.
⚫ Chaque entrée peut être traduite en chaîne, puis la traiter avec
getParameter() afin de récupérer sa valeur.
ENSEM Java EE : servlets 51
Formulaire et servlet : exemple
package com.p;import [Link].*;import [Link].*;import [Link].*;
import [Link].*;
public class Parametres extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { [Link]("text/html");
PrintWriter out = [Link]();
[Link]("<html><body>\n" +"<h1>Tableau des paramètres</h1>\n" +
"<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n" +"<tr>\n" +
"<th>Nom</th><th>Valeur(s)</th>");
Enumeration NomsParam = [Link]();
while([Link]()) {
String NomParam = (String)[Link]();
[Link]("<tr>"); [Link]("<td>" + NomParam + "</td>");
String[] ValeursParam = [Link](NomParam);
if ([Link] == 1) {
String ValeurParam = ValeursParam[0];
ENSEM Java EE : servlets 52
Formulaire et servlet : exemple
if ([Link]() == 0)
[Link]("<td><b>Aucune valeur</i></td>");
else{ [Link]("<td>"+ValeurParam+ "</td>"); [Link]("</tr>");}
}
else { [Link]("<td><ul>");
for(int i=0; i < [Link]; i++) {
[Link]("<tr>" + ValeursParam[i] + "</tr>"); }
[Link]("</ul></td>");}
}
[Link]("</table>\n</body></html>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response); }
}
ENSEM Java EE : servlets 53
Servlet et formulaire
Dans monprojet1 créer new file [Link] et lancer
[Link]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"[Link]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Formulaire - saisie</title>
</head>
<body>
<FORM Method="POST" Action="Parametres">Nom : <INPUT type=text
size=20 name=nom><BR>
Prénom : <INPUT type=text size=20 name=prenom><BR>
Age : <INPUT type=text size=2 name=age><BR>
<INPUT type=submit value=Envoyer></FORM>
</body>
</html>
ENSEM Java EE : servlets 54
Servlet et formulaire : resultat
ENSEM Java EE : servlets
55
Servlet : récapitulatif formulaire
ENSEM Java EE : servlets 56
Les cookies
⚫ Cookie : Informations envoyées par le serveur, stockée sur le client et
renvoyées par le client quand il revient visiter la même URL.
- Durée de vie réglable
- Permet d'avoir des données persistantes côté client
⚫ Utilisation :
- Identification des utilisateurs
- Éviter la saisie d’informations à répétition (login, password, adresse,…)
- Gérer des préférences utilisateur, profils
⚫ Sécurité :
- Jamais interprété ou exécuté : pas de virus
- Pas partageable : le navigateur ne distribue la cookie qu'au serveur qui l'a émis
-Une cookie est limitée à 4KB et les navigateurs se limitent à 300 cookies (20
par site) : pas de surcharge de disque
-Bien pour rendre privées des données non sensibles mais ne constitue pas un
traitement sérieux de la sécurité
ENSEM Java EE : servlets 57
Les cookies
⚫ L'en-tête HTTP réservé à l'utilisation des cookies s'appelle Set-
Cookie, il s'agit d'une simple ligne de texte de la forme:
Set-Cookie : NOM=VALEUR; domain=NOM_DE_DOMAINE;
expires=DATE
⚫ Cette chaîne de caractères commence par Set-Cookie : suivie par
des paires clés-valeur sous la forme CLE=VALEUR et séparées par
des virgules.
⚫ L'API servlet de Java propose un objet permettant de gérer de façon
quasi-transparente l'usage des cookies, il s'agit de l'objet Cookie.
ENSEM Java EE : servlets 58
Classe Cookie
⚫ La classe [Link] permet de créer un objet Cookie
encapsulant toutes les opérations nécessaires à la manipulation des cookies.
⚫ L’Envoi du cookie vers le navigateur du client se fait grâce à la méthode
addCookie() de l'objet HttpServletResponse.
Exemple : Cookie MonCookie = new Cookie("nom", "valeur");
[Link](MonCookie);
⚫ Pour récupérer les cookies provenant de la requête du client, on utilise la
méthode getCookies() de l'objet HttpServletRequest
⚫ Cookie[] getCookies() : retourne un tableau contenant l'ensemble des cookies
présentes chez le client. getName() de Cookie retrouve une cookie spécifique.
⚫ La récupération de la valeur d'une cookie se fait grâce à la méthode getValue()
de Cookie
Exemple : String Valeur = [Link]();
ENSEM Java EE : servlets 59
Web dynamique : cookies
ENSEM Java EE : servlets 60
Exemple de cookie
import [Link].*; import [Link].*;
public class ReadCookies extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, [Link] {
Cookie cookie = null;
Cookie[] cookies = [Link]();
boolean newCookie = false;
if (cookies != null) {
for (int i = 0; i < [Link]; i++) {
if (cookies[i].getName().equals("Cookies")) {
cookie = cookies[i];}
}}
if (cookie == null) {
newCookie = true;
int maxAge;
try {maxAge = new Integer(getServletContext().getInitParameter("cookie-age")).intValue();}
catch (Exception e) {maxAge = -1; }
cookie= new Cookie("Cookies", "" + getNextCookieValue());
[Link]([Link]());
[Link](100);
[Link](cookie);
} ENSEM Java EE : servlets 61
Exemple de cookie(suite)
[Link]("text/html");
[Link] out = [Link]();
[Link]("<html>"); [Link]("<head>");
[Link]("<title>Read Cookie</title>");[Link]("</head>");
[Link]("<body>");
[Link]("<h2> Information sur notre Cookie appelé \"Cookies\"</h2>");
[Link]("Cookie value: " + [Link]() + "<br>");
if (newCookie) { [Link]("Cookie Max-Age: " + [Link]() + "<br>");
[Link]("Cookie Path: " + [Link]() +"<br>");
}
[Link]("</body>");[Link]("</html>"); [Link]();
}
private long getNextCookieValue() { return new [Link]().getTime();}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, [Link] {doGet(request, response);}
}
ENSEM Java EE : servlets 62
Cookie : résultat
ENSEM Java EE : servlets 63
HTTP: un protocole non connecté
⚫ Le protocole HTTP est sans états (stateless protocol)
⚫ Chaque requête est traitée indépendamment des autres et qu'aucun historique
des différentes requêtes n'est conservé.
⚫ Inconvénient dans le cas du e-commerce, pour lequel le serveur doit assurer
mémoriser le suivi de session .
⚫ Les méthodes traditionnelles de suivi de session :
⚫ stocker les informations concernant l'utilisateur sur le serveur, et de les relier à
chaque requête grâce à un identifiant présent dans la requête et sur le
serveur.
⚫ échanger des données d'identification du client entre chaque requête
• en ajoutant à l'URL des variables d'identification
• en passant en paramètre un champ de formulaire caché
• en utilisant les cookies
⚫ en demandant l'identification de l'utilisateur à chaque requête
ENSEM Java EE : servlets 64
HttpSession : introduction
⚫ HttpSession est un objet persistant coté serveur qui permet de stocker les
informations saisies au fur et à mesure par l'utilisateur et de les relier à
chaque requête grâce à l'identifiant passé en paramètre.
⚫ Un identificateur unique de session, permet de relier l’utilisateur aux données
stockées sur le serveur et peut être transmis en :
• L’URL : <a href="[Link]
• Champs de formulaire cachés : <Input type="hidden" name="id" value="674684641">
• Utilisation de cookies :
Cookie C = new Cookie("id","674684641"); // Creation du cookie
[Link](24*3600); // définition de la limite de validité
[Link](C); // envoi du cookie dans la réponseHTTP
⚫ Ce mécanisme de cookies pose quelques problèmes :
• des utilisateurs désactivent les cookies par crainte
• certains anciens navigateurs ne gèrent pas les cookies
ENSEM Java EE : servlets 65
HttpSession
⚫ Avec HttpSession, une session est établie pour une durée
préfixée, indépendamment du nombre de requêtes établies.
⚫ Dans la classe HttpServletRequest, on a deux méthodes :
• HttpSession getSession()
• HttpSession getSession(boolean create) : retourne la session
HttpSession courante associée à cette requête, ou bien une
nouvelle session, dans le cas ou il n’y a pas de session courante et
create est true.
ENSEM Java EE : servlets 66
HttpSession
⚫ getRequestedSessionId() : retourne l’ID de la session.
⚫ Dans la classe HttpServletResponse:
• String encodeURL(String url) : code l’URL spécifiée en argument
en lui incluant le ID de la session.
• si l’encodage n’est pas nécessaire, elle se contente de retourner
l’URL sans y introduire de modification.
⚫ Dans la classe HttpSession:
• setAttribute(String name, Object value) : associé un objet à un
nom spécifié en argument, pour cette session.
• getAttribute(String name) : retourne l’objet associé au nom spécifié
en argument, ou bien null si aucun nom n’a été associé à l’objet.
• removeAttribute(String name) : retire l’association de l’objet avec
le nom spécifié en argument.
ENSEM Java EE : servlets 67
HttpSession
⚫ String getId() : retourne le ID de la session.
⚫ Enumeration getAttributeNames() : retourne un énumérateur
d’objets string contenant les noms de tous les objets associés à
cette session.
⚫ long getCreationTime() : retourne la date de création de la
session.
⚫ long getLastAccessedTime() : retourne la date de la dernière
requête envoyée par le client, associée à cette session.
ENSEM Java EE : servlets 68
Exemple de Session
package com.p;import [Link].*;import [Link].*;
import [Link].*;import [Link].*;import [Link].*;
public class SessionExample1 extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = [Link](true);
[Link]("text/html");
PrintWriter out = [Link]();
String head;
Integer count = new Integer(0);
if ([Link]()) { head = "New Session Value ";}
else {
head = "Old Session value";
Integer oldcount =(Integer)[Link]("count");
if (oldcount != null) {
count = new Integer([Link]() + 1);
}
}ENSEM Java EE : servlets
69
Code Source pour Session
[Link]("count", count);
[Link]("<HTML><BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H2 ALIGN=\"CENTER\">" + head + "</H2>\n" +
"<H4 ALIGN=\"CENTER\">Session Access Time:</H4>\n" +
"<TABLE BORDER=1 ALIGN=CENTER>\n" + "<TR BGCOLOR=\"pink\">\n" +
" <TD>Session Creation Time\n" +" <TD>" +
new Date([Link]()) + "\n" +
"<TR BGCOLOR=\"pink\">\n" +" <TD>Last Session Access Time\n" +
" <TD>" + new Date([Link]()) + "</TABLE>\n"
+"</BODY></HTML>");
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
ENSEM Java EE : servlets 70
Résultat : session
ENSEM Java EE : servlets 71
Résultat : session
ENSEM Java EE : servlets 72