2012-02-07 41 views
0

我有两个JSP页面:Login.jspMain.jsp不想要的会话创建

对于url模式/我有一个servlet这做到这一点:

HttpSession session = request.getSession(false); 
if (session == null) { 
    response.sendRedirect("Login.jsp"); 
} else { 
    response.sendRedirect("Home.jsp"); 
} 

两个JSP页面都是空的,截至目前。

当我在浏览器中浏览localhost:8080/appname/时,它按照预期路由到Login.jsp。但是当我第二次尝试浏览它时,它会路由到Home.jsp

当我尝试调试时,session不为空,我可以在Chrome浏览器中找到JSESSIONID的cookie。

我不会在其他地方做getSession()

任何人都可以解释我在这里发生了什么?

谢谢。

回答

1

默认情况下,JSP会创建一个会话。如果你不想要一个会话,然后添加

<%@ page session="false" %> 
-1

不仅jsp,服务器上的任何请求将启动会话。所以发生了什么事是第一次你没有得到任何会话,但下一次你得到的是先前请求中创建的会话。

你可以做的是: 一)设置会话的一些属性,而不是检查,一旦用户登录,这将只设置该属性会话确认 b)您可以尝试每次无效会话。此外,请确保即使在对用户进行身份验证时也会使会话无效,然后生成会话并设置会话的属性。

+0

>>服务器上的任何请求将启动会话 – rickz 2012-02-07 04:06:50

+0

这是不正确的。 – rickz 2012-02-07 04:07:09

+0

除非您编写代码,否则Servlet不会创建会话。 – rickz 2012-02-07 04:08:26