response.sendRedirect在Servlet过滤器中不起作用

时间:2015-05-05 13:12:49

标签: servlets

以下过滤器位于我的prj2中。从那个prj2开始,我正在检查会话是否在那里,我想重定向到prj1的登录页面,其中包含网址/prj1/sessionexpiry。在以下场景中,它不会重定向到登录页面而不会抛出任何异常。

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)    
throws IOException, ServletException {
    HttpServletResponse hsr = (HttpServletResponse) res;
    HttpServletRequest hreq = (HttpServletRequest) req;
    HttpSession session = hreq.getSession(false);

    if (session == null) {
        hsr.sendRedirect("/prj1/sessionexpiry");
        return;
    } else {
        chain.doFilter(req, res);
    }
}

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您是否在注销servlet或其他位置使会话无效?否则,会话永远不会为null。

request.getSession().invalidate();

使用此选项使会话无效,然后在下次检查会话是否有效时,它将获得空值。