Le protocole HTTP est un protocole non connecté (on parle aussi de protocole sans états,
en anglais stateless protocol), cela signifie que chaque requête sur une page web est traitée indépendamment des
autres et qu'aucun mécanisme n'est prévu à la base pour pouvoir exploiter l'historique
des différentes requêtes sur les pages successives.
Ainsi le serveur web ne peut pas se « souvenir » de la requête précédente, ce qui empêche
des utilisations telles que le commerce électronique, pour lequel une mémorisation des achats
de l'utilisateur à travers les différentes pages est nécessaire.
Il est donc nécessaire de trouver un moyen
de maintenir une certaine cohésion entre l'utilisateur et la requête, notamment :
- reconnaître les requêtes provenant du même utilisateur,
- associer un profil à l'utilisateur,
- connaître les paramètres de l'application pour l'utilisateur (nombre de produits vendus, ...).
Ce mécanisme de gestion des états est appelé gestion de session (en anglais session tracking).
Le rôle de l'objet Session est ainsi de permettre de stocker temporairement
(pendant toute la durée de vie de la session) des informations transmissibles
de page en page.
Le mécanisme utilisé par l'objet Session pour permettre de transmettre les informations
est basée sur l'utilisation de cookies, mais il est réalisé de manière
transparente, ce qui signifie que l'utilisateur n'a pas à s'en soucier.
L'utilisation de l'objet Session est très simple, elle consiste uniquement à enregistrer
une variable dans la session, à la récupérer tout aussi simplement. L'objet Session
fournit également les mécanismes permettant de détruire les données de la session.
L'objet Session possède plusieurs collections, propriétés et méthodes :
Collections |
Propriétés |
Méthodes |
Contents |
Contents.count |
Contents.Remove() |
StaticObjects |
Contents.item(nom) |
Contents.RemoveAll() |
|
StaticObjects.count |
Abandon |
|
StaticObjects.item(nom) |
|
|
Codepage |
|
|
LCID |
|
|
SessionID |
|
|
Timeout |
|
L'objet Session peut ainsi être vu comme un conteneur
regroupant des données dynamiques rendues accessibles pour un visiteur, tout au long
de sa navigation sur le site. L'objet Session regroupe ainsi en quelque sorte l'ensemble des variables globales de l'utilisateur.
L'objet Session propose deux événements, OnStart() et OnEnd(), permettant respectivement
d'exécuter des actions au démarrage et à l'arrêt de la session, c'est-à-dire
au début de la navigation (ou plus exactement à l'ouverture de la session) ou lorsque l'utilisateur quitte le site
(ou plus exactement ferme sa session).
La collection Contents contient des variables dynamiques créées sur le serveur
pour un utilisateur. Il s'agit d'une fonctionnalité très utile permettant par exemple de mettre
en place très facilement un panier de courses ou des préférences !
La création d'une valeur dans la collection Contents se fait de la manière suivante :
Session.Contents("nom_variable") = variable
Il existe toutefois une notation équivalente, moins lourde :
Session("nom_variable") = variable
A l'inverse, l'utilisation d'une valeur stockée dans la session se fait en appelant Session("nom_variable"),
par exemple comme suit :
Bienvenue <%Response.Write(Session("nom"))%>
La collection Contents contient elle-même deux propriétés et deux méthodes.
Les propriétés de la collection Contents sont les suivantes :
- Contents.count, représentant le nombre d'objets dans la collection ;
- Contents.item(nom), représentant l'objet identifié par le nom passé entre parenthèses.
Les méthodes de la collection Contents sont les suivantes :
- Contents.remove(nom), supprime l'objet identifié par le nom passé en argument ;
- Contents.removeall(), supprime tous les objets de la collection.
Le code suivant permet d'afficher l'ensemble des variables contenues dans la session, ainsi que leurs valeurs :
<%
dim i
For Each i in Session.Contents
Response.Write(" " & i & " : " & Session(i))
Next
%>
La collection StaticObjects permet de manipuler les données contenues dans les balises HTML <OBJECT> et dont l'attribut scope vaut « application ».
La collection StaticObjects contient elle-même deux propriétés et deux méthodes.
Les propriétés de la collection StaticObjects sont les suivantes :
- StaticObjects.count, représentant le nombre d'objets dans la collection ;
- StaticObjects.item(nom), représentant l'objet identifié par le nom passé entre parenthèses.
Les méthodes de la collection StaticObjects sont les suivantes :
- StaticObjects.remove(nom), supprime l'objet identifié par le nom passé en argument ;
- StaticObjects.removeall(), supprime tous les objets de la collection.
La méthode Abandon permet d'abandonner la session, c'est-à-dire de supprimer l'ensemble
des données qui y sont stockées.
La propriété Timeout permet de modifier la valeur (en minutes) de la
durée de la session (par défaut 20 minutes) :
Session.Timeout = nombre_minutes
|