过滤器

作者: 小强0_0 | 来源:发表于2017-12-15 10:50 被阅读0次

    过滤器

    先举个例子

    @WebFilter(filterName = "firstFilter", value = {"/*"})
    public class FirstFilter implements Filter {
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        filterChain.doFilter(servletRequest,servletResponse);
        }
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
        }
    
        @Override
        public void destroy() {
        }
    }
    

    单个过滤器

    就像例子中一样,单个过滤器的情况下,凡是在过滤器中拦截到的请求都先经过doFilter方法验证。在doFilter方法中先对请求做出相应的验证,然后判断当前请求是否合法,确定是否可以放行。如果合法,则允许通过,使用filterChain放行请求,然后等待服务器处理完请求后,在返回用户前,再次回到doFilter方法中放行后的位置,继续执行后续代码块,到doFilter方法结束,然后返回给用户。

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    //-------------------------1.验证-----------------------
    //验证操作等。。。
    //------------------------------------------------------
    //-------------------------2.放行-----------------------
        filterChain.doFilter(servletRequest,servletResponse);
    //------------------------------------------------------
    //-------------------------3.返回前处理-----------------
    //服务器处理完后执行的部分
    //------------------------------------------------------
    }
    

    可以将doFilter看做分三块执行

    多过滤器

    形成过滤链,先进入->过滤器1->验证->放行->过滤器2->验证->放行。。。-->服务器->。。。->过滤器2放行后代码块->过滤器1放行后代码块->返回用户

    验证不通过

    以上单过滤器和多过滤器都是在理想的,验证全部通过的情况下。而在未通过的情况下则需要作出其他的操作,类似重定向,跳转等

    注意,在验证不通过的情况下跳转的时候必须消息,一旦跳转的路径仍然会被当前过滤器拦截,那么服务器就会进入一个死循环中

    过滤器的应用

    1 登录验证
    2 字符集修改
    3 。。。

    相关文章

      网友评论

          本文标题:过滤器

          本文链接:https://www.haomeiwen.com/subject/leoeuxtx.html