Notas de estudio 2: objeto HttpSession

Objeto HttpSession

El objeto HttpSession es una instancia de javax.servlet.http.HttpSession. Esta interfaz no tiene una interfaz principal como HttpServletRequest o HttpServletResponse. Esta interfaz es simplemente una interfaz pura. Esto se debe a que la propia sesión pertenece al ámbito del protocolo HTTP.

Para el servidor, cada cliente conectado a él es una sesión , es decir, cada navegador conectado al servidor, el contenedor de servlets usa esta interfaz para crear una sesión entre el cliente HTTP y el servidor HTTP. La sesión permanecerá durante un período de tiempo específico, abarcando múltiples conexiones o solicitudes de página de los usuarios. Una sesión corresponde a un usuario y el usuario puede visitar un sitio varias veces. Puede ver y manipular información sobre una sesión a través de esta interfaz, como el identificador de sesión, la hora de creación y la hora del último acceso. En toda la sesión, lo más importante es el funcionamiento de los atributos.

Tanto el cliente como el servidor pueden percibir la sesión, si se vuelve a abrir un nuevo navegador no se puede obtener la sesión previamente configurada, ya que cada sesión solo se guarda en el navegador actual y se obtiene en la página correspondiente.

La función de la sesión es representar una sesión o confirmar a un usuario y compartir datos durante una sesión (múltiples solicitudes de un usuario). Podemos obtener el objeto de sesión de la sesión actual a través del método request.getSession ().

Obtención del objeto Session

La sesión se obtiene a través del objeto request.
Cuando se obtenga el objeto Session, primero determinará si la Session existe. Si existe, obtendrá el objeto Session. Si no existe, creará el objeto Session.

		//获取session对象
        HttpSession session = req.getSession();

Métodos comunes:

		//获取session的唯一会话标识符
        String id = session.getId();

        //获取session的创建时间
        System.out.println(session.getCreationTime());

        //获取session最后一次访问时间
        System.out.println(session.getLastAccessedTime());

        //判断是否是新的session对象
        System.out.println(session.isNew());

Identificador JSESSIONID

Una sesión tiene un identificador único. Este símbolo es sessionId.
Siempre que llega una solicitud al servidor, si se abre una sesión (se accede a la sesión), el servidor primero verificará si el cliente devuelve una cookie llamada JSESSIONID. De lo contrario, se considerará como una nueva sesión, se creará un nuevo objeto Sesión y se utilizará una ID única para marcar la sesión.

Si hay un retorno de JESSIONID, el servidor verificará si hay un objeto de sesión cuyo id es el valor de JSESSION según JESSIONID. De lo contrario, se considerará como una nueva sesión, se creará un nuevo objeto de sesión y la sesión será identificada (esto Por ejemplo, si el servidor se reinicia, no hay tales objetos en el servidor y el objeto de sesión correspondiente no se puede encontrar cuando se pasa el ID.
Si lo hay, se devuelve el objeto de sesión y el los datos se comparten.

JSESSIONID titulado es una cookie bastante especial, cuando el usuario solicita al servidor, si accede a la sesión, el servidor crea un JSESSIONID con nombre , la sesión se adquiere (ya sea adquirida o recién creada) el sessionid El objeto cookie se agrega al objeto de respuesta , y la respuesta se envía al cliente. El tiempo efectivo es cerrar el navegador.
Entonces, la capa inferior de la sesión depende de la implementación de las cookies.

Dominio de la sesión

El objeto de sesión se almacena en la memoria del servidor, por lo que se puede utilizar para compartir datos entre varias solicitudes, mientras que el objeto de dominio de solicitud solo puede tener efecto en una solicitud, que tiene un alcance mayor que la sesión del objeto de dominio de solicitud.

Destrucción del objeto Session

Cuando el cliente solicita el servlet por primera vez y opera la sesión, se crea y genera el objeto Sesión. El tiempo de supervivencia predeterminado de la Sesión en Tomcat es de 30 minutos. Si la sesión no se opera durante este período, será automáticamente Si hay una operación, la sesión se cronometrará nuevamente.

La hora válida predeterminada de la sesión se puede modificar en el archivo web.xml en el directorio conf en Tomcat.

<!--  session默认的最大不活动时间。单位:分钟-->
  <session-config>
    <session-timeout>30</session-timeout>
  </session-config>

Además de los métodos de modificación anteriores, también podemos establecer el ciclo de vida de la sesión en el programa, a través de session.setMaxInactiveInterval (int) para establecer el tiempo máximo de caducidad de inactividad de la sesión, en segundos.

		//获取session对象
        HttpSession session = req.getSession();
        //设置session最大不活动时间,单位为秒
        session.setMaxInactiveInterval(15);//15秒

El tercer tipo: la destrucción inmediata (la más
utilizada ) se puede usar para cosas como cerrar sesión e iniciar sesión

        //立即销毁 可以通过 session.invalidate() 方法让 session 立即失效
        session.invalidate();

Cuarto: cierre el navegador

Porque la capa inferior de la sesión se basa en la implementación de cookies, y el momento efectivo de la cookie es cerrar el navegador. Entonces, la sesión es equivalente a inválida cuando el navegador está cerrado.

Quinto: apague el servidor

Cuando se cierra el servidor, la sesión se destruye.
La falla de la sesión significa el final de la sesión y el final del intercambio de datos.

Supongo que te gusta

Origin blog.csdn.net/qq_40492885/article/details/115239090
Recomendado
Clasificación