我正在使用的 Servlet 有一个变量 session
。
我试过 session.invalidate();
,这似乎已经破坏了 session ,但是当我像这样进行重定向时 response.sendRedirect("restanes.jsp");
,这行给我 HTTP Status 500
错误:
java.lang.IllegalStateException: getAttribute: Session already invalidated
这是预料之中的,因为我试图破坏 session 。
但是为什么页面无法重定向呢?在其他地方的同一页面上,我已成功重定向。
如何销毁 session 并成功重定向?
代码片段:
if(request.getParameter("logout") != null ){
session.invalidate();
response.sendRedirect("restanes.jsp");
}
更新:
我需要做的就是在 response.sendRedirect("restanes.jsp");
之后 return;
。衷心感谢 BalusC
。
最佳答案
您需要在发送重定向后从该方法返回。
if (request.getParameter("logout") != null) {
session.invalidate();
response.sendRedirect("restanes.jsp");
return; // <--- Here.
}
否则代码将继续运行并命中 block 中更下方的某些 session.getAttribute()
方法,从而导致此异常。至少,这是迄今为止描述的问题最有可能的原因,并且基于这是一个非常常见的初学者错误这一事实。另见例如this answer .
关于java - 如何有效销毁Java Servlet中的 'session'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963720/