javax.servlet.的Filter

2020-09-01  本文已影响0人  傲骨天成科技

过滤器作用:

  完成通用的操作。如:登录验证,同意处理编码、敏感字符过滤...

快速入门

1.步骤:
       1.定义一个类,实现接口Filter
       2.复写方法:
       3.配置拦截路径
              1.web.xml
              2.注解配置

2.代码
    // 注意:使用的是javax.servlet.*这个包
    @WebFilter("/*") // 访问所有资源之前,都会执行该过滤器
     public class FilterDemo1 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws      ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

         System.out.println("filterDemo1被执行了......");

        // 考虑是否放行
          filterChain.doFilter(servletRequest,servletResponse);
     }

     @Override
      public void destroy() {

      }

过滤器细节

  1.web.xml配置
         <filter>
                 <filter-name>demo2</filter-name>
                 <filter-class>cn.itcat.web.filter.FilterDemo2</filter-class>
         </filter>
         <filter-mapping>
                 <filter-name>demo2</filter-name>
                 <url-pattern>/*</url-pattern>
         </filter-mapping>
  2.过滤器执行流程
        1.执行过滤器
        2.执行放行后的资源
        3.回来执行过滤器放行代码下边的代码
  3.过滤器生命周期方法
         init:在服务器启动后,会创建Filter对象,然后执行init方法
        doFilter:每一次请求被拦截资源时,执行
        destroy:正常关闭服务器执行
  4.过滤器配置详解
        *拦截路径配置:
            1.具体资源路径:/index.jsp   只有访问index.jsp资源时,过滤器才会被执行。
            2.目录拦截:/user/*   访问/user下的所有资源时,过滤器才会被执行
            3.后缀名拦截:*.jsp   访问所有后缀名为jsp资源时,过滤器都会被执行
            4.拦截所有资源:/*      访问所有资源时,过滤器都会被执行
        *拦截方式配置:资源被访问的方式
              *注解配置:
                    设置dispatcherType属性
                       1.REQUEST: 默认值。浏览器直接请求资源
                       2.FORWARD: 转发访问资源
                       3.INCLUDE:  包含访问资源
                       4.ERROR:  错误跳转资源
                       5.ASYNC:  异步访问资源

   5.过滤器链的配置
         *执行顺序:如果有两个过滤器:过滤器1和过滤器2
               1.过滤器1先执行
               2.过滤器2
               3.资源执行
               4.过滤器2
               5.过滤器1

         *过滤器先后顺序问题:
                1.注解配置:按照类名的字符串比较规则比较,值小的先执行
                     如:AFilter和BFilter则先执行AFilter
                2.web.xml配置:谁定义在前面谁先执行

动态代理相关

  和OC的runtime的HOOK住相关方法很相似
截屏2020-08-31 下午2.41.05.png
上一篇 下一篇

猜你喜欢

热点阅读