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