it-swarm.com.de

Wie kann man "Sitzung" in Java Servlet effektiv zerstören?

Das Servlet, an dem ich arbeite, hat eine Variable session.

Ich habe session.invalidate(); ausprobiert, diese Sitzung scheint zerstört worden zu sein, aber wenn ich eine Umleitung wie response.sendRedirect("restanes.jsp"); mache, gibt es einen HTTP Status 500-Fehler mit dieser Zeile:

Java.lang.IllegalStateException: getAttribute: Session already invalidated

Dies wird erwartet, da ich versucht habe, die Sitzung zu zerstören. 

Aber warum kann die Seite nicht weitergeleitet werden? Auf derselben Seite an anderer Stelle habe ich erfolgreich umgeleitet.

Wie kann ich eine Sitzung zerstören und erfolgreich umleiten? 

Code-Auszug:

if(request.getParameter("logout") != null ){  
        session.invalidate();
        response.sendRedirect("restanes.jsp");
}

Update: Alles was ich brauchte, war return; nach response.sendRedirect("restanes.jsp");. Herzlichen Dank an BalusC.

14
Sushan Ghimire

Sie müssen nach dem Senden der Weiterleitung von der Methode zurückkehren.

if (request.getParameter("logout") != null) {  
    session.invalidate();
    response.sendRedirect("restanes.jsp");
    return; // <--- Here.
}

Andernfalls läuft der Code weiter und schlägt einige session.getAttribute()-Methode weiter unten im Block, was genau diese Ausnahme verursacht. Zumindest ist dies die wahrscheinlichste Ursache des Problems, das bisher beschrieben wurde, und basiert auf der Tatsache, dass dies ein ziemlich häufiger Fehler des Starters ist. Siehe auch z.B. diese Antwort .

36
BalusC

Ihr Code ist in Ordnung

if(request.getParameter("logout") != null )
{  
  session.invalidate();
  response.sendRedirect("restanes.jsp");
}

stellen Sie jedoch sicher, dass die Umleitungsseite keine Sitzungsattribute enthält. 500 interner Fehler, der von der "restanes.jsp" -Seite stammt.

0
Pushpendra