我有一个javax.servlet.Filter,如果HttpSession是新的,我想重定向到登录页面,如果HttpSession过期则重定向到注销页面,如果存在HttpSession,则重定向到其他页面。
The login and logout pages are external pages. My sample method is given below
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
if (request.getSession(false) == null) {
response.sendRedirect("login page");
} else if (request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
response.sendRedirect("logout page");
} else {
chain.doFilter(request, response);
}
}
问题是会话过期后,注销页面不会呈现。如何让这个工作?
答案 0 :(得分:0)
如果会话已过期,getSession(false)
将返回null,因此您将重定向到登录页面。你的第二个if
应该在第一个之前。
答案 1 :(得分:0)
或者你可以试试
getSession().isNew()