Gérer des sessions avec JSP
Gérer des sessions avec JSP
Objectifs
- Connaitre la notion de session dans JAVA
- Etre capable de gérer de session dans des servlets en utilisant différentes techniques
-
Présentation
- 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 est traitée 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.
- Le protocole HTTP et les serveurs Web sont sans état. Cela signifie que pour un serveur Web, chaque demande est une nouvelle demande à traiter et ils ne peuvent pas déterminer si elle provient d’un client qui a déjà envoyé une demande.
- La technique de la session est utilisée pour gérer les informations confidentielles propres à chaque internaute.
- Ces données ne sont pas stockées sur l’ordinateur client mais sur serveur du site visité.
- La session est utilisée pour effectuer, par exemple, des achats en ligne à l’aide d’un panier virtuel.
- Les internautes s’identifient par un login et un mot de passe. Ils ajoutent des objets dans leur panier et pour finir effectuent leur paiement.
- Le mot de passe et les objets du panier des informations propres à l’internaute, elles ne peuvent être lisibles par aucun autre utilisateur. C’est pourquoi toutes les données relatives à cet achat sont stockées sur le serveur grâce à un objet session.
- Outre la confidentialité des informations transmises, la session permet également de rassembler toutes les données sous un même identifiant afin d’opérer un suivi des requêtes échangées entre le serveur et le client.
-
Qu’est-ce qu’une session?
- La session est un état de conversation entre le client et le serveur et peut consister en plusieurs requêtes et réponses entre le client et le serveur. Étant donné que HTTP et Web Server sont tous deux sans état, le seul moyen de maintenir une session consiste à transmettre des informations uniques sur la session (identificateur de session) entre le serveur et le client dans chaque demande et chaque réponse.
-
Session dans Java Servlet – HttpSession
- L’API Servlet permet la gestion de session via une HttpSessioninterface. Nous pouvons obtenir une session à partir d’un objet HttpServletRequest en utilisant les méthodes suivantes:
- HttpSession nous permet de définir des objets en tant qu’attributs pouvant être récupérés lors de futures requêtes.
- HttpSession getSession (): Cette méthode retourne toujours un objet HttpSession. Il renvoie l’objet de session attaché à la demande. Si la demande n’a pas de session attachée, il crée une nouvelle session et le renvoie.
- Certaines des méthodes importantes de HttpSession sont:
- String getId ():Retourne une chaîne contenant l’identifiant unique attribué à cette session.
- Object getAttribute (String name) :Renvoie l’objet lié avec le nom spécifié dans cette session ou null si aucun objet n’est lié sous le nom. Certaines autres méthodes d’utilisation des attributs de session sont getAttributeNames(), removeAttribute(String name)et setAttribute(String name, Object value).
- long getCreationTime ():Renvoie l’heure à laquelle cette session a été créée, mesurée en millisecondes depuis le 1er janvier 1970 à minuit GMT. Nous pouvons obtenir la dernière heure d’accès avec la getLastAccessedTime()méthode.
- setMaxInactiveInterval (int interval): Spécifie le délai, en secondes, entre les demandes client avant que le conteneur de servlets n’invalide cette session. Nous pouvons obtenir une valeur de délai d’expiration de session à partir de la méthode getMaxInactiveInterval().
- ServletContext getServletContext (): Retourne un objet ServletContext pour l’application.
- boolean isNew (): Renvoie la valeur true si le client ne sait pas encore si la session a été ouverte ou s’il a décidé de ne pas rejoindre la session.
- void invalidate (): Invalide cette session puis dissocie tous les objets qui lui sont liés.
-
La classe Session
- L’objet de type Session est un objet implicite créé par le serveur JSP. Il n’existe donc pas d’instruction pour le créer.
- Les données contenues au sein de cet objet sont traitées à l’aide de méthodes, parmi lesquelles nous trouvons :
- La méthode setAttribute ( ) , qui permet d’enregistrer des informations utiles telles que le nom de l’internaute ou la liste des objets placés dans le panier virtuel de ce dernier.
- La syntaxe d’utilisation de cette méthode est la suivante :
session. setAttribute (nom, valeur) ;
nom
correspond à l’objet qui sert de support pour enregistrer la valeur souhaitée,valeur
est la valeur à enregistrer. Elle peut être de n’importe quel type (pas obligatoirement de type String).- La méthode getAttribute ( ) , qui permet d’extraire les informations enregistrées dans un objet de type Session.
- La syntaxe d’utilisation de cette méthode est:
String numSession - (String) session.getAttribute(nid");
-
La session expire après une période d’inactivité de l’utilisateur
- Par défaut avec Tomcat, la durée maximum de validité imposée au-delà de laquelle la session est automatiquement détruite par le serveur est de 30 minutes.
-
Application
-
Enoncé
- Le but de cet application est d’illustrer seulement le processus du passage des informations d’une page JSP à une autre en utilisant les sessions.
- Créez un projet web dynamique gestion sessions JSP
- Pour ce faire nous avons besoin de trois pages JSP sans utilisation de servlet pour le moment.
- Créez la première page « connexion.jsp » contenant un formulaire d’inscription représenté comme ci-dessous.
- Cette page servira à récupérer les données saisies et les stocker dans la variable de sessions.
- En cas de connexion avec succès l’utilisateur est amené à une page « index.jsp » contenant un message de bienvenue et le nom de l’utilisateur.
- Dans le cas contraire il est amené vers une page « erreur.jsp« , où en souhaite afficher les informations saisies par l’utilisateur.