如何在Java Servlet中有效地破坏'session'? [英] How to effectively destroy 'session' in Java Servlet?

查看:156
本文介绍了如何在Java Servlet中有效地破坏'session'?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

The Servlet I'm working has a variable session.

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

I've tried session.invalidate();, this seem to have destroyed session but when I do a redirect like so response.sendRedirect("restanes.jsp");, it gives me HTTP Status 500 error with this line:

java.lang.IllegalStateException: getAttribute: Session already invalidated

这是因为我在尝试摧毁会议。

This is expected since I was trying to destroy the session.

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

But why is the page unable to redirect? On the same page elsewhere I've redirected successfully.

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

How can I destroy session and redirect successfully?

代码段:

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

更新:
我需要做的只是 return; response.sendRedirect(restanes.jsp); 之后。真诚地感谢 BalusC

Update: All I needed to do was return; after response.sendRedirect("restanes.jsp");. Sincere thanks to BalusC.

推荐答案

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

You need to return from the method after sending the redirect.

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

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

Otherwise the code will continue to run and hit some session.getAttribute() method further down in the block causing exactly this exception. At least, that's the most likely cause of the problem described so far and based on the fact that this is a pretty common starter's mistake. See also e.g. this answer.

这篇关于如何在Java Servlet中有效地破坏'session'?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆