Latest web development tutorials

JSP Cookie Processing

Cookie è un file di testo memorizzato nel client, e risparmiare un sacco di informazioni sul brano. In base la tecnologia servlet, JSP pare essere in grado di fornire il supporto per il cookie HTTP.

In genere ci sono tre passi per identificare visitatori abituali:

  • lo script server invia una serie di cookie al browser. Come il nome, l'età, il numero ID, ecc
  • I browser memorizzano le informazioni sulla macchina locale, per preparare contingenze.
  • La prossima volta che il browser invia ogni richiesta al server, sarà anche inviato al server le informazioni del cookie, e il server utilizza queste informazioni per identificare l'utente o per fare altre cose.

In questo capitolo vi insegnerà come impostare o reimpostare le modalità dei cookie, e come accedervi e come rimuoverli.

JSP Cookie esigenze di elaborazione di codificare e decodificare cinese, come segue:

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

Analisi del biscotto

Cookie è di solito impostato (anche se JavaScript può essere impostata direttamente in un cookie del browser) nelle informazioni di intestazione HTTP. JSP, impostare un'intestazione cookie per inviare le seguenti informazioni al server:

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

Come si può vedere, intestazione Set-Cookie contiene una coppia chiave-valore, un tempo GMT (Greenwich Mean), un percorso, un nome di dominio. coppia chiave-valore è codificato come un URL. Validità del campo è un comando che indica al browser dopo che ora è possibile rimuovere questo cookie.

Se il browser è configurato per memorizzare dei cookie, allora sarà salvare le informazioni fino alla loro scadenza. Se l'utente visita una pagina corrispondono al percorso del cookie e il nome del dominio, quindi il browser si ri-inviare il cookie al server. intestazione browser-side simile a questa:

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

script JSP per accedere il cookie su richiesta degli oggetti getCookies metodo (), che restituisce un array di oggetti Cookie.


Servlet Metodi Cookie

Nella tabella seguente sono elencati gli oggetti Cookie metodi comunemente usati:

No. Metodo & descrizione
1 setDomain public void (String pattern)

Impostare il dominio dei cookie, come ad w3cschool.cc
2 public String getDomain ()

Ottenere dominio dei cookie, come ad w3cschool.cc
3 SetMaxAge public void (int di scadenza)

Impostazione scadenza del cookie, in secondi, il valore predefinito è valida per la sessione corrente del tempo di sopravvivenza
4 public int getMaxAge ()

Ottenere scadenza del cookie, in secondi, il valore predefinito è -1, che indica che il cookie vivrà fino a chiusura del browser
5 public String getName ()

Restituisce il nome del cookie, il nome non può essere modificato dopo la creazione
6 setValue public void (String newValue)

Impostare il valore del cookie
7 public String getValue ()

Ottiene il valore del cookie
8 SetPath public void (String uri)

Impostare il percorso di cookie, il valore predefinito è l'URL corrente per tutte le directory le pagine, e tutte le sottodirectory sotto la
9 public String getPath ()

Get percorso del cookie
10 setSecure public void (booleano)

Per indicare se la trasmissione cookie crittografato
11 SetComment public void (String scopo)

Impostazione commento per descrivere lo scopo del cookie. Quando il cookie del browser presentati all'utente, commenti saranno molto utili
12 public String getComment ()

Restituisce il commento che descrive lo scopo del cookie, o null se non c'è

Impostazioni cookie utilizzando JSP

Usa JSP set cookie è costituito da tre fasi:

(1) Creare un oggetto Cookie: chiamando il biscotto costruttore utilizzando un nome di cookie e di valore come parametri, che sono stringhe.

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

Assicuratevi di tenere a mente che i nomi ei valori non possono contenere spazi oi seguenti caratteri:

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

(2) impostazione è valida: Call SetMaxAge () funzione indica per quanto tempo il cookie è valido all'interno (in secondi). Quanto segue imposta valido per 24 ore.

cookie.setMaxAge(60*60*24); 

(3) invia il cookie di intestazioni di risposta HTTP: chiamata di funzione response.addCookie () per rispondere alla intestazione HTTP per aggiungere dei cookie.

response.addCookie(cookie);

Esempi Demo

codice del file main.jsp è il seguente:

<%@ 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>

Il seguente è un modulo HTML facile con il metodo GET per inviare i dati al file del client main.jsp e impostare il 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>

Salvare il codice HTML sopra in un file test.htm.

Inserire il file nella directory corrente sotto progetto WebContent jsp (con main.jsp stessa directory).

Visitando http: // localhost: 8080 / testjsp / test.html main.jsp inviare i dati del modulo in un file, Gif demo mostrato di seguito:

Provate a digitare "nome del sito" e "URL", quindi fare clic sul pulsante di invio, verrà visualizzato il "nome del sito" e "URL" nella schermata, e impostare il "nome del sito" e "URL" due biscotti.


Utilizzare JSP leggere Cookie

Vuoi leggere il cookie, è necessario chiamare request.getCookies () per ottenere un array di oggetti javax.servlet.http.Cookie, e poi attraversare l'array utilizzando il metodo getName () e il metodo getValue () per ottenere ogni cookie il nome e il valore.

Leggiamo l'ultimo esempio del cookie, il seguente è codice del file cookie.jsp:

<%@ 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>

Dopo l'accesso del browser, l'uscita è:


Utilizzare JSP Elimina Cookie

Rimuovere cookie è molto semplice. Se si desidera eliminare un cookie, per seguire i seguenti passi da fare sulla linea:

  • Essendo un cookie esistente viene quindi memorizzato in un oggetto Cookie.
  • Il cookie verrà impostato su 0.
  • Questo cookie sarà aggiunto nuovamente dentro l'intestazione di risposta.

Esempi Demo

La seguente procedura elimina un cookie denominato "nome" quando si è il secondo cookie.jsp corsa, nome sarà nullo.

<%@ 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>

Si accede attraverso un browser, l'output è:

Un'altra visita http: // localhost: 8080 / testjsp / cookie.jsp, otterrà i seguenti risultati:

Si può vedere la larghezza name = "70%" "nome" del cookie non c'era più.

È anche possibile eliminare manualmente il cookie nel browser. browser IE cliccando sul menu Strumenti, quindi selezionare Opzioni Internet, fare clic su Elimina cookie, è possibile eliminare tutto il cookie.