Si vous êtes fidèle aux colonnes du JDNet Développeurs,
vous êtes certainement déjà passé(e)
maître dans l'utilisation des sessions sous Php3
ou Php4.
Rappelons tout de même qu'une session est un moyen qui permet
de s'affranchir du protocole non connecté HTTP (contrairement
au FTP) et de maintenir malgré tout, au fil des pages accédées
par l'internaute, une transmission des données, le tout pour
une période limitée : La durée de vie de la
session.
La transmission des informations tout au long de la navigation
de l'internaute s'opère soit explicitement si votre site
ne dispose pas d'un système de gestion des sessions (il faut
alors ajouter dans chaque lien, formulaire ou cookie,
des variables destinées à véhiculer l'information),
soit implicitement (ou presque!) grâce à ce qu'on appelle
le "session-tracking".
Création de la session
Afin d'obtenir une session, un identifiant donc, pour notre internaute,
nous allons utiliser la méthode "getSession"
de l'objet "HttpServletRequest".
Si getSession renvoie "null" la création de la
session est autorisée, cela signifie qu'elle n'existait pas
auparavant.
Nous pouvons néanmoins nous affranchir d'un tel test en passant
le paramètre "true" à cette méthode.
Ainsi, si aucune session n'existe déjà, une nouvelle
sera automatiquement créee.
L'expression la plus simple de ce que nous venons d'énoncer
est :
HttpSession session = request.getSession(true);
De même qu'en Php (avec session_start() en php4 par exemple),
"getSession", doit être appelée avant
de renvoyer un quelconque flux de sortie.
Récupération et stockage de l'information
Admettons que nous devions placer un nouvel élément
dans un panier électronique, il nous faut vérifier
si cet élément est le premier ou pas afin de créer,
le cas échéant, le panier. Cela donne :
HttpSession session = request.getSession(true);
// On cherche à récupérer le contenu du panier
Panier articleprecedent = (Panier)session.getAttribute("articleprecedent");
if (articleprecedent != null)
{
Traiter(articleprecedent);
}
else
{
// Création
du panier s'il n'existe pas déjà
articleprecedent = new Panier();
TraiterBis(articleprecedent);
}
Afin d'exploiter le résultat fourni par la méthode
"getAttribute", on force la conversion par un "cast"
: "(Panier)". On notera également l'utilisation
de la méthode getAttribute au lieu de getValue ("deprecated"
depuis la version 2.2 des servlets).
Passons maintenant au stockage d'une donnée, c'est le rôle
de la méthode setAttribute("cle","valeur") :
HttpSession session = request.getSession(true);
session.setAttribute("disque", 110);
Terminer une session
Deux choix s'offrent à nous pour terminer une session, soit
la laisser s'expirer seule, soit mettre fin à sa durée
de vie en utilisant une méthode spécifique de l'objet
HttpSession, il s'agit de invalidate(), elle s'utilise simplement
:
HttpSession session = request.getSession(true);
session.invalidate();
Cette introduction n'a présenté que quelques-unes
des méthodes disponibles pour l'objet HttpSession, vous pouvez
retrouver
ici celles qui n'ont pas été abordées.
|