我使用以下代码将用户传递到欢迎页面(如果他们已经登录),或者如果他们不登录则返回登录页面。
HttpSession session = request.getSession(false);
if(session == null){
request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
}else{
//User already logged in. Send to home.
response.sendRedirect("Welcome");
}
第一次,它工作正常,但如果我重新加载页面,甚至一旦它将用户发送到欢迎页面,并不可避免地发回500错误,因为该页面上的元素由于用户登录而无法加载在代码中尚未执行。
即使在重新加载页面时未声明request.getSession(true),会话是否会自动启动?有办法防止这种情况吗?
答案 0 :(得分:2)
可能会在转发到login.jsp
时创建会话。这是必要的,因为必须将用户分配给未经身份验证的请求,然后 对其进行身份验证。如果您想根据用户是否登录重定向,请使用SessionContext
的{{1}}。
答案 1 :(得分:0)
如果没有当前会话,方法request.getSession(false)
将返回null 。我建议比较一个关键。
请看一下这个主题。