Cookies sind Textdateien, die auf dem Client-Computer gespeichert werden und eine große Menge an Titelinformationen speichern. Basierend auf der Servlet-Technologie kann JSP offensichtlich HTTP-Cookies unterstützen.
Die Identifizierung von Stammkunden erfolgt in der Regel in drei Schritten:
Das Serverskript sendet eine Reihe von Cookies an den Browser. Wie Name, Alter, ID-Nummer usw.
Der Browser speichert diese Informationen für den Fall, dass sie benötigt werden, lokal auf dem Computer.
Wenn der Browser das nächste Mal eine Anfrage an den Server sendet, sendet er auch diese Cookie-Informationen an den Server, und der Server verwendet diese Informationen dann, um den Benutzer zu identifizieren oder andere Dinge zu tun.
In diesem Abschnitt erfahren Sie, wie Sie Cookies setzen oder zurücksetzen, wie Sie darauf zugreifen und wie Sie sie löschen.
Cookies werden normalerweise in HTTP-Headern gesetzt (obwohl JavaScript Cookies direkt im Browser setzen kann). In JSP erfordert das Setzen eines Cookies das Senden des folgenden Informationsheaders an den Server:
HTTP/1.1 200 OKDatum: Fr, 04.02.2000 21:03:38 GMTServer: Apache/1.3.9 (UNIX) PHP/4.0b3Set-Cookie: name=xyz; läuft ab=Freitag, 04.02.07 22:03: 38 GMT; path=/; domain=tutorialspoint.comConnection: closeContent-Type: text/html
Wie Sie sehen können, enthält der Set-Cookie-Header ein Schlüssel-Wert-Paar, eine GMT-Zeit (Greenwich Mean Time), einen Pfad und einen Domänennamen. Schlüssel-Wert-Paare werden als URLs kodiert. Das Feld „Ablaufdatum“ ist eine Anweisung, die dem Browser mitteilt, nach welcher Zeit er dieses Cookie löschen kann.
Wenn Ihr Browser so konfiguriert ist, dass er Cookies speichert, speichert er diese Informationen, bis sie ablaufen. Wenn eine vom Benutzer besuchte Seite mit dem Pfad und dem Domänennamen im Cookie übereinstimmt, sendet der Browser das Cookie erneut an den Server zurück. Der Header auf der Browserseite sieht so aus:
GET / HTTP/1.0Verbindung: Keep-AliveUser-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)Host: zink.demon.co.uk:1126Accept: image/gif, */*Accept- Kodierung: gzipAccept-Language: enAccept-Charset: iso-8859-1,*,utf-8Cookie: name=xyz
JSP-Skripte greifen auf diese Cookies über die Methode getCookies() im Anforderungsobjekt zu. Diese Methode gibt ein Array von Cookie-Objekten zurück.
In der folgenden Tabelle sind die häufig verwendeten Methoden in Cookie-Objekten aufgeführt:
Seriennummer | Methode und Beschreibung |
---|---|
1 | public void setDomain(String pattern) legt den Domänennamen des Cookies fest, z. B. w3cschool.cn |
2 | public String getDomain() ruft den Domänennamen des Cookies ab, z. B. w3cschool.cn |
3 | public void setMaxAge(int expiry) legt die Cookie-Gültigkeitsdauer in Sekunden fest. Die Standardgültigkeitsdauer ist die Überlebenszeit der aktuellen Sitzung. |
4 | public int getMaxAge() ruft die Cookie-Gültigkeitsdauer in Sekunden ab. Der Standardwert ist -1, was angibt, dass das Cookie so lange bestehen bleibt, bis der Browser geschlossen wird |
5 | public String getName() gibt den Namen des Cookies zurück. Der Name kann nach der Erstellung nicht mehr geändert werden. |
6 | public void setValue(String newValue) legt den Wert des Cookies fest |
7 | public String getValue() ruft den Wert des Cookies ab |
8 | public void setPath(String uri) legt den Cookie-Pfad fest, der standardmäßig alle URLs im aktuellen Seitenverzeichnis und alle Unterverzeichnisse in diesem Verzeichnis umfasst. |
9 | public String getPath() ruft den Pfad des Cookies ab |
10 | public void setSecure(boolean flag) gibt an, ob das Cookie für die Übertragung verschlüsselt werden soll |
11 | public void setComment(String purpose) legt den Kommentar fest, um den Zweck des Cookies zu beschreiben. Anmerkungen können nützlich sein, wenn der Browser dem Benutzer das Cookie anzeigt |
12 | public String getComment() gibt einen Kommentar zurück, der den Zweck des Cookies beschreibt, oder null, wenn keiner vorhanden ist |
Das Setzen von Cookies mithilfe von JSP umfasst drei Schritte:
(1) Erstellen Sie ein Cookie-Objekt: Rufen Sie den Cookie-Konstruktor auf und verwenden Sie dabei einen Cookie-Namen und einen Cookie-Wert als Parameter, die beide Zeichenfolgen sind.
Cookie cookie = neues Cookie("key","value");
Es ist wichtig zu beachten, dass weder der Name noch der Wert Leerzeichen oder die folgenden Zeichen enthalten dürfen:
[ ] ( ) = , " / ? @ : ;
(2) Legen Sie den Gültigkeitszeitraum fest: Rufen Sie die Funktion setMaxAge() auf, um anzugeben, wie lange (in Sekunden) das Cookie gültig ist. Der folgende Vorgang legt den Gültigkeitszeitraum auf 24 Stunden fest.
cookie.setMaxAge(60*60*24);
(3) Cookies an den HTTP-Antwortheader senden: Rufen Sie die Funktion „response.addCookie()“ auf, um Cookies zum HTTP-Antwortheader hinzuzufügen.
Antwort.addCookie(cookie);
<% // Cookies für Vorname und Nachname setzen Cookie firstName = new Cookie("first_name", request.getParameter("first_name")); Cookie lastName = new Cookie("last_name",request.getParameter("last_name")); //Setzen Sie die Cookie-Ablaufzeit auf 24 Stunden. firstName.setMaxAge(60*60*24); lastName.setMaxAge(60*60*24); // Cookie zum Antwortheader hinzufügen Response.addCookie( LastName ); head><title>Cookies festlegen</title></head><body><center><h1>Einstellung Cookies</h1></center><ul><li><p><b>Vorname:</b><%= request.getParameter("first_name")%></p></li>< li><p><b>Nachname:</b> <%= request.getParameter("last_name")%></p></li></ul></body></html>
Platzieren Sie die obige Datei im Verzeichnis <Tomcat-Installationsverzeichnis>/webapps/ROOT und besuchen Sie dann http://localhost:8080/hello.jsp. Sie erhalten die folgende Ausgabe:
Versuchen Sie, Vorname und Nachname einzugeben, und klicken Sie dann auf die Schaltfläche „Senden“. Auf Ihrem Bildschirm werden Vorname und Nachname angezeigt und zwei Cookies gesetzt, Vorname und Nachname, die beim nächsten Klicken an den Server gesendet werden die Schaltfläche „Senden“.
Um Cookies zu lesen, müssen Sie die Methode request.getCookies() aufrufen, um ein Array von javax.servlet.http.Cookie-Objekten abzurufen, dann das Array durchlaufen und die Methoden getName() und getValue() verwenden, um jedes Cookie abzurufen . Name und Wert.
Lesen wir die Cookies aus dem vorherigen Beispiel.
<html><head><title>Cookies lesen</title></head><body><center><h1>Cookies lesen</h1></center><% Cookie cookie = null; null; // Cookie-Daten abrufen, die ein Array sind. int i = 0; i < Cookies.length; i++){ cookie = Cookies[i]; out.print("Name: " + cookie.getName( ) + ", "); ( )+" <br/>"); } }else{ out.println("<h2>Keine Cookies gefunden</h2>" }%></body></html>
Wenn Sie das Cookie für den Vornamen auf „John“ und den Nachnamen auf „Player“ setzen und http://localhost:8080/main.jsp besuchen, erhalten Sie die folgende Ausgabe:
Name und Wert der gefundenen Cookies: Name: Vorname, Wert: John. Name: Nachname, Wert: Spieler
Das Löschen von Cookies ist sehr einfach. Wenn Sie ein Cookie löschen möchten, befolgen Sie einfach die folgenden Schritte:
Holen Sie sich ein vorhandenes Cookie und speichern Sie es im Cookie-Objekt.
Setzen Sie das Cookie-Ablaufdatum auf 0.
Fügen Sie dieses Cookie wieder zum Antwortheader hinzu.
Das folgende Programm löscht ein Cookie mit dem Namen „first_name“. Wenn Sie main.jsp das nächste Mal ausführen, ist first_name null.
<html><head><title>Cookies lesen</title></head><body><center> <h1>Cookies lesen</h1></center><% Cookie cookie = null; Cookie[] Cookies = null; // Holen Sie sich die Cookies unter dem aktuellen Domänennamen, der ein Array ist "); für (int i = 0; i < Cookies.length; i++){ cookie = Cookies[i]; if((cookie.getName( )).compareTo("first_name") == 0 ){ cookie.setMaxAge(0); (cookie); out.print("Gelöschtes Cookie: " + cookie.getName( ) + "<br/>"); } out.print("Name : " + cookie.getName( ) + ", "); out.print("Value: " + cookie.getValue( )+" <br/>"); } }else{ out.println( "<h2>Keine Cookies gefunden</h2>"); Körper></html>
Wenn Sie darauf zugreifen, erhalten Sie die folgende Ausgabe:
Name und Wert der Cookies. Gelöschtes Cookie: VornameName: Vorname, Wert: JohnName: Nachname, Wert: Spieler
Besuchen Sie http://localhost:8080/main.jsp erneut und Sie erhalten die folgenden Ergebnisse:
Name und Wert der gefundenen Cookies: Name: Nachname, Wert: Spieler
Sie können Cookies auch manuell in Ihrem Browser löschen. Klicken Sie auf den Menüpunkt „Extras“, wählen Sie dann „Internetoptionen“ und klicken Sie auf „Cookies löschen“, um alle Cookies zu löschen.