2010-11-16 68 views
0

我有一个servlet LogMeOut.java我在哪里写了下面的代码:问题与request.getSession

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

当我致电LogMeOut首次从JSP我的问题是,它提供了请求没有会话的对象。所以我的session.invalidate不起作用。 但是,如果我回到我的jsp,然后调用相同的LogMeOut,这次请求对象包含正确的会话,它的工作原理。 任何想法为什么?或者我应该从哪里开始寻找?

回答

3

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

如果您致电getSession(true)或只是getSession(),则会创建一个会话(如果不存在)。

执行一个JSP通常还将自动创建一个会话,因此执行代码接下来的时间,会话将出席会议。

但是,如果你想要做的是无效的现有会话,那么你的代码看起来没什么问题 - 没必要创建一个会话刚要立即废止它。

+0

是的,但我想在第一次调用servlet时使会话无效,但似乎没有发生。它只发生在我第二次调用我的servlet时。我如何确保在第一次调用中使用非空会话得到正确的请求? – rishi 2010-11-16 12:50:54