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

Sun*_*aik 5 servlets

以下过滤器在我的prj2.从那里prj2我正在检查会话是否不在那里我想重定向到prj1具有url 的登录页面/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);
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激

Ala*_*ath 0

您是否在注销 servlet 或其他地方使会话无效?否则,会话将永远不会为空。

request.getSession().invalidate();
Run Code Online (Sandbox Code Playgroud)

使用它使会话无效,然后下次检查会话是否有效时,它将得到空值。