1. Was ist ein Keks? Kommentare von Baidus Internetnutzern
Einfach ausgedrückt ist ein Cookie eine Informationen, die vom Server vorübergehend auf Ihrem Computer gespeichert ist, damit der Server Ihren Computer identifiziert. Wenn Sie eine Website durchsuchen, sendet der Webserver zunächst eine kleine Menge an Informationen, um sie auf Ihren Computer zu setzen. Wenn Sie beim nächsten Mal dieselbe Website besuchen, prüft der Webserver zunächst, ob die Cookie -Informationen beim letzten Mal zurückgelassen werden. In diesem Fall wird der Benutzer anhand des Inhalts im Cookie beurteilt und Ihnen bestimmte Webseiteninhalte senden.
2. Wo sind Kekse?
3. Können Kekse gelöscht werden?
4. Cookie -Implementierungsprinzip
Wenn ich das erste Mal den Browser im Cookie -Geschäft des Browsers anfordere, gibt es keine Kekse,
Der erste Besuch enthält keine Kekse. Der Browser fügt der HTTP -Anforderungsnachricht einen Cookie -Anforderungs -Header hinzu, um den Cookie an den Webserver zurückzugeben. Der Browser speichert das Informationsfragment des Cookies in Form von "Namen/Wert" -Paaren (Namenswertenpaare). Wenn Sie das nächste Mal zugreifen, fügt der Webserver der HTTP-Antwortnachricht einen Set-Cookie-Antwort-Header hinzu, um die Cookie-Informationen an den Browser zu senden.
Schauen wir uns die Kekse nach der Realität an
Erstellen Sie einen Cookie.jsp, set Session = "False" für eine einfache Beobachtung
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8" session = "false"%> <! 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 = utf-8 "> <titels> fügen Sie hier ein Einfügen von Titeltiteln zu. Cookie ("Name", "Wyf"); Antwort.Addcookie (Cookie);%> </body> </html>Wir greifen zuerst auf die Datei cookie.jsp zu und geben sie in IE ein
http: // localhost: 8080/tag01/cookie.jsp
Im Anforderungs -Header können Sie feststellen, dass der erste Besuch keine Kekse trägt.
Im Antwortkopf wird es durch Set-Cookie zurückgeschickt und im lokalen Cookie-Geschäft des Browsers gespeichert
Wir greifen zum zweiten Mal auf die Datei cook.jsp zugreifen, um festzustellen, ob sich eine Änderung vorliegt
Im Anforderungs -Header sehen Sie, dass der Zugriff eine Anfrage ist, die Cookies aus dem örtlichen Keksspeicherbereich des Browsers trägt.
Das Folgende ist der Antwortkopf:
Verwenden wir ein interaktives Diagramm, um den Cookie -Mechanismus zu verstehen:
Schauen wir uns die Erstellung und Erfassung von Cookies an
Der Code in Cookie.jsp bedeutet: Wenn die Anfrage kein Cookie enthält, wird er erstellt und zurückgegeben. Wenn die Anforderung ein Cookie enthält, gibt sie ein Cookie-Schlüsselwertpaar aus (Name-Wert).
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8" session = "false"%> <! 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=UTF-8"><title>Insert title here</title></head><body><%Cookie[] cookies = Request.GetCookies (); if (Cookies! = null && cookies.length> 0) {für (Cookie Cookie: Cookies) {out.print (cookie.getName ()+":"+cookie.getValue ();}} {out.print ("no cookie. Cookie ("Name", "Wyf"); Antwort.Addcookie (Cookie);}%> </body> </html>Erster Besuch
Zweiter Besuch
Die obige Operation ist, dass wir den Browser erneut schließen müssen. Warum debuggen wir?
Da ein Cookie standardmäßig ein Cookie auf Sitzungsebene ist, der im Browser-Kernel gespeichert ist und der Benutzer nach dem Verlassen des Browsers gelöscht wird. Wenn Sie möchten, dass der Browser den Cookie auf der Festplatte speichert, müssen Sie Maxage verwenden, was in Sekundenschnelle ist
Schauen wir uns anhaltende Kekse an
<%Cookie [] cookies = request.getCookies (); if (Cookies! = Null && cookies.length> 0) {für (Cookie cookie: Cookies) {out.print (Cookie.getName ()+":"+cookie.getValue ());}} sonst {Out.print ("No Cookie, wird erstellt und erstellt". Cookie ("Name", "Wyf"); Cookie.SetMaxage (30); Antwort.Addcookie (Cookie);}%>Cookie.SetMaxage (30); Setzen Sie sich auf 30 Sekunden, also werde ich hier keinen Screenshot machen. Sagen Sie einfach, es steht unter Ihrem Namen. Wenn Sie zum ersten Mal keine Cookies haben, können Sie zum zweiten Mal Cookies erstellen. Wenn Sie zum zweiten Mal keine Cookies haben, können Sie den Browser schließen und innerhalb von 30 Sekunden zugreifen. Sie fordern immer noch die Cookies für das Schlüsselwertpaar auf, anstatt der vorherigen Eingabeaufforderung, Sie haben keine Kekse für die Cookies für die vorherige. Sie haben keine Kekse für die Kekse für die vorherige.
Automatische Anmeldung
login.jsp
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> <! 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 = utf-8 "> <title> hier einfügen. type = "text" name = "name"/> <Eingabe type = "surug" value = "sumit" // </form> </body> </html>
Success.jsp
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8" session = "false"%> <! 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 = utf-8 "> <titels> hier einfügen. Informationen im Cookie und setzen Sie die Zeit von Cookie String name = request.getParameter ("name"); if (null! Cookie und lesen Sie Benutzerinformationen vom Cookie. Wenn es vorhanden ist, drucken Sie die Begrüßungsnachricht Cookie [] Cookies = Request.GetCookies (); if (Cookies! = Null && Cookies.length> 0) {für (Cookie Cookie: Cookies) {String Cookien. ! Wenn Sie zum ersten Mal http: // localhost: 8080/tag01/login.jsp besuchen, geben Sie den Parameterwert des Namens ein und senden Sie ihn. In Success.jsp erhalten Sie zunächst den über eingereichten Parameternamenwert. Wenn es nicht null ist, legen Sie einen Cookie direkt ein, speichern Sie den Parameternamenwert und geben Sie dann den Parameterwert des Namens auf der Seite aus. Wenn Sie das zweite Mal besuchen, geben Sie direkt http: // localhost: 8080/tag01/success.jsp, ein.
Da wir diesen Zeitpunkt den Parameternamenwert tragen, müssen wir nur den Wert vom Wertwert des Cookies abrufen und dann die Ausgabe anzeigen
Zeigen Sie die jüngste Einkaufsgeschichte
books.jsp
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> <! 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 = utf-8 "> <titels> hier einfügen. href = "book.jsp? book = javaweb"> javaweb </a> <a href = "book.jsp? book = java"> java </a> <a href = "book.jsp? book = oracle"> oracle </a> <a href = "book.jsp? jsp? href = "book.jsp? book = javaScript"> JavaScript </a> <a href = "book.jsp? book = android"> android </a> <a href = "book.jsp? book = jbpm"> jbpm </a> <br> <%// cookies aus dem kochungen [// Filtered Book, wenn Cookiename atguigu_book_ ist, erfüllt es die Bedingungen, wenn (Cookies! = null && cookies.length> 0) {für (Cookie c: cookies) {String Cookiename = C.GetName (); if (Cookiename cookievalueout.println (C.GetValue ()); out.print ("<br>");}}}%> </body> </html>book.jsp
<%@page import = "java.util.ArrayList"%> <%@page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> <! docType html public "-// w3c // dtd html 4.01 TUBLITUTAL // ENEL // EN EN ENE" // ENE "-ENE"-ENE ". "http://www.w3.org/tr/html4/loose.dtd"><html><Head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <titels> hier einfügen. %> <br> <br> <a href = "books.jsp"> return </a> < %String book = request.getParameter ("book"); // Bestimmen Sie, dass der Cookie Cookie [] cookies = request.getCookies (); // alle Cookies speichern mit saflyArraylist <cookie> books und books und books to -bookies = newn. Cookie übereinstimmt durch das ankommende Buch Cookie tempcookie = null; if (Cookies! = null && cookies.length> 0) {für (Cookie C: Cookies) {String Cookiename = C.GetName (); if (Cookienenname (Cookien). if(c.getValue().equals(book)){out.print("c.getValue().equals(book)");tempCookie = c;}}}}}//Select 5 books other than these 5 books if(bookCookies.size() >= 5&&tempCookie == null){tempCookie = bookCookies.get(0); //out.print("Tempcookie == null ");} // Wenn es darin ist, löschen Sie das Buchcookie selbst, löschen Sie die doppelten Cookies in der Liste und geben Sie es zurück, wenn (tempookie! = null) {tempocie.setmaxage (0); response.addcookie (tempcookie);} // Das Buch, das aus books.jsp als Cookie Cookie Cook = New Cookie ("Safly"+Buch, Buch), reagieren.Addcookie (Cook);%> </body> </html> zurückgeben kannLassen Sie uns über die logische Beziehung sprechen:
In books.jsp finden Sie eine Liste von Büchern.
Javaweb
Java
Orakel
Ajax
JavaScript
Android
JBPM
Ich wähle zufällig einen Link (z. B. Javaweb) aus, um zu book.jsp zu springen. Beim ersten Mal, als ich darauf zugegriffen habe, gab es kein Cookie, also rief ich die folgende Methode von book.jsp an und erstellte einen Cookie. Klicken Sie auf der Seite book.jsp zurück, um zu books.jsp zurückzukehren und die von Cooks.jsp mitgelieferte Cookievalue herauszunehmen, und dann die ausgewählte Buchliste anzeigen.
Cookie Cook = New Cookie ("Safly"+Buch, Buch); Antwort.Addcookie (Cook); Jetzt sind wir zu books.jsp zurückgekehrt und ein Buch Javaweb ausgewählt. Wir wählen ein Buch (Annahme von Java) und springen dann zu books.jsp. In diesem Moment werden wir ein Keks mitbringen (es wurde mir übergeben, als Javaweb erstmals ausgewählt wurde, um auf Bücher zuzugreifen). Der Hauptwert dieses Keks ist Saflyjavawebjavaweb, aber was? Die Auswahl des zweiten Buches Java wird nicht mit Cookies ausgestattet (kein Saflyjava)
Geben Sie dann Cooks.jsp ein
if (cookiename.startswith ("safly") {bookcookies.add (c);}Setzen Sie also Saflyjavawebjavaweb in ein Buchcookies (speichern Sie die ausgewählte Buchliste) und dann wird die Saflyjavajava erstellt. Wenn Sie auf Mieteururn klicken, geben Sie Cookies.jsp umgekehrt
. . . . Bei der Auswahl eines Buches für den 3., 4. und 5. Mal ist es der gleiche Prozess. Wenn Sie 5 Bücher in buchs.jsp auswählen, wie kann man sich damit umgehen, wenn Sie eines dieser 5 Bücher auswählen?
C.GetValue (). Equals (Buch), um das ausgewählte Buch zu erhalten. Wir müssen diesen Cookie löschen und ihn dann erneut hinzufügen und wie folgt an den Cookies.jsp -Code weitergeben:
tempcookie.setMaxage (0); response.addcookie (tempcookie);
Wenn Sie 5 Bücher in Büchern auswählen, und das 6. Buch, das nicht die 5 Bücher sind, wie man damit umgeht?
Lassen Sie uns einfach tempcookie = bookcookies.get (0); Nehmen Sie das erste Buch der 5 Bücher heraus, dann Tempcookie.setMaxage (0); Löschen Sie den ersten Cookie und erstellen Sie den Cookie zurück zu Cookies.jsp
Hier sind einige Screenshots:
Der Aktionspfad der Cookies
Cookie2.jsp
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> <! 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=UTF-8"><title>Insert title here</title></head><body><%String cookieValue = null;Cookie [] cookies = Request.GetCookies (); if (cookies! = null && cookies.length> 0) {für (Cookie cookie: Cookies) {if ("cookiepath" .equals (cookie.getName ()) {cookievalue = cookie.getValue ();}}} if (cookievalue! null) {out.print (Cookievalue);} else {out.print ("no spezifiziertes Cookie");}%> </body> </html>WriteCookie.jsp
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> <! 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 = utf-8 "> <titels> hier einfügen. Verzeichnis, kann aber nicht auf das vorherige Verzeichnis des aktuellen Verzeichnisses reagieren // kann den Umfang des Cookies durch SetPath festlegen/repräsentiert das Root -Verzeichnis des Site Cookie = New Cookie ("Cookiepath", "CookiepathValue"); Cookie.setPath (Request.GetContextPath (); Cookie2.jsp </a> </body> </html>Zu Cookie2.jsp ist das Cookie2.jsp, der auf das obere Verzeichnis writeCookie.jsp zugreift
Das obige ist die Javaweb -Entwicklung, die Cookies verwendet, um Persistenz, automatische Anmeldung, Einkaufsakten und Funktionswege zu erstellen - zu erhalten. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!