View
144
Download
1
Category
Preview:
DESCRIPTION
Rapport TP2 J2EE
Citation preview
DEUXIEME RAPPORT EN JAVA EE
Encadré Par :
M Mohamed NAYA
Suivi de Session
L’objet HTTPSession
Définition
Fonctionnement d’une session
Méthode utilisées
Cycle de vie d’une session
Travaux Pratique
Préparé par
Soukaina NAJIHI
Soukaina BOUJADI
DEUXIEME RAPPORT EN JAVA EE
Suivi de Session
L’objet HTTPSession
Définition d’une session
Fonctionnement d’une session
Méthode utilisées
Cycle de vie d’une session
ratique
Préparé par :
Soukaina NAJIHI
Soukaina BOUJADI
DEUXIEME RAPPORT EN JAVA EE
2 2
DEUXIEME RAPPORT EN JAVA EE 2
Sommaire :
Remerciements..………………………………………………………..….……4
Suivi de session………..……………………….…………………………...…...5
L’objet HTTPSession……………………….……………………………..…...5
Définition d’une session……………………….…………………………..…...5
Fonctionnement d’une session………………….………………………...…...5
Méthode utilisées……………………….……………………………………...6
Cycle de vie d’une session……………………….………………………..…...6
Travaux Pratique……………………….…………………………….…..…...7
Suivi de session pour un compteur dynamique……..........….…..……..…7
Suivi de session pour un compteur statique……..........….………….……10
Récapitulations …………………………………………………….…...……12
3 3
DEUXIEME RAPPORT EN JAVA EE 3
Remerciement
Au terme de ce travail, Nous tenons à remercier notre Cher
professeur Monsieur Mohamed NAYA , pour ses
précieuses directives et son suivi continu et pour tous les efforts qu'il
a fournis en classe et qui ont porté leur fruits, et surtout pour son
soutien continue et inconditionnel.
Du fond du cœur, merci
DEUXIEME RAPPORT EN JAVA4
Le protocole HTTP est un protocole non connecté (on parle aussi de protocole sans états, en anglais stateless protocolrequête est traité indépendamment des autres et qu'aucun historique des différentes requêtes n'est conservé.
Ainsi le serveur web ne peut pas se « souvenir » de la requête précédente, ce qui est dommageable dans des utilisatlequel le serveur doit mémoriser les achats de l'utilisateur sur les différentes pages. Il s'agit donc de maintenir la cohésion entre l'utilisateur et la requête, c'est-à-dire reconnaître les requêtes provenant
du même utilisateur, associer un profil à l'utilisateur, connaître les paramètres de l'application (nombre de produits vendus, ...). On appelle ce mécanisme de gestion des états le « suivi de session » (en anglais session tracking).
Le protocole http en bref
Le protocole HTTP est un protocole sans le serveur ignore qu'une sprovient d'un m
En mode HTTP, pour le serveur, 2 requsuccessives d'un m
Le serveur En effet une adresse IP n'est pas suffisante pour identifier un utilisateur
DEUXIEME RAPPORT EN JAVA EE
e protocole HTTP est un protocole non connecté (on parle aussi de protocole sans états, en anglais stateless protocol), cela signifie que chaque requête est traité indépendamment des autres et qu'aucun historique des différentes requêtes n'est conservé.
Ainsi le serveur web ne peut pas se « souvenir » de la requête précédente, ce qui est dommageable dans des utilisations telles que le e-commerce, pour lequel le serveur doit mémoriser les achats de l'utilisateur sur les différentes pages. Il s'agit donc de maintenir la cohésion entre l'utilisateur et la requête,
dire reconnaître les requêtes provenant
du même utilisateur, associer un profil à l'utilisateur, connaître les paramètres de l'application (nombre de produits vendus, ...). On appelle ce mécanisme de gestion des états le « suivi de session » (en anglais session
protocole http en bref :
Le protocole HTTP est un protocole sans le serveur ignore qu'une séquence de requprovient d'un même client . En mode HTTP, pour le serveur, 2 requêtes successives d'un même client sont indépendantes Le serveur HTTP voit les requêtes, pas les clients. En effet une adresse IP n'est pas suffisante pour identifier un utilisateur
4 4
e protocole HTTP est un protocole non connecté (on parle aussi de ), cela signifie que chaque
requête est traité indépendamment des autres et qu'aucun historique des
Ainsi le serveur web ne peut pas se « souvenir » de la requête précédente, commerce, pour
lequel le serveur doit mémoriser les achats de l'utilisateur sur les différentes pages. Il s'agit donc de maintenir la cohésion entre l'utilisateur et la requête,
du même utilisateur, associer un profil à l'utilisateur, connaître les paramètres de l'application (nombre de produits vendus, ...). On appelle ce mécanisme de gestion des états le « suivi de session » (en anglais session
Le protocole HTTP est un protocole sans état => quence de requêtes
tes pendantes .
tes, pas les clients. En effet une adresse IP n'est pas suffisante pour
5 5
DEUXIEME RAPPORT EN JAVA EE 5
L'objet HttpSession
L'objet HttpSession permet de mémoriser les données de l'utilisateur, grâce à une structure similaire à une table de hachage, permettant de relier chaque id de session à l'ensemble des informations relatives à l'utilisateur. Ainsi en utilisant un mécanisme tel que les cookies, permettant d'associer une requête à un id, et l'objet HttpSession, permettant de relier des informations relatives à l'utilisateur à un id, il est possible d'associer facilement une requête aux informations de session !
Definition d’une session • Une session = Une suite d’interactions entre un client et Un serveur Web – Elle couvre plusieurs requêtes HTTP sur une période donnée • On peut utiliser les sessions pour – Mémoriser les actions d’un utilisateur unique – Exemples • achats en ligne (panier de commande) • examens à distance
Fonctionnement d’une session
A la première requête vers une application web :
Un objet HttpSession est créé. Ainsi qu’un identifiant unique pour cet objet.
L’identifiant est en général sauvegardé par un cookie appelé JSESSIONID seul l’identifiant de session est envoyé au client.
Grâce à cet identifiant, le serveur détermine l’objet session
correspondant à la requête courante.
A toute nouvelle requête émise par l’utilisateur, le cookie est transmis via le serveur web et accédé par la méthode :
DEUXIEME RAPPORT EN JAVA6
public String HttpSession.getId()
Méthodes utilisées
API de suivi de session HttpSession
Méthodes de création liées à la requête (HttpServletRequest) HttpSession getSession() : retourne la session associée à l’utilisateur HttpSession getSession(boolean p) : création selon la valeur de p
Gestion d’association (HttpSession)
Enumeration getAttributNames() : retourne les noms de tous les attributs
Object getAttribut(String name) : retourne l’objet associé au nom setAttribut(String na, Object va) : modifie na par la valeur va removeAttribut(String na) : supprime l’attribut associé à
Destruction (HttpSession)
invalidate() : expire la session logout() : termine la session
getAttribut("nom") renvoie un objet de type Object, qu’il faut donc caster.
Cycle de vie d’une session
A sa création, une période de temps est affectée à Elle expire automatiquement à la fin de cette période (par défaut 30mns
avec Tomcat). Elle peut être invalidée explicitement par la servlet
(HttpSession.invalidate()). Permet de fermer une session. A l’expiration (invalidation), les données de
(HttpSession) sont retournées au moteur de servlets. Les sessions ne sont donc pas invalidées à la fermeture du navigateur.
DEUXIEME RAPPORT EN JAVA EE
HttpSession.getId()
API de suivi de session HttpSession
Méthodes de création liées à la requête (HttpServletRequest) HttpSession getSession() : retourne la session associée à l’utilisateur HttpSession getSession(boolean p) : création selon la valeur de p
Gestion d’association (HttpSession) getAttributNames() : retourne les noms de tous les
Object getAttribut(String name) : retourne l’objet associé au nom setAttribut(String na, Object va) : modifie na par la valeur va removeAttribut(String na) : supprime l’attribut associé à
Destruction (HttpSession) invalidate() : expire la session logout() : termine la session
getAttribut("nom") renvoie un objet de type Object, qu’il faut donc caster.
Cycle de vie d’une session
A sa création, une période de temps est affectée à la session.Elle expire automatiquement à la fin de cette période (par défaut 30mns
Elle peut être invalidée explicitement par la servlet (HttpSession.invalidate()). Permet de fermer une session. A l’expiration (invalidation), les données de l’objet session(HttpSession) sont retournées au moteur de servlets. Les sessions ne sont donc pas invalidées à la fermeture du navigateur.
6 6
Méthodes de création liées à la requête (HttpServletRequest) HttpSession getSession() : retourne la session associée à l’utilisateur HttpSession getSession(boolean p) : création selon la valeur de p
getAttributNames() : retourne les noms de tous les
Object getAttribut(String name) : retourne l’objet associé au nom setAttribut(String na, Object va) : modifie na par la valeur va removeAttribut(String na) : supprime l’attribut associé à na
getAttribut("nom") renvoie un objet de type Object, qu’il
la session. Elle expire automatiquement à la fin de cette période (par défaut 30mns
l’objet session
Les sessions ne sont donc pas invalidées à la fermeture du navigateur.
7 7
DEUXIEME RAPPORT EN JAVA EE 7
Travaux Pratique :
1- Suivi de session pour un compteur dynamique
Dans cet exemple, nous allons savoir comment nous pouvons realiser un
programme qui gardera la trace combien de fois la servlet a été consultée.
Pour rédiger ce programme tout d'abord nous devons créer une classe
CounterServlet . Le nom de la classe doit suivre la convention de
nommage. N'oubliez pas de garder le nom de la classe de telle sorte qu'il
devient facile de comprendre ce que le programme va faire juste en
voyant le nom de la classe. Après avoir fait une classe définit un
compteur de variable qui va garder une trace de combien de fois le servlet
a été consultée. Maintenant, utilisez la méthode soit doGet () ou doPost ()
pour écrire une logique du programme. Notre logique du programme est
simple. Nous devons tout simplement incrémenter la valeur du compteur
de 1. Pour afficher la sortie utiliser la méthode de l'objet de la réponse qui
sera à son tour renvoyer l'objet de la classe PrintWrite méthode getWriter
(). Maintenant, afficher la valeur du compteur.
Le code du programme est donné ci-dessous:
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = {"/CounterServlet"}) public class CounterServlet extends HttpServlet {
int counter = 0; public void doGet(HttpServletRequest req, HttpServletResponseres)
throws ServletException, IOException { res.setContentType("text/html"); PrintWriter pw = res.getWriter(); counter++; pw.println(" à present le nombre du compteur est : " + counter); }
}
DEUXIEME RAPPORT EN JAVA8
Dans notre cas le fichier web.xml n'est pas créer par netbeans et on doit l'ajouter clique droit sur l'application '' ApplicationWeb_SousUbuntu'', Nouveau ,StandardDeployementDescriptor(web.xml)
<?xml version="1.0" encoding="UTF<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchemaxmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/webapp_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/webid="WebApp_ID" version="2.5"><display-name>CounterServlet</display<servlet> <servlet-name>CounterServlet</servlet<servlet-class>CounterServlet</servlet</servlet> <servlet-mapping><servlet-name>CounterServlet</servlet<url-pattern>/CounterServlet</url</servlet-mapping><welcome-file<welcome-file>in</welcome-file</web-app>
DEUXIEME RAPPORT EN JAVA EE
Dans notre cas le fichier web.xml n'est pas créer par netbeans et on doit l'ajouter clique droit sur l'application '' ApplicationWeb_SousUbuntu'', Nouveau , Autre / Web, StandardDeployementDescriptor(web.xml)
configuration dans web.xml
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/webapp_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
name>CounterServlet</display-name>
name>CounterServlet</servlet-name> class>CounterServlet</servlet-class>
mapping> name>CounterServlet</servlet-name>
pattern>/CounterServlet</url-pattern> mapping>
file-list> file>index.jsp</welcome-file> file-list>
8 8
Dans notre cas le fichier web.xml n'est pas créer par
l'application '' ApplicationWeb_SousUbuntu'',
-instance"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee app_2_5.xsd"
9 9
DEUXIEME RAPPORT EN JAVA EE 9
Apres creation et configuration de web.xml vous pouvez exécuter la servlet .
10 10
DEUXIEME RAPPORT EN JAVA EE 10
2- suivi de session pour un compteur satatique
Implémenter la méthode doGet pour gérer le suivi de session:
Affiche un compteur qui est incrémenté à chaque accès sur cette servlet
pendant une session.
DEUXIEME RAPPORT EN JAVA11
Cette servlet recupere d'abord l'objet HttpSession associé au client courant.
En passant true à getSession() , elle demande la reation d'une session si nécessaire. LA servlet obtient ensuite un objet Integer lié au nom tracker.count. Si cet objet n'existe pas , la servlet compteur .sinon ,elle remplace l'Integer par un nouveau dontincrémentée de 1 . Enfin , la servlet affiche le compteur courant et toutes les paires nom/valeur de la session .
DEUXIEME RAPPORT EN JAVA EE
Cette servlet recupere d'abord l'objet HttpSession associé au client courant.
getSession() , elle demande la reation d'une session si LA servlet obtient ensuite un objet Integer lié au nom
tracker.count. Si cet objet n'existe pas , la servlet démarre un nouveau compteur .sinon ,elle remplace l'Integer par un nouveau dont la valeur a été
de 1 . Enfin , la servlet affiche le compteur courant et toutes les paires nom/valeur de la session .
11 11
Cette servlet recupere d'abord l'objet HttpSession associé au client courant.
getSession() , elle demande la reation d'une session si LA servlet obtient ensuite un objet Integer lié au nom
un nouveau la valeur a été
de 1 . Enfin , la servlet affiche le compteur courant et toutes les
12 12
DEUXIEME RAPPORT EN JAVA EE 12
Mécanisme très puissant permettant de stocker des objets et non de simples chaînes de caractères comme les cookies.
Méthode de création (de HttpServletRequest) :
HttpSession getSession() : retourne la session associée à l’utilisateur.
Gestion d’association (de HttpSession) :
Enumération getAttributNames() : retourne les noms de tous les attributs.
Object getAttribut(String name) : retourne l’objet associé au nom.
setAttribut(String na, Object va) : donne la valeur va à l’attribut na.
removeAttribut(String na) : supprime l’attribut de nom na.
Destruction (de HttpSession) :
logout() : termine la session.
Recommended