Avec le développement continu d'Internet, le développement d'applications réseau est devenu de plus en plus important. Dans ce processus, la gestion de l’état est extrêmement importante pour les applications. Qu'il s'agisse de la connexion de l'utilisateur, du panier, de l'historique de navigation ou d'autres statuts, ils doivent être gérés.
Sous l'architecture de séparation front-end et back-end, l'API RESTful est devenue la méthode de développement côté serveur principale. Dans les clients API, les cookies constituent la méthode de stockage d'état la plus courante. Cet article explique comment utiliser Java Servlet Cookie pour la gestion de l'état du client API.
Le cookie est un petit fichier texte qui peut être stocké sur le client (généralement un navigateur) pour le stockage lié à l'application informations sur l'état. Lorsqu'un utilisateur accède à une application Web, l'application peut envoyer un cookie au navigateur de l'utilisateur via un en-tête de réponse HTTP, et le navigateur enregistre le cookie localement. La prochaine fois que l'utilisateur visitera l'application, le navigateur enverra automatiquement le cookie qui lui est associé et l'application pourra lire les informations d'état du cookie.
Les cookies ont les caractéristiques suivantes :
Cookie cookie = new Cookie("cookie_name", "cookie_value");
Parmi eux, "cookie_name" est le nom du cookie, et "cookie_value" est la valeur du cookie.
Ajouter un cookie à l'en-tête de réponse HTTPresponse.addCookie(cookie);
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) { if (cookie.getName().equals("cookie_name")) { String cookieValue = cookie.getValue(); // Do something with cookieValue } }
Exemple d'implémentation d'une gestion de session
import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Optional; import java.util.UUID; public class SessionServlet extends javax.servlet.http.HttpServlet { private static final long serialVersionUID = -3436700273785948283L; private static final String SESSION_COOKIE_NAME = "session_id"; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.setCharacterEncoding("UTF-8"); OptionalsessionCookie = getSessionCookie(req); sessionCookie.ifPresent(cookie -> { resp.getWriter().write(String.format("Found session cookie with value %s ", cookie.getValue())); }); if (!sessionCookie.isPresent()) { String sessionId = generateSessionId(); Cookie newSessionCookie = new Cookie(SESSION_COOKIE_NAME, sessionId); resp.addCookie(newSessionCookie); resp.getWriter().write(String.format("No session cookie found, created session with id %s ", sessionId)); } } private String generateSessionId() { return UUID.randomUUID().toString(); } private Optional getSessionCookie(HttpServletRequest req) { Cookie[] cookies = req.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if (cookie.getName().equals(SESSION_COOKIE_NAME)) { return Optional.of(cookie); } } } return Optional.empty(); } }
Conclusion
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!