JAVA -Filter过滤器

Filter 是javaweb 三大组件之一,本身是一个接口。

作用: 拦截访问服务器资源的请求,加强request与response

配置方式
  1. 注解配置

     @WebFilter(value = "/*",dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD})
     public class FilterDemo1 implements Filter {
    
  2. web.xml 文件配置

     <filter>
         <filter-name>filterDemo1</filtername>
    		<filterclass>com.liuyisheng.LoginTest.Filter.FilterDemo1</filter-class>
     </filter>
     <filter-mapping>
         <filter-name>filterDemo1</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>
    
生命周期
  1. init:服务器启动后,创建filter对象时,调用init方法,只执行一次,多为初始化资源。
  2. doFilter: 每次请求被拦截时调用,多次请求多次调用,类似servlet中的service方法。
  3. destroy:每次服务器关闭时(正常关闭)调用destroy 方法,销毁filter,只执行一次。
执行流程

A–>请求–>拦截器–>doFilter方法放行前代码–>chain.doFilter():放行–>资源–>返回响应请求–>doFilter方法放行后代码–>A

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        //增强request
        System.out.println("filter ....");
        //放行
        chain.doFilter(req, resp);
        //增强response
        System.out.println("filter ....");
	}
拦截方式

Filter dispatcherTypes 属性 可以设置拦截方式,一共5种:

  1. DispatcherType.REQUEST: 作用于直接请求,客户端访问服务器 也是默认属性
  2. DispatcherType.FORWARD:作用于重定向,服务器内转发请求资源
  3. DispatcherType.INCLOUD:包含访问资源
  4. DispatcherType.ERROR:错误跳转资源时(500,404之类)
  5. DispatcherType.ASYNC:异步访问资源

注意 dispatcherTypes 是一个数组,可以同时设置多个拦截方式。

拦截路径

urlPatterns 拦截路径设置

  1. urlPatterns = "/demo.jsp" 只过滤demo.jsp 资源
  2. urlPatterns = "/dic/*" dic目录下的资源全部过滤
  3. urlPatterns = "*.jsp" 过滤所有jsp资源
  4. urlPatterns = "/*" 过滤全部
拦截顺序
  1. 注解写法的拦截器,根据拦截器名的String顺序,小的先执行
  2. web.xml 写法,文件上面的拦截器先执行

多个拦截器执行顺序

Filter1执行
Filter2执行
被请求的资源执行
Filter2执行
Filter1执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值