Gestion de Session en J2EE

Servlets, Cookies, HTTP Session Management · exam

LES SERVLETS (SUITE)

Gestion de session J2EE

1

LE PROTOCOLE HTTP : INCONVÉNIENTS

 HTTP: protocole sans état (en mode

déconnecté)

 Chaque requête est traitée indépendamment

des autres

 Impossibilité de garder des informations d’une requête à une autre (identifier un client d’un autre)

 But:

 Reconnaître les requêtes provenant du même

utilisateur

 Associer un profil à l'utilisateur  Connaître les paramètres de l'application

On appelle ce mécanisme de gestion des

états le suivi de session (en Anglais session tracking).

 Différentes solutions dont:

 Cookies  HttpSession

2

COOKIES

C’et quoi? Information envoyée par le serveur,

stockée sur le client et renvoyée par le client quand il revient visiter la même URL

Pourquoi?

 Identification des utilisateurs

 Eviter la saisie d’informations à répétition (login,

password, adresse, téléphone, …)

Publicité

 Gérer des préférences utilisateur, profils

3

COOKIES ET SÉCURITÉ ?

 Jamais interprété ou exécuté : Pas de virus

 Non partageable: le navigateur ne distribue le

cookie qu’au serveur qui l’a émis

 Un cookie est limité à 4KB et les navigateurs

se limitent à 300 cookies (20 par site) : pas de

surcharge de disque

4

GESTION DES COOKIES

 Une classe pour manipuler les

cookies: javax.servlet.http.Cookie

Constructeur: Cookie (String nom,

String valeur)

 Ecrire un cookie: public void addCookie (Cookie c) méthode de HttpServletResponse

 Lire un cookie: public Cookie [ ] getCookies () méthode de HttpServletRequest

5

QUELQUES MÉTHODES DE LA CLASSE COOKIE

 public String getValue( ) / public void

setValue (String valeur) : retourne la valeur d’un cookie / définit la valeur d’un cookie

 public String getName( ) / public void

setName (String valeur) : retourne le nom d’un cookie / définit le nom d’un cookie

 public int getMaxAge ( ) / public void

setMaxAge (int duree) : retourne la durée de validité d’un cookie (en sec) / définit la durée de validité d’un cookie

Publicité

 public String getPath ( ) / public void setPath

(String chemin) : retourne le chemin d’application d’un cookie / définit le chemin d’application d’un cookie

 …

6

EXEMPLE

7

L’INTERFACE HTTPSESSION

 Cette interface permet de créer une session entre un client HTTP et un serveur HTTP.

 La session persiste pour un certain temps durant plusieurs connections ou pluseiurs demandes de pages de la part de l’utilisateur.

 Une session correspond géneralement à un utilisateur, qui viste un site plusieurs fois.

 L'objet de type HttpSession permet de

mémoriser les données de l'utilisateur sur le serveur en reliant chaque id de session à l'ensemble des informations relatives à l'utilisateur.

 L'objet HttpSession s'obtient grâce à la

méthode de HttpServletRequest :

public HttpSession getSession(boolean

creation)

rend la session de cette requête; si elle

n'existe pas rend null ou crée une nouvelle session si 'creation'

8

QUELQUES MÉTHODES DE HTTP SESSION

 public void setAttribute(String nom, Object

valeur): stocke l'objet valeur dans la session sous le nom nom

 public Object getAttribute (String nom) :

retourne l'objet stocké dans la session sous le nom nom, null s'il n'existe pas

 public void removeAttribute (String nom):

Publicité

supprime l’attribut associé à nom

 public void invalidate ( ) : supprime la session  public void logout ( ) : termine la session

9

EXEMPLE

import javax.servlet.*;

import javax.servlet.http.*;

class MaServlet extends HttpServlet {

public void doGet (HttpServletRequest req,

HttpServletResponse res) throws ServletException, IOException {

HttpSession session = req.getSession(true);

Integer cpt =

(Inrteger)session.getAttribute (« compteur »);

if (cpt == null)

cpt = new Integer (1);

else cpt = new Integer (cpt.intValue()+1);

session.setAttribute (« compteur », cpt);

PrintWriter out = res.getWriter ( );

out.println (« Vous avez visité cette page » + cpt+

« fois »);}

}

10