如何有效地销毁 Java Servlet 中的“会话”?

2022-09-02 08:56:53

我正在使用的Servlet有一个变量。session

我已经尝试过 ,这似乎已经破坏了会话,但是当我像这样重定向时,它会给我这个行的错误:session.invalidate();response.sendRedirect("restanes.jsp");HTTP Status 500

java.lang.IllegalStateException: getAttribute: Session already invalidated

这是预料之中的,因为我试图销毁会话。

但是为什么页面无法重定向?在其他地方的同一页面上,我已成功重定向。

如何销毁会话并成功重定向?

代码片段:

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

更新:我需要做的就是在.衷心感谢.return;response.sendRedirect("restanes.jsp");BalusC


答案 1

发送重定向后,您需要从该方法返回。

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

否则,代码将继续运行,并在块中进一步击中某个方法,从而导致此异常。至少,这是迄今为止所描述的问题的最可能原因,并且基于这样一个事实,即这是一个非常常见的启动器错误。另请参阅例如此答案session.getAttribute()


答案 2

您的代码没问题

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

但请确保重定向页面不包含任何会话属性。500 内部错误来自“restanes.jsp”页面。使用重定向的页面和会话活动进行处理。


推荐