Cookie-uri Java: Cum se face gestionarea sesiunii de servlet Java folosind module cookie
Publicat: 2020-08-19
Paginile web nu au amintiri. Un utilizator care trece de la o pagină la alta va fi tratat de site-ul web ca un vizitator complet nou. Cookie-urile de sesiune permit site-ului web pe care îl vizitați să țină evidența mișcării dvs. de la o pagină la alta, astfel încât să nu vi se ceară aceleași informații pe care le-ați dat deja site-ului.
Cookie-urile vă permit să treceți prin multe pagini ale unui site rapid și ușor, fără a fi nevoie să vă autentificați sau să reprocesați fiecare zonă nouă pe care o vizitați.
Dar uneori, în aplicațiile web Java, ar trebui să știm cine este clientul și să procesăm cererea în consecință.
De exemplu, o aplicație pentru coșul de cumpărături ar trebui să știe cine trimite cererea de adăugare a unui articol și în ce coș trebuie adăugat articolul sau cine trimite cererea de plată, astfel încât să poată percepe suma clientului corect.
Sesiunea este o stare de conversație între client și server și poate consta în cereri și răspunsuri multiple între client și server. Deoarece HTTP și Web Server sunt ambele apatride, singura modalitate de a menține o sesiune este atunci când unele informații unice despre sesiune (ID-ul sesiunii) sunt transmise între server și client în fiecare cerere și răspuns.

Acum să creăm un proiect web dinamic simplu în Eclipse, care explică gestionarea sesiunii de servlet Java folosind module cookie.
Iată pașii:
- Creați un proiect web dinamic:
CrunchifySessionManagementByCookie
-
crunchify-login.html
: Creați pagina de întâmpinare a unei aplicații -
CrunchifyLoginServlet.java
– Acesta are grijă de cererea de conectare -
CrunchifyLogoutServlet.java
– Acesta are grijă de cererea de deconectare -
web.xml
– Fișier descriptor de implementare (Nu vedeți web.xml? Urmați acest tutorial) -
CrunchifyLoginSuccessful.jsp
– Solicitarea de succes este transmisă cătreLoginSuccess.jsp
, acest cookie va fi folosit acolo pentru a urmări sesiunea. De asemenea, observați că expirarea cookie-urilor este setată la 60 de minute.

Altul trebuie să citească:
- Spring MVC Exemplu/Tutorial: Hello World – Spring MVC 3.2.1
- Cum să actualizați Sparkline Graph la fiecare 3 secunde în Spring MVC (Actualizare în timp real)
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 > |
Acum să rulăm acest exemplu:
- Implementați proiectul
CrunchifySessionManagementByCookie
pe Tomcat și rulați Tomcat.

- Indicați adresa URL a browserului dvs. către http://localhost:8080/CrunchifySessionManagementByCookie/crunchify-login.html

- Pagina de succes

- Pagina de conectare eșuată

Acum Cum să verificați dacă cookie-ul este setat corect.

Încercați să descărcați orice Cookie Manager Extension
și ar trebui să vedeți Cookie
în browser, așa cum se vede mai jos.

Anunțați-mă dacă vă confruntați cu vreo problemă care rulează deasupra codului de gestionare a cookie-urilor Servlet.