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