【Java】Filter过滤器中,在chain.doFilter(request,response)后若有重定向或转发语句

来源:互联网 发布:java程序调试的步骤 编辑:程序博客网 时间:2024/06/06 17:54

在chain.doFilter(request,response)后若有重定向或转发语句,执行顺序是:
1.所要访问的资源不是转发的目标资源
chain.doFilter(request,response)–>下一个过滤器(如果有)–>执行完整个 过滤器链–>执行重定向或转发语句–>最后再访问你所要访问的资源
2..所要访问的资源是转发的目标资源
chain.doFilter(request,response)–>下一个过滤器(如果有)–>执行完整个 过滤器链–>最后再访问你所要访问的资源

而在1的情况里,重定向语句会与访问的资源产生冲突而抛出异常

代码片段

            //获取session域对象            HttpSession session = request.getSession(false);            if(session!=null) {                //若session对象不为空                if(session.getAttribute("userInfo")!=null) {                    //若userInfo不为空                    //说明已经登录成功,放行                    arg2.doFilter(request, response);                }else {                    //否则,跳转到登录页面                    url="/User/login.jsp";                }            }else {                //否则,跳转到登录页面                url="/User/login.jsp";            }        request.getRequestDispatcher(url).forward(request, response);
原创粉丝点击