HttpSession (JAVA) aprendizaje

1. Breve introducción a la sesión

 En el desarrollo WEB, el servidor puede crear un objeto de sesión (objeto de sesión) para el navegador de cada usuario. Nota: un navegador monopoliza un objeto de sesión (por defecto). Por lo tanto, cuando es necesario guardar los datos del usuario, el programa del servidor puede escribir los datos del usuario en la sesión exclusiva del navegador del usuario. Cuando el usuario usa el navegador para acceder a otros programas, los otros programas pueden recuperar los datos del usuario de la sesión del usuario. Servicio al usuario.

Aquí entendemos el concepto y el principio de la Sesión basada en Servlet Java. En Java, el objeto Sesión de HTTP está representado por javax.servlet.http.HttpSession.

2. La diferencia entre sesión y cookie

  • Cookie es escribir los datos del usuario en el navegador del usuario
  • La sesión es escribir datos del usuario en la sesión exclusiva del usuario
  • El servidor crea el objeto de sesión, los desarrolladores pueden llamar al método GetSession del objeto de solicitud para obtener el objeto de sesión

3. Principio de implementación de la sesión

  ¿Cómo implementa el servidor una sesión para servir al navegador de un usuario?

Durante la primera visita, el servidor crea una nueva sesión y envía el Id. De sesión al navegador del cliente en forma de cookie. Después de que el servidor cree una sesión, volverá a escribir la ID de sesión al cliente en forma de cookie. De esta manera, siempre que el navegador del cliente no esté cerrado, cuando vaya al servidor, tomará la ID de sesión. Si el navegador del cliente viene con el ID de sesión, usará la sesión correspondiente en la memoria para servirlo.

 4. Creación y destrucción del objeto Session.

4.1 Creación de objeto de sesión

//范例:创建session

 //使用request对象的getSession()获取session,如果session不存在则创建一个
 HttpSession session = request.getSession(); 
 //获取session的Id
 String sessionId = session.getId();  
 //判断session是不是新创建的
 if (session.isNew()) {  
     response.getWriter().print("session创建成功,session的id是:"+sessionId);  
 }else {  
     response.getWriter().print("服务器已经存在session,session的id是:"+sessionId); 
 }

4.2 Destrucción del objeto Session

1) Tiempo de espera de sesión: el tiempo de espera significa que el servidor no ha recibido la solicitud del cliente correspondiente a la sesión durante un cierto período de tiempo, y este tiempo excede el tiempo máximo establecido por el servidor para el tiempo de espera de sesión.
2) El programa llama a HttpSession.invalidate ()
3) El servidor se apaga o el servicio se detiene

¿Se eliminará la sesión porque el navegador está cerrado?
No, la sesión solo se cerrará mediante el método mencionado anteriormente.

Los siguientes son métodos 1,2:

El objeto de sesión no se usa de forma predeterminada durante 30 minutos, el servidor destruirá automáticamente la sesión, puede configurar manualmente el tiempo de caducidad de la sesión en el archivo web.xml,

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!-- 设置Session的有效时间:以分钟为单位-->
    <session-config>
        <session-timeout>15</session-timeout>
    </session-config>

</web-app>

Cuando la sesión debe deshabilitarse manualmente en el programa, puede llamar manualmente al método session.invalidate para destruir la sesión.

 HttpSession session = request.getSession();
 //手工调用session.invalidate方法,摧毁session
 session.invalidate();

5. ubicación de la sesión

En la memoria del servidor (el servidor colapsó y todas las sesiones desaparecieron). Sin embargo, la sesión se puede administrar de una manera especial (poner la sesión en el disco).

6. ¿De dónde viene la identificación de la sesión?

Cómo se usa sessionID: cuando el cliente solicita por primera vez un objeto de sesión, el servidor creará una sesión para el cliente (hora de creación de la sesión,  porque la sesión consumirá recursos de memoria, por lo que si no tiene intención de usar la sesión, debe Ciérrelo en JSP.  ) , Y calculará una ID de sesión a través de un algoritmo especial, utilizado para identificar el objeto de la sesión, cuando el navegador la próxima vez (la sesión sigue siendo válida) solicite otros recursos, el navegador secretamente sesionID Colocado en el encabezado de la solicitud, el servidor recibe el ID de sesión de solicitud después de recibir la solicitud, el servidor encuentra la sesión con el ID y la devuelve al solicitante == (Servlet) == (jsp se inserta en el método de objeto de sesión de solicitud cuando se compila en servlet: sesión HttpSession = Se utilizará HttpServletRequest.getSession (true)). Solo puede haber un objeto de sesión para una sesión, y para la sesión, solo no se reconoce la identificación.

7. Sesión otros asuntos

  • session es un contenedor que puede almacenar cualquier objeto durante la sesión.
  • La sesión se genera debido a la solicitud (objeto de solicitud) .Múltiples solicitudes en la misma sesión comparten un objeto de sesión, que se puede obtener directamente de la solicitud.
  • De hecho, la creación y el uso de la sesión siempre están en el servidor, y el navegador nunca obtiene el objeto de la sesión. Pero el navegador puede solicitar un Servlet (jsp también es un Servlet) para obtener información de la sesión. Lo que realmente obtiene el navegador del cliente es la ID de sesión, y esto es invisible para la persona que opera el navegador, y el usuario no necesita preocuparse sobre en qué sesión se encuentra.
     

 

Referencia: JavaWeb Learning-Session

Mecanismo de sesión explicado

30 artículos originales publicados · Me gusta1 · Visitas1158

Supongo que te gusta

Origin blog.csdn.net/chunchunlaila/article/details/104681065
Recomendado
Clasificación