Rapport tp2 j2ee

12
DEUXIEME R Encadré Par : M Mohamed NAYA Suivi de Sess L’objet H Définition Fonctionn Méthode Cycle de v Travaux Pra Préparé Soukain Soukain RAPPORT EN JAVA sion HTTPSession n d’une session nement d’une session utilisées vie d’une session atique é par : na NAJIHI na BOUJADI A EE

description

Rapport TP2 J2EE

Transcript of Rapport tp2 j2ee

Page 1: Rapport tp2 j2ee

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

Page 2: Rapport tp2 j2ee

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

Page 3: Rapport tp2 j2ee

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

Page 4: Rapport tp2 j2ee

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

Page 5: Rapport tp2 j2ee

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 :

Page 6: Rapport tp2 j2ee

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.

Page 7: Rapport tp2 j2ee

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

}

Page 8: Rapport tp2 j2ee

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"

Page 9: Rapport tp2 j2ee

9 9

DEUXIEME RAPPORT EN JAVA EE 9

Apres creation et configuration de web.xml vous pouvez exécuter la servlet .

Page 10: Rapport tp2 j2ee

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.

Page 11: Rapport tp2 j2ee

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

Page 12: Rapport tp2 j2ee

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.