J'ai ouvert la session dans ma servlet lorsque l'utilisateur a effectué une connexion réussie:
HttpSession session = request.getSession(true);
session.setAttribute("name", name);
puis j'ai écrit dans logout.jsp pour terminer la session:
<%session.invalidate();%>
Pour vérifier si une session est valide, je fais ceci:
HttpSession session = request.getSession();
String name = (String) session.getAttribute("name");
Mais cela ne fonctionne pas, j'obtiens la session valide même après la session.invalidate. Est-ce que quelqu'un comprend où je fais mal?
vous devez appeler session.getSession (false) - qui renvoie null s'il n'y a pas de session en cours.
selon docs
HttpSession#getSession(boolean create)
- create - true pour créer une nouvelle session pour cette requête si nécessaire; false pour retourner null s'il n'y a pas de session en cours.
Ainsi, la manière correcte de vérifier la valeur de la session serait -
HttpSession session = request.getSession(false);
if(session!=null)
session.setAttribute("name", name);
et une fois que vous invalidez la session -
HttpSession session = request.getSession(false);
if(session!=null)
session.invalidate();