El principio de cookie y sesión y su aplicación en Servlet


inserte la descripción de la imagen aquí

Introducción

La cookie se guarda en el lado del cliente y la sesión se guarda en el lado del servidor. Ambos se utilizan para describir el estado de una sesión. El servidor puede crear varios objetos de cookies para responder al cliente y guardarlos en el cliente; cuando el cliente del navegador envía una solicitud, lleva automáticamente toda la información de la cookie en la ruta de solicitud correspondiente para que el servidor responda. El servidor también puede obtener un objeto de sesión único correspondiente a cada cliente y obtener algunos atributos en el objeto para verificar la operación ilegal del usuario. Aquí hay solo una introducción general al estado de los dos.


Galleta

La esencia y el principio de implementación de las cookies.

  • La cookie es en realidad un mecanismo de almacenamiento relativamente persistente del navegador, que optimiza los defectos causados ​​por la naturaleza sin estado del protocolo de comunicación Http y mejora en gran medida la experiencia del usuario.

Por ejemplo, un determinado sdn y un determinado video pueden optar por guardar la información de inicio de sesión del usuario cuando el usuario inicia sesión por primera vez, y el usuario puede darse cuenta directamente del efecto del inicio de sesión automático al ingresar a la página web dentro de un cierto período de tiempo. Optimizado en gran medida la experiencia del usuario. Esto se debe a que la información de la cookie correspondiente a nuestra cuenta se almacena en el disco duro local. Cuando manipulamos al cliente para enviar una solicitud al servidor correspondiente, la información de la cookie guardada se enviará automáticamente. El servidor recibe y verifica esta información para que Podemos realizar el efecto de objetivamente "sin inicio de sesión".

  • Las cookies proporcionan una forma eficaz para que nuestros navegadores accedan a los archivos del disco duro.

Para la seguridad de la computadora, el navegador prohíbe que el código js acceda a los datos en el disco local. El mecanismo de las cookies proporciona un medio para que el navegador acceda a los archivos del disco duro, por lo que existe un almacenamiento persistente.

  • El servidor puede crear múltiples cookies, y luego responder al cliente y almacenarlas en la memoria en ejecución del cliente o en el espacio del disco duro de acuerdo con los requisitos. Cuando el usuario envía una solicitud al servidor, el cliente enviará automáticamente la información de la solicitud con la cookie El lado del servidor reconoce y analiza la información de la cookie para la operación de respuesta.

Por ejemplo, cuando el cliente inicia sesión correctamente por primera vez, el servidor crea dos cookies de información que contienen el nombre de usuario y la contraseña de usuario respectivamente, y almacena la respuesta en la memoria o en el espacio del disco duro del cliente. Si se almacena en la memoria, se puede lograr el efecto de que el cliente pueda iniciar sesión automáticamente en el sitio web varias veces durante una sesión; la misma sesión puede lograr el efecto de inicio de sesión automático. Experiencia de usuario muy optimizada. Si un sitio web normal solicita al usuario que inicie sesión cada vez que se abre, ¡qué cliente enloquecido es! El esquema funcional de la cookie es el siguiente, tomando como ejemplo el login-free del usuario:
Cookies dentro de una determinada implementación para lograr representaciones de inicio de sesión gratuitas

  • El mecanismo de cookies no es un mecanismo único en Java, sino una parte del protocolo http, pero hay una clase de cookie correspondiente en Jaba; cada cookie se compone de nombre = valor, y los tipos de ambos son cadenas

Mientras esté haciendo desarrollo web, sin importar qué lenguaje de programación sea, el mecanismo de cookies es esencial. Ya sea un cliente o un servidor, el formato de la cookie que se envía tiene la forma de un par clave-valor, y el nombre o valor que obtiene el servidor tiene la forma de una cadena.


Aplicación de cookie en Servlet

  • Crear un objeto de cookie en el lado del servidor
Cookie cookie = new Cookie(String name,String value);  //Cookie类只提供了这一种形式的构造方法
  • El lado del servidor establece el ciclo de vida y la ruta asociada del objeto de la cookie.
cookie.setMaxAge(int second);	//设置cookie的生命周期的参数是以秒为单位的。
								//例如,设置一个cookie的生命周期为10天,可以设置参数为60*60*24*10
cookie.setPath(String url);		/*当服务器端将cookie对象相应保存到客户端时,当客户端发送在这里设置的请求
								在这里设置的请求路径时,会自动将与该路径相关的所有cookie信息包含在请求体中发送给服务器

Sobre el ciclo de vida del objeto de cookie establecido en el lado del servidor

  • cookie.setMaxAge(segundo > 0): el objeto de la cookie sobrevive por segundos y el cliente almacena el objeto de la cookie en el disco local después de recibirlo
  • cookie.setMaxAge(segundo = 0): eliminar este objeto de cookie
  • cookie.setMaxAge (segundo < 0): almacene este objeto de cookie en la memoria del navegador, lo que surte efecto en una sesión, y la cookie dejará de ser válida cuando se cierre la ventana del navegador
  • El servidor responde al objeto de la cookie después de configurar el ciclo de vida y la ruta al cliente, y almacena el objeto de la cookie en la memoria del cliente o en el espacio del disco duro.
response.addCookie(Cookie var);
  • El lado del servidor recibe la información de la cookie enviada por el cliente
Cookie cookies[] = request.getCookies();	//返回客户端发送的该路径下的所有cookie信息

Acerca de la obtención por parte del servidor de la información de cookies enviada por el cliente
      El servidor obtiene toda la información de cookies correspondiente en la ruta de solicitud enviada por el cliente a través de getCookies() del objeto de solicitud y devuelve una matriz de cookies. Si no se obtiene información de cookies del cliente, se devolverá nulo y no se creará ni devolverá una matriz de cookies con una longitud de 0


sesión

La esencia y el principio de realización de la sesión.

  • El objeto de sesión se almacena en el lado del servidor, que es esencialmente un mecanismo para que el lado del servidor comparta datos.

Una sesión corresponde a un objeto de sesión. Múltiples sesiones corresponden a múltiples objetos de sesión. Puede agregar atributos a este objeto de sesión en el lado del servidor, y todas las solicitudes en esta sesión compartirán este objeto de sesión

  • En el contenedor web, la sesión se almacena en un formato similar a una colección de mapas. Múltiples clientes envían solicitudes correspondientes a diferentes objetos de sesión. De manera similar al valor clave de la colección de mapas, se almacena el ID de sesión del objeto de sesión. Este ID de sesión Responderá al cliente en forma de cookie para el almacenamiento; el valor similar a la colección de mapas almacena el objeto de sesión específico correspondiente al valor clave. El principio de implementación de seesion en el contenedor web es el siguiente:inserte la descripción de la imagen aquí
  • Cuando el usuario envía una solicitud por primera vez, el servidor creará un nuevo objeto de sesión y puede agregar atributos al objeto de sesión y, al mismo tiempo, asociar un ID de sesión único con el objeto de sesión y devolverlo al cliente en el forma de una cookie para el almacenamiento; cuando el usuario envía una solicitud que no es la primera vez, el cuerpo de la solicitud, incluido el ID de sesión, se enviará automáticamente al servidor, y el servidor puede encontrar el objeto de sesión correspondiente de acuerdo con el ID de sesión en la información de la cookie responder. Como se muestra en la siguiente figura:
    inserte la descripción de la imagen aquí
    No sé si ha notado que cuando deja una página web sin ninguna operación durante mucho tiempo y realiza operaciones en la página web nuevamente, la página web puede solicitarle que inicie sesión nuevamente. El mecanismo de protección de la aplicación web se implementa mediante el objeto de sesión. El objeto de sesión puede tener una duración válida. Cuando no se accede al objeto de sesión dentro del período válido, se destruirá automáticamente, por lo tanto, cuando el usuario solicite nuevamente, el servidor no puede encontrar el objeto de sesión correspondiente al ID de sesión enviado por el usuario solicitante, es por eso que el servidor pensará que está accediendo a esta sesión ilegalmente. Para webapp, por su propia seguridad, el servidor permitirá que el usuario inicie sesión nuevamente para verificar si la identidad del usuario es legal.
    Para una aplicación web, una sesión se refiere a cuando el usuario abre el navegador y envía la primera solicitud hasta que el usuario cierra el navegador. Cuando el usuario cierra el navegador, la sesión deja de ser válida. Sin embargo, el servidor web se desconecta del cliente después del final de la respuesta y no sabe que el usuario ha cerrado el navegador, por lo que el objeto de sesión correspondiente a la sesión actual del usuario aún puede existir. Es por eso que el cliente de la aplicación de banca en línea mostrará un botón de salida segura. Al hacer clic en este botón, el usuario puede decirle al servidor que me voy y dejar que el servidor destruya manualmente el objeto de sesión correspondiente a esta sesión en el contenedor web. para garantizar la seguridad del usuario y del servidor.

Aplicación de sesión en Servlet

  • Crear/obtener objeto de sesión en el lado del servidor
HttpSession session = request.getSession();

Acerca de la creación/adquisición de objetos de sesión del lado del servidor
   El lado del servidor crea/adquiere objetos de sesión a través del objeto getSession del objeto HttpServletRequest. Cuando el usuario envía una solicitud en la sesión por primera vez, no hay ningún objeto de sesión en el lado del servidor para la sesión correspondiente al usuario, y el método getSession() creará un objeto de sesión para el usuario. Cuando el usuario envía una solicitud que no es la primera vez, el método getSession devolverá el objeto de sesión correspondiente al usuario.inserte la descripción de la imagen aquí

  • El lado del servidor manipula las propiedades del objeto de sesión.
session.setAttribute(String name,Object o);	//向该会话的session对象中添加属性
Object o = session.getAttribute(String var);//获取该会话中session中的属性
session.removeAttribute(String var);	    //移除该会话对应session对象中的var属性及其value
  • El lado del servidor destruye el objeto de la sesión.
session.invalidate();

HttpServletRequest,Sesión,ServletContext

Los tres se pueden usar como una herramienta para compartir dominios de datos, entonces, ¿cuál es la diferencia?

  • El primero es HttpServletRequest, también conocido como dominio de solicitud, para compartir datos a nivel de solicitud.

El ciclo de vida del objeto de solicitud es muy corto. Cuando finaliza una solicitud, el objeto de solicitud se destruirá y los datos en el campo de solicitud ya no existirán. Este método de intercambio de campos de datos se usa a menudo entre diferentes reenvíos de solicitudes.

  • El segundo es Sesión, también conocido como dominio de sesión, que es de nivel de usuario.

Una sesión de un usuario corresponde a un objeto de sesión, y los datos agregados en este objeto de sesión se pueden compartir sin importar qué solicitud se realice en esta sesión. Diferentes sesiones de usuario corresponden a diferentes sesiones, y cada objeto de sesión está asociado con un cliente individual

  • Finalmente, ServletContext, también conocido como dominio de aplicación, es a nivel de proyecto

El campo de datos compartidos agregado al objeto ServletContext es el proyecto completo y la relación de tamaño entre los tres campos compartidos por todos los clientes

  • HttpServletRequest < Sesión < ServletContext

El principio de usar los tres

  • Utilice un dominio lo más pequeño posible

Supongo que te gusta

Origin blog.csdn.net/weixin_64450588/article/details/129805784
Recomendado
Clasificación