Filter过滤器

什么是过滤器?

        1、Filter 过滤器它是 JavaWeb 的三大组件之一。
        2、三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器
        3、Filter 过滤器它是 JavaEE 的规范。也就是接口
Filter 过滤器它的作用是:拦截请求,过滤响应。
一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤...

创建过滤器:

  1. 步骤:

       1. 定义一个类,实现接口Filter

       2. 复写方法

       3. 配置拦截路径

  1. web.xml

  2. 注解

  代码:

    @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() {

      }

  }

 

Filter 的工作流程图:

在这里插入图片描述

 

1. web.xml配置 

  <filter>

          <filter-name>demo1</filter-name>

          <filter-class>com.java.filter.FilterDemo1</filter-class>

      </filter>

      <filter-mapping>

          <filter-name>demo1</filter-name>

          <!-- 拦截路径 -->

          <url-pattern>/*</url-pattern>

      </filter-mapping>

  2. 过滤器执行流程

  1. 执行过滤器

  2. 执行放行后的资源

  3. 回来执行过滤器放行代码下边的代码

  3. 过滤器生命周期方法

  1. init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源

  2. doFilter:每一次请求被拦截资源时,会执行。执行多次

  3. destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次  。用于释放资源

4. 过滤器配置详解

  @WebFilter(value="/*",dispatcherTypes ={ DispatcherType.FORWARD,DispatcherType.REQUEST})

  * 拦截路径配置:

  1. 具体资源路径: /index.jsp   只有访问index.jsp资源时,过滤器才会被执行

  2. 拦截目录: /user/*  访问/user下的所有资源时,过滤器都会被执行

  3. 后缀名拦截: *.jsp  访问所有后缀名为jsp资源时,过滤器都会被执行

  4. 拦截所有资源:/*  访问所有资源时,过滤器都会被执行

  * 拦截方式配置:资源被访问的方式

  * 注解配置:

  * 设置dispatcherTypes属性

  1. REQUEST:默认值。浏览器直接请求资源

  2. FORWARD:转发访问资源

  3. INCLUDE:包含访问资源

  4. ERROR:错误跳转资源

  5. ASYNC:异步访问资源

  * web.xml配置

  * 设置<dispatcher></dispatcher>标签即可

 

过滤器链(配置多个过滤器)

  * 执行顺序:如果有两个过滤器:过滤器1和过滤器2

  1. 过滤器1

  2. 过滤器2

  3. 资源执行

  4. 过滤器2

  5. 过滤器1

  * 过滤器先后顺序问题:

  1. 注解配置:按照类名的字符串比较规则比较,值小的先执行

  * 如: AFilter 和 BFilter,AFilter就先执行了。

  2. web.xml配置: <filter-mapping>谁定义在上边,谁先执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值