Cookies Java : comment gérer la session de servlet Java à l'aide de cookies
Publié: 2020-08-19
Les pages Web n'ont pas de mémoire. Un utilisateur allant d'une page à l'autre sera traité par le site Web comme un tout nouveau visiteur. Les cookies de session permettent au site Web que vous visitez de suivre vos déplacements d'une page à l'autre afin de ne pas vous demander les mêmes informations que vous avez déjà fournies au site.
Les cookies vous permettent de parcourir rapidement et facilement de nombreuses pages d'un site sans avoir à vous authentifier ou à retraiter chaque nouvelle zone que vous visitez.
Mais parfois, dans les applications Web Java, nous devons savoir qui est le client et traiter la demande en conséquence.
Par exemple, une application de panier d'achat doit savoir qui envoie la demande d'ajout d'un article et dans quel panier l'article doit être ajouté ou qui envoie la demande de paiement afin de pouvoir facturer le montant au client correct.
La session est un état conversationnel 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 le serveur Web sont tous deux sans état, le seul moyen de maintenir une session consiste à transmettre des informations uniques sur la session (identifiant de session) entre le serveur et le client dans chaque demande et réponse.

Créons maintenant un projet Web dynamique simple dans Eclipse qui explique la gestion de session de servlet Java à l'aide de cookies.
Voici les étapes :
- Créer un projet Web dynamique :
CrunchifySessionManagementByCookie
-
crunchify-login.html
: Créer la page d'accueil d'une application -
CrunchifyLoginServlet.java
- Qui s'occupe de la demande de connexion -
CrunchifyLogoutServlet.java
- Qui prend en charge la demande de déconnexion -
web.xml
- Fichier de descripteur de déploiement (Vous ne voyez pas web.xml ? Suivez ce tutoriel) -
CrunchifyLoginSuccessful.jsp
- La demande de réussite est transmise àLoginSuccess.jsp
, ce cookie sera utilisé ici pour suivre la session. Notez également que le délai d'expiration des cookies est défini sur 60 minutes.

Un autre doit lire:
- Spring MVC Exemple/Tutoriel : Hello World – Spring MVC 3.2.1
- Comment mettre à jour le graphique Sparkline toutes les 3 secondes dans Spring MVC (mise à jour en temps réel)
1. crunchify-login.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
< ! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > < html > < head > < meta http - equiv = "Content-Type" content = "text/html; charset=US-ASCII" > < title > Crunchify Login Form - Session Management by Cookies < / title > <style type ="text/css"> body { background-image : url ( 'https://cdn.crunchify.com/bg.png' ) ; } </style> < / head > < body > < div align = "center" > < br > < br > < form action = "CrunchifyLoginServlet" method = "post" > Enter Your Username : < input type = "text" name = "crunchifyUser" > < br > Enter Your Password : < input type = "password" name = "crunchifyPassword" > < br > < br > < br > < input type = "submit" value = "Login" > < / form > < / div > < / body > < / html > |
2. CrunchifyLoginServlet.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
package com . crunchify . tutorials ; import java . io . IOException ; import java . io . PrintWriter ; import javax . servlet . RequestDispatcher ; import javax . servlet . ServletException ; import javax . servlet . annotation . WebServlet ; import javax . servlet . http . Cookie ; import javax . servlet . http . HttpServlet ; import javax . servlet . http . HttpServletRequest ; import javax . servlet . http . HttpServletResponse ; /* * Author: Crunchify.com * */ /** * Servlet implementation class LoginServlet */ @WebServlet ( "/CrunchifyLoginServlet" ) public class CrunchifyLoginServlet extends HttpServlet { private static final long serialVersionUID = 1L ; private final String userID = "CrunchifyUser" ; private final String password = "CrunchifyPassword" ; protected void doPost ( HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException { // get request parameters for userID and password String crunchifyUser = request . getParameter ( "crunchifyUser" ) ; String pwd = request . getParameter ( "crunchifyPassword" ) ; if ( userID . equals ( crunchifyUser ) && password.equals(pwd)) { Cookie crunchifyCookie = new Cookie("crunchifyUser", crunchifyUser); // setting cookie to expiry in 60 mins crunchifyCookie . setMaxAge ( 60 * 60 ) ; response . addCookie ( crunchifyCookie ) ; response . sendRedirect ( "CrunchifyLoginSuccess.jsp" ) ; } else { RequestDispatcher rd = getServletContext ( ) . getRequestDispatcher ( "/crunchify-login.html" ) ; PrintWriter out = response . getWriter ( ) ; out . println ( "<font color=red>Please make sure you enter UserID/Pass as \"CrunchifyUser : CrunchifyPassword\".</font>\n" ) ; rd . include ( request , response ) ; } } } |
3. CrunchifyLogoutServlet.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
package com . crunchify . tutorials ; import java . io . IOException ; import javax . servlet . ServletException ; import javax . servlet . annotation . WebServlet ; import javax . servlet . http . Cookie ; import javax . servlet . http . HttpServlet ; import javax . servlet . http . HttpServletRequest ; import javax . servlet . http . HttpServletResponse ; /* * Author: Crunchify.com * */ /** * Servlet implementation class LogoutServlet */ @WebServlet ( "/CrunchifyLogoutServlet" ) public class CrunchifyLogoutServlet extends HttpServlet { private static final long serialVersionUID = 1L ; protected void doPost ( HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException { response . setContentType ( "text/html" ) ; Cookie loginCookie = null ; Cookie [ ] cookies = request . getCookies ( ) ; if ( cookies ! = null ) { for ( Cookie cookie : cookies ) { if ( cookie . getName ( ) . equals ( "crunchifyUser" ) ) { loginCookie = cookie ; break ; } } } if ( loginCookie ! = null ) { loginCookie . setMaxAge ( 0 ) ; response . addCookie ( loginCookie ) ; } response . sendRedirect ( "crunchify-login.html" ) ; } } |
4. web.xml
1 2 3 4 5 6 7 8 9 10 |
<? xml version = "1.0" encoding = "UTF-8" ?> < web - app xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xsi : schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "WebApp_ID" version = "3.0" > < display - name > CrunchifySessionManagementByCookie < / display - name > < welcome - file - list > < welcome - file > crunchify - login . html < / welcome - file > < / welcome - file - list > < / web - app > |
5. CrunchifyLoginSuccessful.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<% @ page language = "java" contentType = "text/html; charset=US-ASCII" pageEncoding = "US-ASCII" %> < ! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > < html > < head > < meta http - equiv = "Content-Type" content = "text/html; charset=US-ASCII" > < title > Crunchify - Login Successful - Session management by Cookies < / title > <style type ="text/css"> body { background-image : url ( 'https://cdn.crunchify.com/bg.png' ) ; } </style> < / head > < body > < div align = "center" > < br > < br > <% String userName = null ; Cookie [ ] cookies = request . getCookies ( ) ; if ( cookies ! = null ) { for ( Cookie cookie : cookies ) { if ( cookie . getName ( ) . equals ( "crunchifyUser" ) ) userName = cookie . getValue ( ) ; } } if ( userName == null ) response . sendRedirect ( "crunchify-login.html" ) ; %> < h3 > Hi <%= userName %> , Login successful . < / h3 > < br > < form action = "CrunchifyLogoutServlet" method = "post" > < input type = "submit" value = "Logout" > < / form > < / div > < / body > < / html > |
Exécutons maintenant cet exemple :
- Déployez le projet
CrunchifySessionManagementByCookie
sur Tomcat et exécutez Tomcat.

- Faites pointer l'URL de votre navigateur vers http://localhost:8080/CrunchifySessionManagementByCookie/crunchify-login.html

- Page de réussite

- Échec de la page de connexion

Maintenant, comment vérifier si votre cookie est correctement défini.

Essayez de télécharger n'importe quelle Cookie Manager Extension
et vous devriez voir Cookie
dans votre navigateur comme indiqué ci-dessous.

Faites-moi savoir si vous rencontrez un problème d'exécution au-dessus du code de gestion des cookies de servlet.