我有两个JSP页面:Login.jsp
和Main.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()
。
有谁能解释一下这里发生了什么?
感谢。
答案 0 :(得分:1)
JSP默认创建会话。如果您不想要会话,请添加
<%@ page session="false" %>
答案 1 :(得分:-1)
不仅是jsp,服务器上的任何请求都将启动会话。所以正在发生的事情是你第一次没有得到任何会话,但下次你得到了在之前的请求中创建的会话。
你能做的是: a)设置会话的一些属性,而不是检查会话检查属性,只有在用户登录后才会设置该属性。 b)您可以尝试每次无效会话。即使在验证用户时,也要确保会话无效,然后生成会话,然后设置会话属性。