2009-11-24 4 views
0

La session HttpSession = request.getSession (true); et HttpSession session = request.getSession(); crée une nouvelle session s'il n'y en a aucune.Problème de session

Mon problème est que je veux invalider() la session si elle est déjà présente et en créer une nouvelle.

I que possible .. je veux dire est là un moyen de sortir pour y parvenir .. ??

Répondre

6

Que pensez-vous de cela?

HttpSession session = request.getSession(false); // Will not create a new session. 
if(session!=null) 
{ 
    session.invalidate(); 
} 
session = request.getSession(true); 
4

tuer d'abord votre ancienne session

session.invalidate(); 

et après l'ouvrir à nouveau avec

HttpSession session = request.getSession(true); 

ne fonctionnent pas?

2

d'abord faire une session.invalidate(); et, si nécessaire, puis faire un response.sendRedirect("url"); à un url où en vous pouvez juste faire request.getSession(); pour obtenir une nouvelle session.

Notez que cette approche n'est pas garanti pour fonctionner dans un fichier JSP, simplement parce que la réponse est dans la plupart des cas déjà commis (de sorte que le récipient ne peut pas définir la nouvelle valeur du cookie jsessionid dans l'en-tête de réponse). Vous devez vraiment le faire dans une servlet ou un filtre. Cela dit, pourquoi voulez-vous invalider la session et obtenir immédiatement une nouvelle session dans la même requête? Cela ressemble à une solution de contournement pour un certain problème pour lequel il peut y avoir de meilleures solutions.