Latest web development tutorials

Procesamiento de la galleta JSP

Cookie es un archivo de texto almacenado en el cliente, y guardar una gran cantidad de información de la pista. En base a la tecnología de servlets, JSP parecer ser capaz de proporcionar apoyo a la cookie HTTP.

Por lo general hay tres pasos para identificar visitantes de la repetición:

  • script del servidor envía una serie de cookie en el navegador. Tales como nombre, edad, número de identificación, etc.
  • Los navegadores almacenan esta información en la máquina local, para prepararse para las contingencias.
  • La próxima vez que el navegador envía ninguna solicitud al servidor, sino que también se envía al servidor la información de la cookie, y el servidor utiliza esta información para identificar al usuario o para hacer otras cosas.

Este capítulo le enseñará cómo establecer o restablecer los métodos de galletas, y cómo acceder a ellos y cómo eliminarlos.

JSP galleta necesidades de procesamiento de codificar y decodificar chino, como sigue:

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

Análisis de la galleta

Cookie se establece por lo general (aunque JavaScript se puede establecer directamente en una cookie del navegador) en la información del encabezado HTTP. JSP, establecer una cabecera de cookies para enviar la siguiente información al servidor:

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

Como se puede ver, la cabecera Set-Cookie contiene un par clave-valor, una hora GMT (Greenwich Mean), un camino, un nombre de dominio. par clave-valor se codifica como una dirección URL. Validez del campo es un comando que indica al navegador después de la hora a la que puede eliminar esta cookie.

Si su navegador está configurado para almacenar cookies, entonces se guardará la información hasta su expiración. Si el usuario visita alguna página del partido de la ruta de la cookie y el nombre de dominio, a continuación, el navegador va a volver a enviar la cookie de vuelta al servidor. cabecera del lado del navegador es el siguiente:

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

secuencias de comandos JSP para acceder a la cookie por el método (), que devuelve un array de objetos Cookie getCookies de solicitud de objetos.


Métodos de cookies de servlets

La siguiente tabla muestra los objetos Cookie métodos comúnmente utilizados:

No. Método y Descripción
1 pública setDomain vacío (Patrón de encordado)

Establecer el dominio de las cookies, tales w3cschool.cc
2 Cadena GetDomain pública ()

Obtener dominio de las cookies, tales w3cschool.cc
3 pública SetMaxAge void (int caducidad)

Configuración de caducidad de la cookie, en cuestión de segundos, el valor predeterminado es válido para la sesión actual del tiempo de supervivencia
4 public int getMaxAge ()

Obtener caducidad de la cookie, en cuestión de segundos, el valor predeterminado es -1, que indica que la cookie vivirá hasta el navegador se cierra
5 Public String getName ()

Devuelve el nombre de la cookie, el nombre no se puede cambiar después de que se creó
6 pública setValue vacío (String nuevoValor)

Establecer el valor de la cookie
7 Cadena getValue pública ()

Obtiene el valor de la cookie
8 pública setPath vacío (cadena URI)

Configuración de la ruta de la cookie, el valor predeterminado es la URL actual para todos directorio de páginas, y todos los subdirectorios bajo el
9 Cadena getPath pública ()

Obtener ruta de cookies
10 setSecure public void (boolean flag)

Para indicar si la transmisión cookie cifrada
11 pública SetComment vacío (propósito String)

Configuración comentario para describir la finalidad de la cookie. Cuando la cookie del navegador presenta al usuario, los comentarios serán muy útiles
12 Cadena getComment pública ()

Devuelve el comentario que describe el propósito de la cookie, o null si no hay

Ajustes de cookies utilizando JSP

Uso de JSP conjunto de cookies consta de tres pasos:

(1) Crear un objeto Cookie: llamando al constructor de la galleta usando un nombre de la cookie y valor como parámetros, que son cadenas.

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

Asegúrese de tener en cuenta que los nombres y los valores no pueden contener espacios ni los siguientes caracteres:

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

(2) ajuste es válido: Call SetMaxAge () función indica el tiempo que la cookie es válida dentro (en segundos). Lo siguiente configurará una validez de 24 horas.

cookie.setMaxAge(60*60*24); 

(3) envía la cookie a las cabeceras de respuesta HTTP: llamada a la función response.addCookie () para responder a la cabecera HTTP para agregar la galleta.

response.addCookie(cookie);

Los ejemplos de demostración

código de archivo main.jsp es el siguiente:

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

El siguiente es un simple formulario HTML mediante el método GET para enviar datos al archivo main.jsp cliente y establece la 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>

Guarde el código HTML anterior en un archivo test.htm.

Coloque el archivo en el directorio actual y con proyecto WebContent JSP (con main.jsp el mismo directorio).

En la página http: // localhost: 8080 / testjsp / test.html main.jsp enviar los datos del formulario a un archivo, el GIF de demostración se muestra a continuación:

Pruebe a escribir "nombre del sitio" y "URL", a continuación, haga clic en el botón de enviar, se mostrará el "nombre del sitio" y "URL" en la pantalla y ajustar el "nombre del sitio" y "URL" dos galletas.


Utilizar JSP para leer la galleta

¿Quieres leer la cookie, tendrá que llamar al método request.getCookies () para obtener una matriz de objetos javax.servlet.http.Cookie, y luego atravesar la matriz mediante el método getValue () método getName () y para conseguir cada galleta el nombre y valor.

Vamos a leer el último ejemplo de la cookie, el siguiente es el código de archivo 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>

Después de que el acceso del navegador, la salida es:


Utilizar JSP Eliminar Cookies

Eliminar cookie es muy simple. Si desea eliminar una cookie, seguir los siguientes pasos para hacer en la línea:

  • Al ser una galleta existente se almacena en un objeto de la galleta.
  • La cookie se establece en 0.
  • Esta cookie se vuelve a incluir en la cabecera de respuesta.

Los ejemplos de demostración

El siguiente procedimiento elimina una cookie llamada "nombre" cuando se está cookie.jsp la segunda carrera, el nombre será nula.

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

Se accede a través de un navegador, la salida es:

Otra visita http: // localhost: 8080 / testjsp / cookie.jsp, obtendrá los siguientes resultados:

Se puede ver el ancho name = "70%" "nombre" de la cookie se había ido.

También puede eliminar manualmente la cookie en su navegador. el navegador Internet Explorer haciendo clic en el menú Herramientas y seleccione Opciones de Internet, haga clic en Eliminar cookies, puede eliminar toda la galleta.