我有一个 servlet LogMeOut.java,我在其中编写以下代码:
HttpSession session = request.getSession(false);
if (session != null){
//statements to delete my cookies //
session.invalidate();
}
我的问题是,当我第一次从 jsp 调用 LogMeOut 时,它给出了一个没有 session 的请求对象。所以我的 session.invalidate
不起作用。
但是,如果我返回到我的 jsp,然后调用相同的 LogMeOut,这次请求对象包含正确的 session 并且它可以工作。
知道为什么吗?或者我应该从哪里开始寻找?
最佳答案
如果您在没有现有 session 的请求上调用 getSession(false)
,则它将返回 null
。这是expected, documented behaviour .
如果您调用 getSession(true)
或仅调用 getSession()
,那么如果不存在 session ,则会创建一个 session 。
执行 JSP 通常也会自动创建一个 session ,因此下次执行代码时,就会出现一个 session 。
但是,如果您想要做的只是使现有 session 无效,那么您的代码对我来说看起来不错 - 不需要创建一个 session 来立即使其无效。
关于java - request.getSession 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4194006/