java - 如何有效销毁Java Servlet中的 'session'?

标签 java session servlets destroy

我正在使用的 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/

相关文章:

java - 对我来说,进行这些空检查并提高此代码的性能的更好方法是什么

java - Java 中 C 的 *char 的等价物是什么

php - 在数据库表中存储 session 不起作用(使用 Zend_Session_SaveHandler_DbTable)

java - 如何检查 session 是否存在?

java - 无法使用 ip 地址而不是 localhost 访问 Web 应用程序

java - Java 中的 Servlet/过滤器特定异常处理

java - 位置管理器的 AddGpsStatusListener 在 Android 10 中不起作用

部分名称/内容文本需要 Java 文本解析帮助

php - 从一个页面获取 PHP 变量到另一个

java - netbeans 中最简单的 servlet 和 web.xml