Concepts de base et méthodes d'utilisation de la session servlet

Table des matières

Présentation de la séance

Étapes d'utilisation de la session

Exemple de séance

LoginServlet

succès.jsp

échec.jsp


Présentation de la séance

La session est un mécanisme de développement Web permettant de suivre et de gérer les informations sur l'état de l'utilisateur côté serveur. Il permet à un serveur de stocker et de récupérer des données relatives à un utilisateur spécifique lors de la visite d'un utilisateur sur un site Web.

Lorsqu'un utilisateur accède au serveur, le serveur crée une session unique pour chaque utilisateur et attribue un identifiant de session unique (ID de session) à la session. Cet identifiant de session est généralement enregistré côté client via un cookie, mais il peut également être transmis via des paramètres d'URL ou d'autres méthodes. Grâce à l'identifiant de session, le serveur peut identifier la demande d'un utilisateur spécifique et stocker et récupérer des données dans la session.

En utilisant Session, le serveur peut maintenir l'état de l'utilisateur tout au long de la visite de l'utilisateur et peut partager des données entre différentes pages et requêtes. Ceci est utile pour mettre en œuvre l'authentification des utilisateurs, le partage de données, la gestion du panier d'achat, etc.

Il convient de noter que les données de session sont stockées dans la mémoire côté serveur ou dans un autre stockage persistant, ce qui affectera la consommation de ressources et les performances du serveur.

Étapes d'utilisation de la session

1. Obtenir l'objet Session : Dans le Servlet, vous pouvez utiliser la méthode getSession() de l' objet HttpServletRequest pour obtenir l'objet Session de la requête en cours. Si Session n'existe pas, cette méthode créera une nouvelle Session.

HttpSession session = request.getSession();

2. Stocker des données : vous pouvez utiliser la méthode setAttribute() de l'objet Session pour stocker des données dans la Session. Cette méthode accepte deux paramètres, le premier paramètre est le nom de la donnée (clé), et le deuxième paramètre est la donnée à stocker (valeur).

session.setAttribute("username", "John");

3. Obtenir des données : Vous pouvez utiliser la méthode getAttribute() de l'objet Session pour obtenir les données stockées dans la Session. La méthode prend un paramètre, le nom (clé) des données à récupérer, et renvoie la valeur correspondante.

String username = (String) session.getAttribute("username");

4. Supprimer des données : vous pouvez utiliser la méthode removeAttribute() de l'objet Session pour supprimer des données spécifiques de la Session.

session.removeAttribute("username");

5. Définissez l'heure d'expiration de la session : vous pouvez définir l'heure d'expiration de la session (en secondes) via la méthode setMaxInactiveInterval() . S'il n'y a pas d'accès à la session dans le délai spécifié, la session expirera et sera détruite.

session.setMaxInactiveInterval(1800); // 设置为30分钟

6. Détruisez la session : vous pouvez utiliser la méthode invalidate() de l'objet Session pour détruire manuellement la session et libérer toutes les ressources liées à la session.

session.invalidate();

Ce sont les méthodes de base d'utilisation de Servlet Session. En stockant et en récupérant les données de session, les informations utilisateur peuvent être transmises et partagées entre différentes requêtes HTTP. Veuillez noter que la session de servlet stocke les données côté serveur et que le client ne recevra qu'un ID de session, mais n'accédera pas directement aux données de session.

Exemple de séance

Montre comment stocker et récupérer le statut de connexion d'un utilisateur

LoginServlet

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*;

import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/login")

    public class LoginServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;

        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            String username = request.getParameter("username");
            String password = request.getParameter("password");

            // 检查用户名和密码是否有效(在此处添加验证逻辑)

            if (isValidUser(username, password)) {
                // 创建Cookie对象
                Cookie userCookie = new Cookie("username", username);
                // 设置Cookie的生命周期(这里设置为1小时)
                userCookie.setMaxAge(60);
                // 将Cookie添加到响应中
                response.addCookie(userCookie);
                Cookie[] cookies = request.getCookies();

                response.setContentType("text/html");
                PrintWriter out = response.getWriter();
                out.println("<html>");
                out.println("<body>");
                out.println("<h3>欢迎, " + username + "!</h3>");
                out.println("</body>");
                out.println("</html>");
            } else {
                response.setContentType("text/html");
                PrintWriter out = response.getWriter();
                out.println("<html>");
                out.println("<body>");
                out.println("<h3>登录失败,请检查用户名和密码。</h3>");
                out.println("</body>");
                out.println("</html>");
            }
            if ("A".equals(username) && "123".equals(password)) {
                HttpSession session = request.getSession();
                session.setAttribute("username", username);

                // 重定向到登录成功页面
                response.sendRedirect("success.jsp");
            } else {
                // 重定向到登录失败页面
                response.sendRedirect("failure.jsp");
            }
        }


        // 获取所有的Cookie
        private boolean isValidUser(String username, String password) {
            // 在此处进行用户名和密码的验证,可以连接数据库或使用硬编码的方式进行验证
            // 返回true表示验证通过,返回false表示验证失败
            // 这里只是一个示例,实际应用中应该使用更安全的验证方式
            return "A".equals(username) && "123".equals(password);
        }
    }

succès.jsp

<!DOCTYPE html>
<html>
  <head>
    <title>Login Success</title>
  </head>
  <body>
    <h1>Welcome, <%= session.getAttribute("username") %>!</h1>
    <p>登录成功页面</p>
  </body>
</html>

échec.jsp

<!DOCTYPE html>
<html>
<head>
    <title>Login Failure</title>
</head>
<body>
<h1>Login Failed</h1>
<p>登录失败页面</p>
</body>
</html>

Guess you like

Origin blog.csdn.net/m0_67906358/article/details/131123207