如何有效地摧毁';会议';在Javaservlet中?
我正在使用的Servlet有一个变量如何有效地摧毁';会议';在Javaservlet中?,java,session,servlets,destroy,Java,Session,Servlets,Destroy,我正在使用的Servlet有一个变量session 我尝试了session.invalidate(),这似乎破坏了会话,但当我执行像这样的重定向时,response.sendRedirect(“restanes.jsp”),它给我HTTP状态500错误,这行代码: java.lang.IllegalStateException: getAttribute: Session already invalidated 这是预期的,因为我试图破坏会话 但为什么页面无法重定向?在同一页的其他地方,我已成
session
我尝试了session.invalidate()
,这似乎破坏了会话,但当我执行像这样的重定向时,response.sendRedirect(“restanes.jsp”)代码>,它给我HTTP状态500
错误,这行代码:
java.lang.IllegalStateException: getAttribute: Session already invalidated
这是预期的,因为我试图破坏会话
但为什么页面无法重定向?在同一页的其他地方,我已成功重定向
如何成功销毁会话并重定向
代码段:
if(request.getParameter("logout") != null ){
session.invalidate();
response.sendRedirect("restanes.jsp");
}
更新:
我所需要做的就是返回
afterresponse.sendRedirect(“restanes.jsp”)代码>。衷心感谢BalusC
发送重定向后,您需要从方法返回
if (request.getParameter("logout") != null) {
session.invalidate();
response.sendRedirect("restanes.jsp");
return; // <--- Here.
}
if(request.getParameter(“logout”)!=null){
session.invalidate();
sendRedirect(“restanes.jsp”);
return;//您的代码正常
if(request.getParameter("logout") != null )
{
session.invalidate();
response.sendRedirect("restanes.jsp");
}
但请确保重定向页面不包含任何会话属性。500“restanes.jsp”页面出现内部错误。
处理重定向的页面和会话活动。500错误很可能是由重定向后的页面(restanes.jsp)产生的。您能从日志中获得更多信息吗?会话的存在/缺少不应影响重定向。@Thilo如果我删除session.invalidate();重定向位工作正常。当我放回那一行时,错误还指向我之前设置的会话变量。你确定你重定向到的页面不需要来自无效会话的信息吗?@MrGhimire-但是有一个会话。它只是无效。很可能这就是正在发生的-原因在任何情况下都更有意义。如果OP确认,那么我将投票并删除我的答案。@BalusC我是PHP的家伙,希望重定向能够完美地工作(无需返回)。我已经用return进行了测试;并且工作正常。衷心感谢。不客气。请注意,这同样适用于PHP。您需要在标题之后放置一个退出;
('Location:foo.php');
在if
块中,以防止运行剩余的代码(尽管这在php中可能不一定有害;webbrowser无论如何都会忽略不必要的检索HTML)。正如OP和BalusC指出的那样;his(不确定基于姓名的性别)代码不正常。它需要在BalusC的回答中给出的修复。