request.getSession有问题

时间:2010-11-16 12:14:49

标签: java servlets

我有一个servlet LogMeOut.java,我正在编写以下代码:

HttpSession session = request.getSession(false);
if (session != null){
   //statements to delete my cookies //
   session.invalidate();
}

我的问题是当我第一次从jsp调用LogMeOut时,它会给出一个没有会话的请求对象。所以我的session.invalidate无效。 但是如果我回到我的jsp然后调用相同的LogMeOut,这次请求对象包含正确的会话并且它可以工作。 知道为什么吗?或者我应该从哪里开始寻找?

1 个答案:

答案 0 :(得分:3)

如果您在没有现有会话的请求上致电getSession(false),则会返回null。这是expected, documented behaviour

如果您致电getSession(true)或仅getSession(),则会在不存在的情况下创建会话。

执行JSP通常也会自动创建会话,因此下次执行代码时,会出现会话。

但是,如果您只想使现有会话无效,那么您的代码对我来说很合适 - 无需创建会话就可以立即使其无效。