Latest web development tutorials

JSP Cookie-Verarbeitung

Cookie ist eine Textdatei, in dem Client gespeichert, und sie sparen eine Menge von Titelinformationen. In Servlet-Technologie-Basis, sein scheinbar JSP können Unterstützung für die HTTP-Cookie zur Verfügung zu stellen.

Typischerweise gibt es drei Schritte wiederholen Besucher zu identifizieren:

  • Server-Skript sendet eine Reihe von Cookie an den Browser. Wie Name, Alter, ID-Nummer, usw.
  • Browser speichern diese Informationen auf dem lokalen Rechner, um für Eventualitäten vorzubereiten.
  • Das nächste Mal, wenn der Browser jede Anfrage an den Server sendet, wird es auch die Cookie-Informationen an den Server gesendet werden, und der Server verwendet diese Informationen, um den Benutzer zu identifizieren oder ein paar andere Dinge zu tun.

In diesem Kapitel lernen Sie, wie die Cookie-Methoden zu setzen oder zurückzusetzen, und wie diese zugänglich sind und wie sie zu entfernen.

JSP Cookie-Verarbeitung Bedürfnisse der chinesischen kodieren und zu dekodieren, wie folgt:

String   str   =   java.net.URLEncoder.encode("中文");            //编码
String   str   =   java.net.URLDecoder.decode("编码后的字符串");   // 解码

Cookie-Analyse

Cookie ist in der Regel festgelegt in den HTTP-Header-Informationen (auch wenn JavaScript kann direkt in einem Browser-Cookie gesetzt werden). JSP, wird ein Cookie gesetzt Header die folgenden Informationen an den Server zu senden:

HTTP/1.1 200 OK
Date: Fri, 04 Feb 2015 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=w3big; expires=Friday, 04-Feb-07 22:03:38 GMT; 
                 path=/; domain=w3big.com
Connection: close
Content-Type: text/html

Wie Sie sehen können, Set-Cookie-Header enthält einen Schlüssel-Wert-Paar, einen GMT (Greenwich Mean) Zeit, einen Weg, einen Domain-Namen. Key-Wert-Paar wird als URL codiert. Gültigkeit des Feldes ist ein Befehl, der den Browser nach welcher Zeit sagt Ihnen, dieses Cookie entfernen können.

Wenn Ihr Browser Cookies zu speichern, ist so konfiguriert, dann wird es die Informationen zu speichern, bis sie ablaufen. Wenn der Benutzer besucht den Cookie-Pfad jeder Seite entsprechen und Domain-Namen, dann wird der Browser das Cookie zurück an den Server zurückzusenden. Browser-Seite Header sieht wie folgt aus:

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

JSP-Skripte das Cookie auf Anfrage Objekt getCookies zuzugreifen () -Methode, die eine Reihe von Cookie-Objekten zurückgibt.


Servlets Cookie-Methoden

In der folgenden Tabelle sind die Cookie-Objekte häufigsten verwendeten Methoden:

Nein . Method & Beschreibung
1 public void setDomain (String - Muster)

Stellen Sie die Cookie-Domain, wie w3cschool.cc
2 public String getDomain ()

Erhalten Sie Cookie-Domain, wie w3cschool.cc
3 public void setMaxAge (int Ablauf)

Einstellen Cookie Ablauf in Sekunden ist die Standardeinstellung für die aktuelle Sitzung des Überlebenszeit gültig
4 public int getMaxAge ()

Get Cookie Ablauf in Sekunden ist der Standard -1, was darauf hinweist, dass das Cookie an den Browser leben geschlossen
5 public String getName ()

Gibt den Namen des Cookies, kann der Name nicht geändert werden, nachdem es erstellt wird
6 public void setValue (String newValue)

Legen Sie den Wert des Cookies
7 public String getValue ()

Ruft den Wert des Cookies
8 public void SetPath (String uri)

Festlegen der Cookie-Pfad, wird standardmäßig die aktuelle URL für alle Seiten-Verzeichnis und alle Unterverzeichnisse der
9 public String getPath ()

Erhalten Sie Cookie-Pfad
10 public void setSecure (boolean flag)

Um anzuzeigen, ob der Cookie-verschlüsselte Übertragung
11 public void SetComment (String Zweck)

Einstellen Kommentar, den Zweck des Cookies zu beschreiben. Wenn der Browser-Cookie für den Benutzer dargestellt werden Kommentare sehr nützlich sein,
12 public String getComment ()

Gibt den Kommentar, den Zweck des Cookies zu beschreiben, oder null, wenn keine da ist

Cookie-Einstellungen JSP

Verwenden JSP gesetzt Cookie besteht aus drei Schritten:

(1) Erstellen Sie ein Cookie - Objekt: Aufruf der Konstruktor Cookies ein Cookie Namen und den Wert als Parameter, sie sind Strings.

Cookie cookie = new Cookie("key","value");

Achten Sie darauf, im Auge zu behalten, dass die Namen und Werte keine Leerzeichen oder die folgenden Zeichen enthalten:

[ ] ( ) = , " / ? @ : ;

(2) Einstellung gilt: Call setMaxAge () Funktion gibt an, wie lange das Cookie gültig ist innerhalb von (in Sekunden). Im Folgenden wird eingestellt für 24 Stunden gültig.

cookie.setMaxAge(60*60*24); 

(3) sendet das Cookie an den HTTP - Response - Header: Call response.addCookie () Funktion auf dem HTTP - Header zu reagieren Cookie hinzuzufügen.

response.addCookie(cookie);

Beispiele Demo

main.jsp Datei Code ist wie folgt:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<%
   // 编码,解决中文乱码   
   String str = URLEncoder.encode(request.getParameter("name"),"utf-8");  
   // 设置 name 和 url cookie 
   Cookie name = new Cookie("name",
		   str);
   Cookie url = new Cookie("url",
			  request.getParameter("url"));

   // 设置cookie过期时间为24小时。
   name.setMaxAge(60*60*24); 
   url.setMaxAge(60*60*24); 

   // 在响应头部添加cookie
   response.addCookie( name );
   response.addCookie( url );
%>
<html>
<head>
<title>设置 Cookie</title>
</head>
<body>

<h1>设置 Cookie</h1>

<ul>
<li><p><b>网站名:</b>
   <%= request.getParameter("name")%>
</p></li>
<li><p><b>网址:</b>
   <%= request.getParameter("url")%>
</p></li>
</ul>
</body>
</html>

Im Folgenden ist eine einfache HTML-Formular per GET-Methode Daten an den Client main.jsp Datei einreichen und setzen Sie den Cookie:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>

<form action="main.jsp" method=GET>
站点名: <input type="text" name="name">
<br />
网址: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>

</body>
</html>

Speichern Sie die oben HTML-Code in test.htm Datei.

Legen Sie die Datei im aktuellen Verzeichnis unter WebContent jsp Projekt (mit main.jsp selben Verzeichnis).

Durch den Besuch http: // localhost: 8080 / testjsp / test.html main.jsp die Formulardaten in einer Datei einreichen, gezeigt Gif Demo unter:

Versuchen Sie die Eingabe von "Site-Name" und "URL", dann klicken Sie auf den Absenden-Button, es wird die "Site-Name" angezeigt und "URL" in Ihrem Bildschirm, und stellen Sie die "Site-Name" und "URL" zwei Cookie.


Verwenden Sie JSP zu lesen Plätzchen

Möchten Sie das Cookie zu lesen, müssen Sie request.getCookies () -Methode aufrufen, um eine Reihe von javax.servlet.http.Cookie-Objekt zu erhalten, und dann durchqueren das Array entsprechend der Methode getName () und getValue () -Methode, um jedes Cookie erhalten der Name und Wert.

Lassen Sie uns das letzte Beispiel des Cookies zu lesen, ist die folgende cookie.jsp Datei Code:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>获取 Cookie</title>
</head>
<body>
<%
   Cookie cookie = null;
   Cookie[] cookies = null;
   // 获取cookies的数据,是一个数组
   cookies = request.getCookies();
   if( cookies != null ){
      out.println("<h2> 查找 Cookie 名与值</h2>");
      for (int i = 0; i < cookies.length; i++){
         cookie = cookies[i];
        
         out.print("参数名 : " + cookie.getName());
         out.print("<br>");
         out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
         out.print("------------------------------------<br>");
      }
  }else{
      out.println("<h2>没有发现 Cookie</h2>");
  }
%>
</body>
</html>

Nach dem Browser-Zugriff, Ausgabe lautet:


Verwenden Sie JSP löschen Plätzchen

Entfernen Sie Cookie ist sehr einfach. Wenn Sie ein Cookie löschen möchten, die folgenden Schritte folgen auf der Linie zu tun:

  • ein vorhandenes Cookie sein wird dann in einem Cookie-Objekt gespeichert.
  • Das Cookie wird auf 0 gesetzt werden.
  • Dieses Cookie wird hinzugefügt, in den Antwort-Header zurück.

Beispiele Demo

Das folgende Verfahren ein Cookie löscht den Namen "Name", wenn Sie die zweite Lauf cookie.jsp sind, werden Name null sein.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>获取 Cookie</title>
</head>
<body>
<%
   Cookie cookie = null;
   Cookie[] cookies = null;
   // 获取当前域名下的cookies,是一个数组
   cookies = request.getCookies();
   if( cookies != null ){
	  out.println("<h2> 查找 Cookie 名与值</h2>");
      for (int i = 0; i < cookies.length; i++){
         cookie = cookies[i];
         if((cookie.getName( )).compareTo("name") == 0 ){
            cookie.setMaxAge(0);
            response.addCookie(cookie);
            out.print("删除 Cookie: " + 
            cookie.getName( ) + "<br/>");
         }
         out.print("参数名 : " + cookie.getName());
         out.print("<br>");
         out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
         out.print("------------------------------------<br>");
      }
  }else{
	  out.println("<h2>没有发现 Cookie</h2>");
  }
%>
</body>
</html>

Zugänglich über einen Browser, ist die Ausgabe:

Ein weiterer Besuch http: // localhost: 8080 / testjsp / cookie.jsp, werden die folgenden Ergebnisse erhalten:

Sie können den Namen width = "70%" "name" zu sehen von der Cookie weg war.

Sie können auch löschen Sie die Cookies in Ihrem Browser. IE-Browser auf das Menü Extras, klicken, dann auf Internetoptionen auszuwählen, klicken Sie Cookies löschen, können Sie alle Cookies löschen.