Java-Cookies: Wie Java-Servlet-Sitzungsverwaltung mit Cookies durchgeführt wird
Veröffentlicht: 2020-08-19
Webseiten haben keine Erinnerungen. Ein Benutzer, der von Seite zu Seite geht, wird von der Website als völlig neuer Besucher behandelt. Sitzungscookies ermöglichen es der von Ihnen besuchten Website, Ihre Bewegungen von Seite zu Seite zu verfolgen, sodass Sie nicht nach den gleichen Informationen gefragt werden, die Sie der Website bereits gegeben haben.
Cookies ermöglichen es Ihnen, schnell und einfach durch viele Seiten einer Website zu navigieren, ohne jeden neuen Bereich, den Sie besuchen, authentifizieren oder erneut verarbeiten zu müssen.
Aber manchmal sollten wir in Java-Webanwendungen wissen, wer der Client ist, und die Anfrage entsprechend verarbeiten.
Beispielsweise sollte eine Einkaufswagenanwendung wissen, wer die Anfrage zum Hinzufügen eines Artikels sendet und in welchen Einkaufswagen der Artikel hinzugefügt werden muss, oder wer die Checkout-Anfrage sendet, damit sie den Betrag dem richtigen Kunden in Rechnung stellen kann.
Sitzung ist ein Gesprächszustand zwischen Client und Server und kann aus mehreren Anfragen und Antworten zwischen Client und Server bestehen. Da sowohl HTTP als auch Webserver zustandslos sind, besteht die einzige Möglichkeit, eine Sitzung aufrechtzuerhalten, darin, in jeder Anfrage und Antwort einige eindeutige Informationen über die Sitzung (Sitzungs-ID) zwischen Server und Client zu übertragen.

Lassen Sie uns nun ein einfaches dynamisches Webprojekt in Eclipse erstellen, das die Java-Servlet-Sitzungsverwaltung mithilfe von Cookies erläutert.
Hier sind die Schritte:
- Dynamisches Webprojekt erstellen:
CrunchifySessionManagementByCookie
-
crunchify-login.html
: Willkommensseite einer Anwendung erstellen -
CrunchifyLoginServlet.java
– Das kümmert sich um die Login-Anfrage -
CrunchifyLogoutServlet.java
– Das kümmert sich um die Logout-Anfrage -
web.xml
– Deployment Descriptor File (Sie sehen web.xml nicht? Folgen Sie diesem Tutorial) -
CrunchifyLoginSuccessful.jsp
– Erfolgsanfrage wird anLoginSuccess.jsp
weitergeleitet, dieses Cookie wird dort verwendet, um die Sitzung zu verfolgen. Beachten Sie auch, dass das Cookie-Timeout auf 60 Minuten eingestellt ist.

Ein weiteres muss gelesen werden:
- Spring MVC Beispiel/Tutorial: Hallo Welt – Spring MVC 3.2.1
- So aktualisieren Sie das Sparkline-Diagramm alle 3 Sekunden in Spring MVC (Echtzeit-Update)
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 > |
Lassen Sie uns nun dieses Beispiel ausführen:
- Stellen Sie das
CrunchifySessionManagementByCookie
Projekt für Tomcat bereit und führen Sie Tomcat aus.

- Richten Sie Ihre Browser-URL auf http://localhost:8080/CrunchifySessionManagementByCookie/crunchify-login.html

- Erfolgsseite

- Anmeldeseite fehlgeschlagen

Jetzt So überprüfen Sie, ob Ihr Cookie richtig gesetzt ist.

Versuchen Sie, eine beliebige Cookie Manager Extension
herunterzuladen, und Sie sollten Cookie
in Ihrem Browser sehen, wie unten gezeigt.

Lassen Sie mich wissen, wenn Sie auf ein Problem stoßen, das über dem Servlet-Cookie-Verwaltungscode ausgeführt wird.