contenu
Détails d'utilisation de la session
Passivation et activation de session
Présentation de la séance
Technologie de suivi de session côté serveur : enregistrez les données sur le serveur
JavaEE fournit l'interface HttpSession pour réaliser la fonction de partage de données entre plusieurs requêtes d'une session
utiliser:
1. Obtenir l'objet Session
HttpSession session=request.getSession();
2. Fonction d'objet de session
void setAttribute(String name,Object o);//存储数据到session域中
Object getAttribute(String name);//根据key获取value值
void removeAttribute(String name);//根据key,删除键值对
Créer deux classes SessionServlet et 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 configure les adresses d'accès des deux classes
<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>
Première visite ① puis visite ② pour exécuter
Principe de séance
La session est implémentée sur la base de cookies
L'objet obtenu a un identifiant unique. Tomcat envoie l'identifiant de session sous forme de cookie au navigateur. Tomcat ajoutera la valeur d'en-tête de réponse set-cookie JSESSIONID= à la réponse et la stockera dans la mémoire du navigateur. Elle ira dans la mémoire pour savoir s'il y a un identifiant avant, s'il y en a, utilisez les données directement, sinon, créez-le
Détails d'utilisation de la session
Passivation et activation de session
Si le serveur redémarre, les données de la session existeront-elles toujours ?
Passivation : après l'arrêt normal du serveur, Tomcat écrira automatiquement les données de session dans le fichier du disque dur
Activation : après avoir démarré le serveur, chargez les données du fichier dans la session
Destruction de session :
① Par défaut, il sera automatiquement détruit après 30 minutes d'inactivité (les unités suivantes sont des minutes)
<session-config>
<session-timeout>30</session-timeout>
</session-config>
②Appelez la méthode invalidate() de l'objet Session
Une fois le navigateur fermé, la session est détruite, car la session est transmise via des cookies
sommaire
Cookie et Session sont utilisés pour compléter le partage de données entre plusieurs demandes au sein d'une session
la différence:
Emplacement de stockage : le cookie stocke les données sur le client et la session stocke les données sur le serveur
Sécurité : le cookie n'est pas sécurisé, la session est sécurisée
Taille des données : le cookie a une taille maximale de 3 Ko et la session n'a pas de limite de taille
Durée de stockage : les cookies peuvent être stockés pendant une longue période, la session est par défaut de 30 minutes
Performances du serveur : les cookies n'occupent pas les ressources du serveur, tandis que les sessions occupent les ressources du serveur