Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets response.sendRedirect在Servlet筛选器中不工作_Servlets - Fatal编程技术网

Servlets response.sendRedirect在Servlet筛选器中不工作

Servlets response.sendRedirect在Servlet筛选器中不工作,servlets,Servlets,以下过滤器位于myprj2中。从该prj2中,我检查会话是否不在那里,我想重定向到prj1的登录页面,该页面的url/prj1/sessionexpiry。在下面的场景中,它不会重定向到登录页面,也不会引发任何异常 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRes

以下过滤器位于my
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);
    }
}

任何帮助都将不胜感激

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

request.getSession().invalidate();

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

删除
返回
语句删除返回语句后,它也不工作发生了什么?如果出现任何异常或错误,请发布。否,它不会引发任何异常。这根本不是重定向,请注意:sessionexpiry位于不同的应用程序中。您在web服务器的日志中看到了什么吗?