JSP - Umgang mit Cookies
In diesem Kapitel werden wir die Behandlung von Cookies in JSP behandeln. Cookies sind Textdateien, die auf dem Client-Computer gespeichert werden und für verschiedene Zwecke der Informationsverfolgung gespeichert werden. JSP unterstützt HTTP-Cookies transparent unter Verwendung der zugrunde liegenden Servlet-Technologie.
Das Identifizieren und Zurückgeben von Benutzern umfasst drei Schritte:
Das Serverskript sendet eine Reihe von Cookies an den Browser. Zum Beispiel Name, Alter oder Identifikationsnummer usw.
Der Browser speichert diese Informationen zur zukünftigen Verwendung auf dem lokalen Computer.
Wenn der Browser das nächste Mal eine Anfrage an den Webserver sendet, sendet er diese Cookie-Informationen an den Server, und der Server verwendet diese Informationen, um den Benutzer zu identifizieren, oder kann auch für einen anderen Zweck verwendet werden.
In diesem Kapitel erfahren Sie, wie Sie Cookies setzen oder zurücksetzen, wie Sie darauf zugreifen und wie Sie sie mit JSP-Programmen löschen.
Die Anatomie eines Kekses
Cookies werden normalerweise in einem HTTP-Header gesetzt (obwohl JavaScript ein Cookie auch direkt in einem Browser setzen kann). Eine JSP, die ein Cookie setzt, sendet möglicherweise Header, die ungefähr so aussehen:
HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name = xyz; expires = Friday, 04-Feb-07 22:03:38 GMT;
path = /; domain = tutorialspoint.com
Connection: close
Content-Type: text/html
Wie Sie sehen können, ist die Set-Cookie header enthält a name value pair, a GMT date, a path und a domain. Der Name und der Wert werden URL-codiert. Dasexpires Feld ist eine Anweisung an den Browser zu "forget" der Cookie nach der angegebenen Zeit und Datum.
Wenn der Browser zum Speichern von Cookies konfiguriert ist, werden diese Informationen bis zum Ablaufdatum gespeichert. Wenn der Benutzer den Browser auf eine Seite zeigt, die dem Pfad und der Domäne des Cookies entspricht, sendet er das Cookie erneut an den Server. Die Header des Browsers könnten ungefähr so aussehen -
GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name = xyz
Ein JSP-Skript hat dann über die Anforderungsmethode Zugriff auf die Cookies request.getCookies()Dies gibt ein Array von Cookie- Objekten zurück.
Servlet-Cookies-Methoden
In der folgenden Tabelle sind die nützlichen Methoden aufgeführt, die mit dem Cookie-Objekt verknüpft sind und die Sie beim Bearbeiten von Cookies in JSP verwenden können.
S.No. | Methode & Beschreibung |
---|---|
1 | public void setDomain(String pattern) Diese Methode legt die Domäne fest, für die das Cookie gilt. Zum Beispiel tutorialspoint.com. |
2 | public String getDomain() Diese Methode ruft die Domain ab, für die das Cookie gilt. Zum Beispiel tutorialspoint.com. |
3 | public void setMaxAge(int expiry) Diese Methode legt fest, wie viel Zeit (in Sekunden) vergehen soll, bevor das Cookie abläuft. Wenn Sie dies nicht festlegen, bleibt das Cookie nur für die aktuelle Sitzung gültig. |
4 | public int getMaxAge() Diese Methode gibt das maximale Alter des Cookies in Sekunden zurück. Standardmäßig: -1 Das Anzeigen des Cookies bleibt bis zum Herunterfahren des Browsers bestehen. |
5 | public String getName() Diese Methode gibt den Namen des Cookies zurück. Der Name kann nach der Erstellung nicht mehr geändert werden. |
6 | public void setValue(String newValue) Diese Methode legt den Wert fest, der dem Cookie zugeordnet ist. |
7 | public String getValue() Diese Methode ruft den dem Cookie zugeordneten Wert ab. |
8 | public void setPath(String uri) Diese Methode legt den Pfad fest, für den dieses Cookie gilt. Wenn Sie keinen Pfad angeben, wird das Cookie für alle URLs im selben Verzeichnis wie die aktuelle Seite sowie für alle Unterverzeichnisse zurückgegeben. |
9 | public String getPath() Diese Methode ruft den Pfad ab, für den dieses Cookie gilt. |
10 | public void setSecure(boolean flag) Diese Methode legt den booleschen Wert fest, der angibt, ob das Cookie nur über verschlüsselte (dh SSL) Verbindungen gesendet werden soll. |
11 | public void setComment(String purpose) Diese Methode gibt einen Kommentar an, der den Zweck eines Cookies beschreibt. Der Kommentar ist nützlich, wenn der Browser dem Benutzer das Cookie präsentiert. |
12 | public String getComment() Diese Methode gibt den Kommentar zurück, der den Zweck dieses Cookies beschreibt, oder null, wenn das Cookie keinen Kommentar enthält. |
Cookies mit JSP setzen
Das Setzen von Cookies mit JSP umfasst drei Schritte:
Schritt 1: Erstellen eines Cookie-Objekts
Sie rufen den Cookie-Konstruktor mit einem Cookie-Namen und einem Cookie-Wert auf, die beide Zeichenfolgen sind.
Cookie cookie = new Cookie("key","value");
Beachten Sie, dass weder der Name noch der Wert Leerzeichen oder eines der folgenden Zeichen enthalten dürfen:
[ ] ( ) = , " / ? @ : ;
Schritt 2: Festlegen des maximalen Alters
Sie verwenden setMaxAgeum anzugeben, wie lange (in Sekunden) das Cookie gültig sein soll. Mit dem folgenden Code wird ein Cookie für 24 Stunden erstellt.
cookie.setMaxAge(60*60*24);
Schritt 3: Senden des Cookies in die HTTP-Antwortheader
Sie verwenden response.addCookie Um Cookies wie folgt in den HTTP-Antwortheader einzufügen
response.addCookie(cookie);
Beispiel
Lassen Sie uns unser Formularbeispiel ändern , um die Cookies für den Vor- und Nachnamen zu setzen.
<%
// Create cookies for first and last names.
Cookie firstName = new Cookie("first_name", request.getParameter("first_name"));
Cookie lastName = new Cookie("last_name", request.getParameter("last_name"));
// Set expiry date after 24 Hrs for both the cookies.
firstName.setMaxAge(60*60*24);
lastName.setMaxAge(60*60*24);
// Add both the cookies in the response header.
response.addCookie( firstName );
response.addCookie( lastName );
%>
<html>
<head>
<title>Setting Cookies</title>
</head>
<body>
<center>
<h1>Setting Cookies</h1>
</center>
<ul>
<li><p><b>First Name:</b>
<%= request.getParameter("first_name")%>
</p></li>
<li><p><b>Last Name:</b>
<%= request.getParameter("last_name")%>
</p></li>
</ul>
</body>
</html>
Lassen Sie uns den obigen Code eingeben main.jsp Datei und verwenden Sie es in der folgenden HTML-Seite -
<html>
<body>
<form action = "main.jsp" method = "GET">
First Name: <input type = "text" name = "first_name">
<br />
Last Name: <input type = "text" name = "last_name" />
<input type = "submit" value = "Submit" />
</form>
</body>
</html>
Behalten Sie den obigen HTML-Inhalt in einer Datei hello.jsp und legen hello.jsp und main.jsp im <Tomcat-installation-directory>/webapps/ROOTVerzeichnis. Wann werden Sie zugreifenhttp://localhost:8080/hello.jspHier ist die tatsächliche Ausgabe des obigen Formulars.
Versuchen Sie, den Vor- und Nachnamen einzugeben, und klicken Sie dann auf die Schaltfläche Senden. Dadurch werden der Vor- und Nachname auf Ihrem Bildschirm angezeigt und zwei Cookies gesetztfirstName und lastName. Diese Cookies werden beim nächsten Klicken auf die Schaltfläche Senden an den Server zurückgegeben.
Im nächsten Abschnitt erklären wir, wie Sie in Ihrer Webanwendung wieder auf diese Cookies zugreifen können.
Cookies mit JSP lesen
Um Cookies zu lesen, müssen Sie ein Array von javax.servlet.http.Cookie- Objekten erstellen, indem Sie das aufrufengetCookies( )Methode von HttpServletRequest . Fahren Sie dann durch das Array und verwenden SiegetName() und getValue() Methoden für den Zugriff auf jedes Cookie und den zugehörigen Wert.
Beispiel
Lesen wir nun Cookies, die im vorherigen Beispiel gesetzt wurden -
<html>
<head>
<title>Reading Cookies</title>
</head>
<body>
<center>
<h1>Reading Cookies</h1>
</center>
<%
Cookie cookie = null;
Cookie[] cookies = null;
// Get an array of Cookies associated with the this domain
cookies = request.getCookies();
if( cookies != null ) {
out.println("<h2> Found Cookies Name and Value</h2>");
for (int i = 0; i < cookies.length; i++) {
cookie = cookies[i];
out.print("Name : " + cookie.getName( ) + ", ");
out.print("Value: " + cookie.getValue( )+" <br/>");
}
} else {
out.println("<h2>No cookies founds</h2>");
}
%>
</body>
</html>
Lassen Sie uns nun den obigen Code eingeben main.jspDatei und versuchen, darauf zuzugreifen. Wenn Sie die einstellenfirst_name cookie als "John" und der last_name cookie als "Player" läuft dann http://localhost:8080/main.jsp zeigt das folgende Ergebnis an -
Found Cookies Name and Value
Name : first_name, Value: John
Name : last_name, Value: Player
Cookies mit JSP löschen
Das Löschen von Cookies ist sehr einfach. Wenn Sie ein Cookie löschen möchten, müssen Sie nur die folgenden drei Schritte ausführen:
Lesen Sie ein bereits vorhandenes Cookie und speichern Sie es im Cookie-Objekt.
Setzen Sie das Cookie-Alter mit dem auf Null setMaxAge() Methode zum Löschen eines vorhandenen Cookies.
Fügen Sie dieses Cookie wieder in den Antwortheader ein.
Beispiel
Das folgende Beispiel zeigt Ihnen, wie Sie ein vorhandenes Cookie mit dem Namen löschen "first_name" und wenn Sie main.jsp JSP das nächste Mal ausführen, wird der Nullwert für first_name zurückgegeben.
<html>
<head>
<title>Reading Cookies</title>
</head>
<body>
<center>
<h1>Reading Cookies</h1>
</center>
<%
Cookie cookie = null;
Cookie[] cookies = null;
// Get an array of Cookies associated with the this domain
cookies = request.getCookies();
if( cookies != null ) {
out.println("<h2> Found Cookies Name and Value</h2>");
for (int i = 0; i < cookies.length; i++) {
cookie = cookies[i];
if((cookie.getName( )).compareTo("first_name") == 0 ) {
cookie.setMaxAge(0);
response.addCookie(cookie);
out.print("Deleted cookie: " +
cookie.getName( ) + "<br/>");
}
out.print("Name : " + cookie.getName( ) + ", ");
out.print("Value: " + cookie.getValue( )+" <br/>");
}
} else {
out.println(
"<h2>No cookies founds</h2>");
}
%>
</body>
</html>
Lassen Sie uns nun den obigen Code in die main.jspDatei und versuchen, darauf zuzugreifen. Es wird das folgende Ergebnis angezeigt -
Cookies Name and Value
Deleted cookie : first_name
Name : first_name, Value: John
Name : last_name, Value: Player
Führen Sie nun erneut http: // localhost: 8080 / main.jsp aus und es sollte nur ein Cookie wie folgt angezeigt werden:
Found Cookies Name and Value
Name : last_name, Value: Player
Sie können Ihre Cookies im Internet Explorer manuell löschen. Beginnen Sie im Menü Extras und wählen Sie die Internetoptionen. Um alle Cookies zu löschen, klicken Sie auf die Schaltfläche Cookies löschen.