Las cookies son archivos de texto almacenados en la computadora del cliente y guardan una gran cantidad de información de seguimiento. Basado en la tecnología de servlet, JSP obviamente puede proporcionar soporte para cookies HTTP.
Normalmente hay tres pasos para identificar clientes habituales:
El script del servidor envía una serie de cookies al navegador. Como nombre, edad, número de identificación, etc.
El navegador almacena esta información localmente en la computadora en caso de que sea necesaria.
La próxima vez que el navegador envíe una solicitud al servidor, también enviará esta información de cookies 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 restablecer cookies, cómo acceder a ellas y cómo eliminarlas.
Las cookies generalmente se configuran en encabezados HTTP (aunque JavaScript puede configurar cookies directamente en el navegador). En JSP, configurar una cookie requiere enviar el siguiente encabezado de información al servidor:
HTTP/1.1 200 OKFecha: viernes, 4 de febrero de 2000 21:03:38 GMTServidor: Apache/1.3.9 (UNIX) PHP/4.0b3Set-Cookie: nombre=xyz expira=viernes, 04 de febrero de 2007 22:03: 38 GMT; ruta=/; dominio=tutorialspoint.comConexión: closeTipo de contenido: texto/html
Como puede ver, el encabezado Set-Cookie contiene un par clave-valor, una hora GMT (hora media de Greenwich), una ruta y un nombre de dominio. Los pares clave-valor se codificarán como URL. El campo de fecha de caducidad es una instrucción que le indica al navegador después de qué tiempo puede borrar esta cookie.
Si su navegador está configurado para almacenar cookies, conservará esta información hasta que caduque. Si alguna página visitada por el usuario coincide con la ruta y el nombre de dominio en la cookie, el navegador volverá a enviar la cookie al servidor. El encabezado en el lado del navegador se ve así:
GET / HTTP/1.0Conexión: Keep-AliveUser-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)Host: zink.demon.co.uk:1126Aceptar: image/gif, */*Aceptar- Codificación: gzipAccept-Idioma: enAccept-Charset: iso-8859-1,*,utf-8Cookie: nombre=xyz
Los scripts JSP acceden a estas cookies a través del método getCookies() en el objeto de solicitud. Este método devuelve una matriz de objetos Cookie.
La siguiente tabla enumera los métodos comúnmente utilizados en los objetos Cookie:
número de serie | Método y descripción |
---|---|
1 | public void setDomain (patrón de cadena) establece el nombre de dominio de la cookie, como w3cschool.cn |
2 | public String getDomain() obtiene el nombre de dominio de la cookie, como w3cschool.cn |
3 | public void setMaxAge(int expirary) establece el período de validez de la cookie en segundos. El período de validez predeterminado es el tiempo de supervivencia de la sesión actual. |
4 | public int getMaxAge() obtiene el período de validez de la cookie en segundos, el valor predeterminado es -1, lo que indica que la cookie vivirá hasta que se cierre el navegador |
5 | public String getName() devuelve el nombre de la cookie. El nombre no se puede modificar una vez creada. |
6 | public void setValue(String newValue) establece el valor de la cookie |
7 | public String getValue() obtiene el valor de la cookie |
8 | public void setPath(String uri) establece la ruta de la cookie, que de forma predeterminada es todas las URL en el directorio de la página actual y todos los subdirectorios de este directorio. |
9 | public String getPath() obtiene la ruta de la cookie |
10 | public void setSecure (bandera booleana) indica si la cookie debe cifrarse para su transmisión |
11 | public void setComment(Propósito de la cadena) establece el comentario para describir el propósito de la cookie. Las anotaciones pueden ser útiles cuando el navegador muestra la cookie al usuario. |
12 | public String getComment() devuelve un comentario que describe el propósito de la cookie, o nulo si no hay ninguno |
La configuración de cookies mediante JSP implica tres pasos:
(1) Cree un objeto Cookie: llame al constructor Cookie, utilizando el nombre y el valor de la cookie como parámetros, los cuales son cadenas.
Cookie cookie = nueva Cookie("clave","valor");
Es importante recordar que ni el nombre ni el valor pueden contener espacios ni los siguientes caracteres:
[ ] ( ) = , "/? @ : ;
(2) Establezca el período de validez: llame a la función setMaxAge() para indicar cuánto tiempo (en segundos) es válida la cookie. La siguiente operación establece el período de validez en 24 horas.
cookie.setMaxAge(60*60*24);
(3) Enviar cookies al encabezado de respuesta HTTP: llame a la función Response.addCookie() para agregar cookies al encabezado de respuesta HTTP.
respuesta.addCookie(cookie);
<% // Establecer cookies para nombre y apellido Cookie firstName = new Cookie("first_name", request.getParameter("first_name") Cookie lastName = new Cookie("last_name",request.getParameter("last_name")); //Establece el tiempo de caducidad de las cookies en 24 horas. firstName.setMaxAge(60*60*24); lastName.setMaxAge(60*60*24); // Agregar cookie al encabezado de respuesta respuesta.addCookie( firstName respuesta.addCookie( %><html><); head><title>Configuración de cookies</title></head><body><center><h1>Configuración Cookies</h1></center><ul><li><p><b>Nombre:</b><%= request.getParameter("first_name")%></p></li>< li><p><b>Apellido:</b> <%= request.getParameter("last_name")%></p></li></ul></body></html>
Coloque el archivo anterior en el directorio <directorio de instalación de Tomcat>/webapps/ROOT y luego visite http://localhost:8080/hello.jsp, obtendrá el siguiente resultado:
Intente ingresar Nombre y Apellido y luego haga clic en el botón Enviar. Mostrará el nombre y el apellido en su pantalla y configurará dos cookies, nombre y apellido, que se enviarán al servidor la próxima vez que haga clic. el botón enviar.
Para leer cookies, debe llamar al método request.getCookies() para obtener una matriz de objetos javax.servlet.http.Cookie, luego iterar a través de la matriz y usar el método getName() y getValue() para obtener cada cookie. nombre y valor.
Leamos las cookies del ejemplo anterior.
<html><head><title>Lectura de cookies</title></head><body><center><h1>Lectura de cookies</h1></center><% Cookie cookie = null Cookie[] cookies = null; // Obtiene datos de cookies, que son una matriz cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> Nombre y valor de las cookies encontradas</h2>"); int yo = 0; i < cookies.length; i++){ cookie = cookies[i]; out.print("Nombre: " + cookie.getName( ) + ", "); ( )+" <br/>"); } }else{ out.println("<h2>No se encuentran cookies</h2>");
Si configura la cookie de nombre en "John" y el apellido en "Player" y visita http://localhost:8080/main.jsp, obtendrá el siguiente resultado:
Cookies encontradas Nombre y valorNombre: nombre, Valor: John Nombre: apellido, Valor: Jugador
Eliminar las cookies es muy fácil. Si desea eliminar una cookie, simplemente siga los pasos que se detallan a continuación:
Obtenga una cookie existente y guárdela en el objeto Cookie.
Establezca la fecha de caducidad de las cookies en 0.
Vuelva a agregar esta cookie al encabezado de respuesta.
El siguiente programa elimina una cookie llamada "first_name". La próxima vez que ejecute main.jsp, first_name será nulo.
<html><head><title>Lectura de cookies</title></head><body><center> <h1>Lectura de cookies</h1></center><% Cookie cookie = null Cookie[] cookies = null; // Obtiene las cookies bajo el nombre de dominio actual, que es una matriz cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> Nombre y valor de las cookies encontradas</h2> "); para (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; if((cookie.getName( )).compareTo("first_name") == 0 ){ cookie.setMaxAge(0); (cookie); out.print("Cookie eliminada: " + cookie.getName( ) + "<br/>" } out.print("Nombre : " + cookie.getName( ) + ", "); out.print("Valor: " + cookie.getValue( )+" <br/>"); else{ out.println( "<h2>No se encuentran cookies</h2>"); cuerpo></html>
Acceder a él le dará el siguiente resultado:
Nombre y valor de las cookiesCookie eliminada: primer_nombreNombre: primer_nombre, Valor: JuanNombre: apellido, Valor: Jugador
Visite http://localhost:8080/main.jsp nuevamente y obtendrá los siguientes resultados:
Nombre y valor de cookies encontradasNombre: apellido, Valor: Jugador
También puede eliminar las cookies manualmente en su navegador. Haga clic en el elemento del menú Herramientas, luego seleccione Opciones de Internet, haga clic en Eliminar cookies para eliminar todas las cookies.