English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Las cookies se almacenan en el archivo de texto del cliente y contienen una gran cantidad de información de rastreo. Basado en la tecnología Servlet, JSP puede proporcionar soporte para cookies HTTP.
Generalmente hay tres pasos para identificar a los clientes recurrentes:
El script del servidor envía una serie de cookies al navegador. Por ejemplo, nombre, edad, número de ID, etc.
El navegador almacena esta información en el equipo local para futuras necesidades.
Cuando el navegador envíe cualquier solicitud al servidor la próxima vez, enviará esta información de cookie al servidor, y luego el servidor utilizará esta información para identificar al usuario o hacer otras cosas.
Esta sección le enseñará cómo configurar o reconfigurar las cookies, así como cómo acceder a ellas y cómo eliminarlas.
El manejo de Cookie en JSP requiere codificación y descodificación de chino, el método es el siguiente:
String str = java.net.URLEncoder.encode("chino", "UTF-8")-8); //Codificación String str = java.net.URLDecoder.decode("cadenas de caracteres codificadas","UTF-8")-8); // Descodificación
Las cookies se establecen generalmente en la cabecera de información HTTP (aunque JavaScript puede establecer cookies directamente en el navegador). En JSP, para establecer una cookie, se debe enviar la siguiente cabecera de 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=w3codebox; expires=Friday, 04-Feb-17 22:03:38 GMT; path=/; domain=oldtoolbag.com Connection: close Content-Type: text/html
Como puede ver, Set-La cabecera de información de Cookie contiene un par de clave y valor, una hora GMT (Greenwich Mean Time), una ruta y un dominio. El par de clave y valor se codifica como URL. La instrucción de validez de dominio indica cuándo el navegador puede eliminar esta cookie.
Si el navegador está configurado para almacenar cookies, guardará esta información hasta que caduque. Si cualquier página visitada por el usuario coincide con la ruta y el dominio del cookie, el navegador enviará de nuevo este cookie al servidor. La cabecera de información del navegador se verá así:
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
Las scripts de JSP acceden a estos cookies a través del método getCookies() del objeto request, que devuelve un array de objetos Cookie.
La siguiente tabla enumera los métodos comunes del objeto Cookie:
Número de orden | Método & Descripción |
---|---|
1 | public void setDomain(String pattern) Establecer el nombre de dominio del cookie, por ejemplo, oldtoolbag.com |
2 | public String getDomain() Obtener el nombre de dominio del cookie, por ejemplo, oldtoolbag.com |
3 | public void setMaxAge(int expiry) Establecer la duración de validez del cookie, en segundos, el valor predeterminado es la duración de vida de la sesión actual |
4 | public int getMaxAge() Obtener la duración de validez del cookie, en segundos, el valor predeterminado es-1 indicando que el cookie vivirá hasta que el navegador se cierre |
5 | public String getName() Devuelve el nombre del cookie, el nombre se crea y no se puede modificar después |
6 | public void setValue(String newValue) Establecer el valor del cookie |
7 | public String getValue() Obtener el valor del cookie |
8 | public void setPath(String uri) Establecer la ruta del cookie, el valor predeterminado es todos los URL en el directorio actual de la página y todos los subdirectorios de este directorio |
9 | public String getPath() Obtener la ruta del cookie |
10 | public void setSecure(boolean flag) Indicar si el cookie debe ser transmitido encriptado |
11 | public void setComment(String purpose) Establecer la descripción del comentario del propósito del cookie. El comentario será muy útil cuando el navegador lo muestre al usuario. |
12 | public String getComment() Devuelve un comentario que describe el propósito del cookie, o null si no hay comentarios. |
Se utilizan tres pasos para configurar el cookie con JSP:
(1) Crear un objeto cookie: Llamar al constructor del cookie con un nombre y valor como parámetros, ambos son cadenas de texto.
Cookie cookie = new Cookie("key","value");
Asegúrese de que el nombre y el valor no contengan espacios o caracteres como los siguientes:
[ ] ( ) = , " / ? @ : ;
(2) Establecer la duración de validez:Llamar a la función setMaxAge() indica cuánto tiempo (en segundos) es válido el cookie. Las siguientes operaciones establecen la duración de validez en: 24 horas.
cookie.setMaxAge(60*60*24);
(3Enviar el cookie al encabezado de respuesta HTTP:Se llama a la función response.addCookie() para agregar un cookie al encabezado de respuesta HTTP.
response.addCookie(cookie);
El código del archivo main.jsp se muestra a continuación:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import="java.net." %>*" %> <% // codificación, resolver problemas de mal entrelazamiento de caracteres chinos. String str = URLEncoder.encode(request.getParameter("name"),"utf-8); // Establecer las cookies name y url Cookie name = new Cookie("name", str); Cookie url = new Cookie("url", request.getParameter("url")); // Establecer el tiempo de expiración de la cookie a24horas. name.setMaxAge(60*60*24); url.setMaxAge(60*60*24); // Añadir cookie en la cabecera de la respuesta response.addCookie(name); response.addCookie(url); %> <html> <head> <title>Establecer Cookie</title> </head> <body> <h1>Establecer Cookie</h1> ul> <li><p><b>Nombre del sitio:</b> <%= request.getParameter("name") %> </p></li> <li><p><b>URL:</b> <%= request.getParameter("url") %> </p></li> </ul> </body> </html>
A continuación, se muestra un formulario HTML simple que envía los datos del cliente al archivo main.jsp mediante el método GET y establece cookies:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Red de tutoriales básicos(oldtoolbag.com)</title> </head> <body> <form action="main.jsp" method=GET> Nombre del sitio: <input type="text" name="name"> <br /> URL: <input type="text" name="url" /> <input type="submit" value="Enviar" /> </form> </body> </html>
Guarde el código HTML anterior en el archivo test.htm.
Coloque este archivo en el directorio WebContent del proyecto jsp actual (en el mismo directorio que main.jsp).
A través de la visita a http://localhost:8080/testjsp/Suba los datos del formulario a main.jsp como se muestra a continuación: test.html
Intente ingresar "Nombre del sitio" y "URL", luego haga clic en el botón de enviar, se mostrará "Nombre del sitio" y "URL" en su pantalla y se establecerán dos cookies de "Nombre del sitio" y "URL".
Para leer el cookie, debe llamar al método request.getCookies() para obtener un array de objetos javax.servlet.http.Cookie, luego recorrer este array, usar getName() y getValue() métodos para obtener el nombre y valor de cada cookie.
Vamos a leer el cookie del ejemplo anterior, a continuación se muestra el código del 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>Obtener Cookie</title> </head> <body> <% Cookie cookie = null; Cookie[] cookies = null; // Obtener datos de cookies, es un array cookies = request.getCookies(); if( cookies != null ) { out.println("<h2> buscar nombre y valor de Cookie </h2)"); for (int i = 0; i < cookies.length; i++} cookie = cookies[i]; out.print("Nombre de parámetro: "); + cookie.getName()); out.print("<br>); out.print("Valor de parámetro: "); + URLDecoder.decode(cookie.getValue(), "utf-8) +"<br> out.print("------------------------------------<br> } } out.println("<h2>No se encontró Cookie</h2)"); } %> </body> </html>
Después de que el navegador acceda, el resultado de la salida será:
Eliminar cookie es muy simple. Si desea eliminar un cookie, siga los pasos a continuación:
Obtener un cookie existente y almacenarlo en el objeto Cookie.
Establecer la duración de vida del cookie en 0.
Vuelva a agregar este cookie a la cabecera de la respuesta.
El siguiente programa elimina un cookie llamado "name", cuando ejecute cookie.jsp por segunda vez, name será null.
<%@ 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>Obtener Cookie</title> </head> <body> <% Cookie cookie = null; Cookie[] cookies = null; // Obtener cookies del dominio actual, es un array cookies = request.getCookies(); if( cookies != null ) { out.println("<h2> buscar nombre y valor de 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("Eliminar Cookie: "); + cookie.getName( ) + "<br/)"); } out.print("Nombre de parámetro: "); + cookie.getName()); out.print("<br>); out.print("Valor de parámetro: "); + URLDecoder.decode(cookie.getValue(), "utf-8) +"<br> out.print("------------------------------------<br> } } out.println("<h2>No se encontró Cookie</h2)"); } %> </body> </html>
Accediendo a través del navegador, el resultado de salida es:
Acceda nuevamente a http://localhost:8080/testjsp/cookie.jsp, se obtendrá el siguiente resultado:
Puede ver que la cookie llamada "name" ya no existe.
También puede eliminar manualmente las cookies en el navegador. En el navegador IE, haga clic en la opción Herramientas, luego seleccione Opciones de Internet, haga clic en Eliminar cookies para eliminar todas las cookies.