Red de conocimiento informático - Consumibles informáticos - Pregunta: ¿Cuáles son las formas de destruir la sesión?

Pregunta: ¿Cuáles son las formas de destruir la sesión?

La sesión, como tecnología de fondo de la que no podemos prescindir, parece resolver principalmente las características sin estado del protocolo Http y se utiliza para resolver el problema de almacenamiento del estado del usuario, que a menudo está involucrado en el almacenamiento. Es cuestión de tiempo. Echemos un vistazo a sus métodos de destrucción.

Caducidad del tiempo predeterminado

Establece el tiempo de caducidad tú mismo

Caduca inmediatamente

Cerrar el navegador

Apagar el servidor

Cuando el cliente solicita el servlet por primera vez y opera la sesión

, se genera el objeto de sesión. Tomando Tomcat como ejemplo, el tiempo de supervivencia predeterminado de la sesión en Tomcat. es

30min, es decir, el tiempo en el que no opera la interfaz. Una vez que hay una operación, la sesión se restablecerá. Entonces, ¿se puede cambiar la hora predeterminada de la sesión? La respuesta es sí. Esto se puede modificar en el archivo web.xml en

Tomcat. Como se muestra a continuación:

Por supuesto, además de los métodos de modificación anteriores, también podemos configurar el ciclo de vida de la sesión en el programa usando session.setMaxInactiveInterval(int); sesión. La unidad es segundos.

HttpSession session=req.getSession(); session.setMaxInactiveInterval(5);

Por supuesto, también podemos ver el tiempo máximo de inactividad del objeto Session actual a través de getMaxInactiveInterval( ); método .

O también podemos usar el método session.invalidate(); para invalidar la sesión inmediatamente.

session.invalidate();

La capa inferior de la sesión se basa en la implementación de cookies

, porque diferentes usuarios necesitan determinar qué sesión se utiliza al acceder a servidor, por lo que cuando el usuario accede al servidor por primera vez, a menudo se almacena una identificación de sesión en el lado del usuario a través de una cookie

, y la cookie es válida hasta que se cierra el navegador, por lo que la sesión es equivalente a no válido cuando el navegador está cerrado (porque no hay ningún ID de sesión correspondiente). Como se muestra en la imagen siguiente, después de cerrar y volver a abrir, se asigna nuevamente una identificación de sesión al navegador.

Cabe señalar que solo la cookie ha caducado. Cuando vuelves a visitarla, equivale a que el servidor te trate como un nuevo usuario y cree una sesión para ti, sin destruir el objeto de sesión anterior.

Cuando el servidor se apaga de manera anormal, la sesión se destruye; cuando el servidor se apaga normalmente, la sesión se serializará en el disco en el archivo SESSION.ser en el directorio de trabajo del espacio de trabajo. Si el objeto se guarda en la sesión, el servidor debe serializar el objeto en el disco duro cuando se apaga. Este objeto debe implementar la interfaz serializable y cargarse automáticamente en la memoria la próxima vez que se inicie el servicio. Como se muestra en la imagen a continuación, después del apagado normal, puede ver que hay un archivo SESSIONS.ser adicional en la carpeta. Cuando se inicia nuevamente el servidor, el archivo desaparece.

Además de ver el nombre y el contenido de la cookie en la imagen, también debemos preocuparnos por un dato: el tiempo de vencimiento. El tiempo de vencimiento se utiliza para especificar cuándo caducará la cookie.

De forma predeterminada, caducará cuando se cierre el navegador actual. Podemos configurar manualmente el tiempo de validez de la cookie (calculado a través del tiempo de vencimiento) y establecer el tiempo de validez máximo de la cookie en segundos mediante el método setMaxAge (int expiry);

Un número entero mayor que 0, que indica el número de segundos de almacenamiento; si es un número negativo, significa que la cookie no se almacena; si es 0, la cookie se elimina;

Entero negativo: el valor predeterminado del atributo maxAge de la cookie es -1, lo que significa que solo sobrevive en la memoria del navegador. Una vez que se cierra la ventana del navegador, la cookie desaparecerá.

Entero positivo: indica que el objeto cookie puede vivir durante el número de segundos especificado. Cuando la vida es mayor que 0, el navegador guardará la cookie en el disco duro. Incluso si se cierra el navegador o se reinicia la computadora cliente, la cookie sobrevivirá durante el período de tiempo correspondiente.

Cero: la vida útil de la cookie igual a 0 es un valor especial, lo que significa que la cookie está invalidada. En otras palabras, si el navegador original ha guardado la cookie, puede eliminarla a través de setMaxAge(0) de la cookie. Esta cookie será eliminada tanto de la memoria del navegador como del disco duro del cliente.