Cookies en JSP con ejemplo

⚡ Resumen inteligente

Las cookies JSP son pequeños archivos de texto que se almacenan en el navegador del cliente y que ayudan a las aplicaciones JSP. tracPermite gestionar sesiones, recordar las preferencias del usuario y personalizar las respuestas en múltiples solicitudes HTTP mediante la API javax.servlet.http.Cookie y los encabezados de respuesta estándar.

  • 🍪 Definición: Las cookies JSP son archivos de texto con pares clave-valor que se almacenan en el dispositivo del cliente y se leen a través del objeto de solicitud en cada llamada HTTP posterior.
  • 🔐 Banderas de seguridad: Configurar las opciones Secure, HttpOnly y el atributo SameSite moderno protege las cookies JSP contra la interceptación, el acceso mediante scripts y la falsificación de solicitudes entre sitios.
  • 🇧🇷 Control de por vida: El método setMaxAge decide si una cookie JSP se guarda en el disco o se elimina automáticamente cuando finaliza la sesión del navegador.
  • ✅ API estándar: La clase javax.servlet.http.Cookie, con sus métodos response.addCookie y request.getCookies, abarca la creación, transmisión, recuperación y eliminación de cookies en Servlet 4.x y 5.x.
  • 🧪 Ejemplo trabajado: Una demostración de dos páginas sobre nombre de usuario y correo electrónico muestra cómo se crean, envían y conservan las cookies JSP durante diez horas, y cómo se leen en la siguiente solicitud.

Cookies en JSP con ejemplo

¿Qué son las cookies JSP?

Las cookies JSP son pequeños archivos de texto que un servidor web basado en JSP solicita al navegador del cliente que almacene en el dispositivo del usuario. Dado que HTTP es un protocolo sin estado, las cookies JSP proporcionan una forma sencilla y basada en estándares para recordar información entre solicitudes, como el estado de inicio de sesión, la elección de idioma, el tema o la tienda.ping identificadores del carrito.

  • Las cookies JSP son archivos de texto plano que el navegador almacena en el equipo del cliente.
  • están acostumbrados a tracinformación k para la gestión de sesiones, personalización y análisis.
  • JSP admite cookies HTTP a través de la tecnología Servlet subyacente y la clase javax.servlet.http.Cookie.
  • Las cookies JSP son transmitted dentro de los encabezados de solicitud y respuesta HTTP en cada solicitud coincidente.
  • Cuando el navegador está configurado para aceptar cookies, las almacena en el disco hasta la fecha de caducidad establecida por setMaxAge.

¿Por qué usar cookies JSP?

Los desarrolladores de JSP confían en las cookies porque las solicitudes HTTP son independientes entre sí. Sin las cookies de JSP, el servidor no sabría que dos solicitudes pertenecen al mismo visitante. Las cookies en JSP solucionan este problema con un mínimo de estado en el servidor.

  • Sesión tracRey: Una cookie JSESSIONID conecta varias páginas vistas a una única sesión lógica.
  • Personalización: Las cookies JSP pueden almacenar preferencias de idioma, tema o diseño.
  • Ayudantes de autenticación: Los tokens de "recordarme" y el estado de inicio de sesión suelen residir en cookies con las banderas HttpOnly y Secure habilitadas.
  • Analítica: Las cookies en JSP registran a los visitantes recurrentes, las fuentes de referencia y las rutas de conversión.

Tipos de cookies JSP

  1. Cookie persistente: Una cookie JSP persistente permanece almacenada en el dispositivo durante el tiempo configurado con setMaxAge. Esto ayuda a la aplicación a recordar las preferencias y los datos de inicio de sesión incluso después de reiniciar el navegador.
  2. Cookie no persistente: Una cookie JSP no persistente, también llamada cookie de sesión, reside únicamente en la memoria del navegador y se elimina cuando el usuario cierra el navegador. Se utiliza principalmente para sesiones de corta duración. tracRey.

Métodos de cookies JSP

La clase javax.servlet.http.Cookie expone los siguientes métodos que se utilizan con mayor frecuencia al trabajar con cookies JSP.

  • public void establecerDominio(String dominio)

    Este método de configuración de cookies de JSP establece el dominio al que se aplica la cookie de JSP.

  • public String getDomain()

    Este método get cookie de JSP devuelve el dominio al que se aplica la cookie de JSP.

  • public void establecerEdadMáxima(int expiración)

    Establece el tiempo máximo en segundos antes de que caduque la cookie JSP. Un valor de cero elimina la cookie y un valor negativo la convierte en una cookie de sesión.

  • público entero obtenerEdadMáxima()

    Devuelve la antigüedad máxima de la cookie JSP en segundos.

  • public String getName()

    Devuelve el nombre de la cookie JSP.

  • public void establecerValor(String valor)

    Establece el valor asociado a la cookie JSP.

  • public String getValue()

    Devuelve el valor asociado a la cookie JSP.

  • public void establecerRuta(String ruta)

    Este método de configuración de cookies en JSP establece la URL Ruta a la que se aplica la cookie.

  • public String getPath()

    Devuelve el URL Ruta a la que se aplica la cookie JSP.

  • público void establecerSeguridad(booleano flag)

    Marca la cookie JSP para que solo se envíe a través de conexiones HTTPS cifradas.

  • public void establecerComentario(String cmt)

    Describe la finalidad de la cookie JSP.

  • public String getComment()

    Devuelve el comentario que describe la cookie JSP.

Cómo gestionar las cookies de JSP

Trabajar con cookies JSP implica tres pasos repetibles. Se utiliza el mismo patrón para el estado de inicio de sesión, los cambios de tema y la tienda.ping carros.

  1. Crea el objeto Cookie de JSP utilizando el constructor Cookie.
  2. Configure los atributos de las cookies, especialmente la antigüedad máxima, la ruta y los indicadores de seguridad.
  3. Envía la cookie al navegador a través de las cabeceras de respuesta HTTP usando response.addCookie.

Cómo crear una cookie JSP

Se crea una nueva cookie JSP instanciando javax.servlet.http.Cookie con un nombre y un valor. A continuación, la cookie se adjunta al objeto de respuesta para que el navegador la almacene.

Cómo leer las cookies de JSP

En cada solicitud posterior, el navegador envía al servidor las cookies JSP correspondientes. La página las lee mediante la función request.getCookies, que devuelve un array de objetos Cookie. A continuación, la aplicación itera sobre el array, busca cada cookie por su nombre y utiliza su valor.

Cómo eliminar una cookie de JSP

Para eliminar una cookie JSP, el servidor crea una nueva cookie con el mismo nombre, le asigna un valor vacío, llama a setMaxAge con cero y la agrega a la respuesta. El navegador elimina la cookie almacenada en la siguiente respuesta.

Ejemplo de cookies en JSP

En este ejemplo de cookies JSP, la aplicación crea dos cookies para el nombre de usuario y el correo electrónico, las mantiene activas durante diez horas y luego lee los valores en una segunda página llamada action_cookie_main.jsp.

acción_cookie.jsp

<%-- Action_cookie.jsp: input form for JSP Cookies demo --%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Cookie</title>
</head>
<body>
<form action="action_cookie_main.jsp" method="GET">
Username: <input type="text" name="username">
<br />
Email: <input type="text" name="email" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Acción_cookie_main.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%

   Cookie username = new Cookie("username",
 			  request.getParameter("username"));
   Cookie email = new Cookie("email",
			  request.getParameter("email"));


   username.setMaxAge(60*60*10);
   email.setMaxAge(60*60*10);

   // Add both the JSP Cookies in the response header.
   response.addCookie( username );
   response.addCookie( email );
%>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Cookie JSP</title>
</head>
<body>

<b>Username:</b>
   <%= request.getParameter("username")%>
<b>Email:</b>
   <%= request.getParameter("email")%>

</body>
</html>

Explicación de la Code

acción_cookie.jsp

Code Líneas 10 a 15: La página declara un formulario que se envía a action_cookie_main.jsp. Dos campos de entrada, nombre de usuario y correo electrónico, recopilan datos del usuario junto con un botón de envío.

Acción_cookie_main.jsp

Code Líneas 6 a 9: Se crean dos objetos Cookie, username y email, utilizando request.getParameter para leer los valores enviados por el formulario.

Code Líneas 12 a 13: El método setMaxAge se llama con 60 multiplicado por 60 multiplicado por 10, lo que establece la duración de cada cookie JSP en diez horas.

Code Líneas 16 a 17: Las dos cookies se adjuntan a la respuesta mediante response.addCookie. El navegador las envía de vuelta en las solicitudes posteriores, y el servidor las lee utilizando request.getCookies o request.getParameter para la solicitud actual.

Resultado

Al ejecutar el código anterior, obtendrá la siguiente salida.

Métodos de cookies JSP

Métodos de cookies JSP

Cuando se ejecuta action_cookie.jsp, el navegador muestra los campos nombre de usuario y correo electrónico. Después de que el usuario los completa y hace clic en Enviar, action_cookie_main.jsp crea las cookies JSP correspondientes en el servidor, las almacena en el cliente y muestra los valores, confirmando que las cookies se crearon correctamente.

Mejores prácticas para cookies JSP

Las aplicaciones web modernas deben tratar las cookies JSP como datos sensibles a la seguridad. Las siguientes prácticas se ajustan a las implementaciones actuales de Servlet 4.x y Servlet 5.x.

  • Usar HttpOnly: Marca las cookies de autenticación como HttpOnly para que los scripts del lado del cliente no puedan leerlas.
  • Utilice la seguridad: Envíe las cookies solo a través de HTTPS llamando a setSecure(true).
  • Usar SameSite: Configure el atributo SameSite (Lax o Strict) a través del contenedor o de los encabezados de respuesta para mitigar la falsificación de solicitudes entre sitios.
  • Mantén los valores pequeños: Almacena un identificador en la cookie y guarda los datos en el almacenamiento del servidor.
  • Establecer fecha de caducidad explícita: Utilice setMaxAge para obtener un comportamiento predecible en todos los navegadores.

Preguntas Frecuentes

Las cookies JSP son pequeños archivos de texto que almacenan datos en el navegador del cliente. Las páginas JSP las utilizan para la sesión. tracKing, que recuerda las preferencias del usuario, admite el estado de inicio de sesión y potencia el análisis a través de múltiples solicitudes HTTP a la misma aplicación web.

Marca las cookies como HttpOnly para que los scripts no puedan leerlas, llama a setSecure(true) para que solo se transmitan a través de HTTPS y configura el atributo SameSite como Lax o Strict para reducir el riesgo de falsificación de solicitudes entre sitios en los navegadores modernos.

Crea una nueva cookie con el mismo nombre y ruta, establece su valor en una cadena vacía, llama a setMaxAge(0) y agrégala a la respuesta con response.addCookie. El navegador elimina inmediatamente la cookie almacenada correspondiente.

Una cookie JSP persistente tiene una antigüedad máxima positiva y se almacena en el disco hasta que expira dicho plazo. Una cookie de sesión tiene una antigüedad máxima negativa, reside únicamente en la memoria del navegador y se elimina al cerrar la ventana del navegador.

El análisis basado en IA permite evaluar el tráfico de cookies en tiempo real, detectar identificadores de sesión robados, identificar cambios de geolocalización inusuales y activar la autenticación reforzada. Los modelos de aprendizaje automático también ayudan a ajustar las políticas SameSite, HttpOnly y Secure en función de los patrones de ataque observados.

Sí. Los asistentes de IA pueden analizar el código JSP y Servlet heredado, reescribir las llamadas a javax.servlet.http.Cookie para jakarta.servlet.http.Cookie en Servlet 5.x, agregar las banderas SameSite y HttpOnly, y sugerir un almacenamiento más seguro de los identificadores de sesión sin alterar la lógica de la aplicación existente.

Resumir este post con: