A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

太阳11

初级黑马

  • 黑马币:56

  • 帖子:25

  • 精华:0

© 太阳11 初级黑马   /  2018-6-9 14:25  /  604 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

filter 过滤器
和名字一样,功能就是在执行其他功能之前,会执行这个
过滤器,
可以先执行这个过滤器的功能,
只要是客服端想服务端发送的都会被过滤

过滤器的过滤范围,
通过配置web.xml文档来表示
<filtener>
    <filtener-name>/myfiltener  <filtener-name>
    <filtener-class>filtener的class全路径<filtener-class>
</filtener>
<filtener-mapping>
    <filtener-name>/myfiltener   <filtener-name>
    <utl-pattern>
        这里配置的路径就是过滤的范围
        /*  这里表示通配符,就是所有的范围,都回经过这个过滤器   
        /myfiltener.jsp 这里表示范围这个myfiltener文件的时候,才会执行这个过滤器  //完全目录匹配
        *.do  这里表示访问文件后缀名是.do的才会执行这个过滤器  //后缀名匹配
   
<utl-pattern>
</filtener-mapping>

<filtener-mapping>
    <filtener-name>/myfiltener   <filtener-name>
    //上面的url-parten是用来过滤路径请求
    <servlet-name>servlet</serlvet-name>
      //这是用来过滤serlvet请求的
   
       //
        <dispatcher>
            forward //这个值的转发的的意思,
表示这个filtener就是拦截转发,
如果是访问<utl-pattern>/* 的路径配置,
如果页面有转发过来的,就进行执行拦截,如果没有就不会执行
             request//默认值  意思是拦截 请求
             include 拦截包含
            error 拦截错误页面

        </dispatcher>
        

</filtener-mapping>




    public void destroy() {

        服务器关闭的时候,执行销毁方法
    }
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {



        //这里执行要过滤的动作,

        //自己定义

        //请求一次,执行一次,



        //这里表示过滤执行完毕,放行,到下一个过滤器链的过滤器,如果没有过滤器了,就会原来访问那里就访问那里
           System.out.println("进入过滤器");
        chain.doFilter(request, response);



        System.out.println("从服务器返回,");

        //这后面的代码是,服务器处理完毕后会原路返回,

        这里就相当于 然后会的地方,如果有代码,会被执行


    }
    public void init(FilterConfig fConfig) throws ServletException {



        服务器启动的时候就会创建这个filtener对象,并执行这个初始化方法
    }




过滤器链执行顺序,和web.xml配置文件。里面配置的
<filtener-mapping>
的顺序有关,
也就是说
chain.fofiltener方行,是方形到下一个wen.xml的过滤器的配置文件路径

如果形成过滤器连,一个过滤器没有放行,dofilter,就表示过滤器没有下一个,
就会原路返回,不会到到服务器,不会获取请求的东西,会原路返回,





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马