contenido
Pasivación y activación de sesiones
Introducción a la sesión
Tecnología de seguimiento de sesiones del lado del servidor: guardar datos en el servidor
JavaEE proporciona la interfaz HttpSession para realizar la función de intercambio de datos entre múltiples solicitudes de una sesión
utilizar:
1. Obtener el objeto Sesión
HttpSession session=request.getSession();
2. Función de objeto de sesión
void setAttribute(String name,Object o);//存储数据到session域中
Object getAttribute(String name);//根据key获取value值
void removeAttribute(String name);//根据key,删除键值对
Crear dos clases SessionServlet y SessionServlet1
package com;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class SessionServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//存储到session中
//1、获取session对象
HttpSession session=req.getSession();
//存储数据
session.setAttribute("username","root");
}
}
public class SessionServlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取数据。从session中
//1获取session对象
HttpSession session=req.getSession();
//获取数据
Object username=session.getAttribute("username");
System.out.println("获取到的session值为"+username);
}
web.xml configura las direcciones de acceso de las dos clases
<servlet>
<servlet-name>SessionServlet1</servlet-name>
<servlet-class>com.SessionServlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SessionServlet1</servlet-name>
<url-pattern>/sessionServlet1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SessionServlet</servlet-name>
<servlet-class>com.SessionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SessionServlet</servlet-name>
<url-pattern>/sessionServlet</url-pattern>
</servlet-mapping>
Primero visite ① y luego visite ② para ejecutar
Principio de sesión
La sesión se implementa en base a cookies.
El objeto obtenido tiene una identificación de identificación única. Tomcat envía la identificación de la sesión como una cookie al navegador. Tomcat agregará el encabezado de respuesta set-cookie JSESSIONID= valor a la respuesta y lo almacenará en la memoria del navegador. Irá a la memoria. para encontrar si hay una identificación antes, si la hay, use los datos directamente, si no, créela
Detalles de uso de la sesión
Pasivación y activación de sesiones
Si el servidor se reinicia, ¿seguirán existiendo los datos de la sesión?
Pasivación: después de que el servidor se apague normalmente, Tomcat escribirá automáticamente los datos de la sesión en el archivo del disco duro
Activación: después de iniciar el servidor, cargue los datos del archivo en la sesión
Destrucción de sesión:
① De forma predeterminada, se destruirá automáticamente después de 30 minutos de inactividad (las siguientes unidades son minutos)
<session-config>
<session-timeout>30</session-timeout>
</session-config>
②Llamar al método invalidate() del objeto Session
Una vez que se cierra el navegador, la sesión se destruye, porque la sesión se transmite a través de cookies
resumen
Tanto la cookie como la sesión se utilizan para completar el intercambio de datos entre múltiples solicitudes dentro de una sesión.
la diferencia:
Ubicación de almacenamiento: la cookie almacena datos en el cliente y la sesión almacena datos en el servidor
Seguridad: la cookie no es segura, la sesión es segura
Tamaño de los datos: la cookie tiene un tamaño máximo de 3 KB y la sesión no tiene límite de tamaño
Tiempo de almacenamiento: las cookies se pueden almacenar durante mucho tiempo, la sesión tiene un valor predeterminado de 30 minutos
Rendimiento del servidor: las cookies no ocupan recursos del servidor, mientras que las sesiones ocupan recursos del servidor