Filter

1. 什么是Filter

  1. 是Sun公司提供的一种特殊的JavaEE组件,可以对用户的请求进行拦截,以实现特定的功能
  2. 常见的功能:访问权限控制,敏感词过滤,压缩响应内容等
    在这里插入图片描述
    在这里插入图片描述

2. 如何开发一个Filter

1. 开发一个Filter类,实现Filter接口
2. 实现接口中定义的3个抽象方法
	1. doFilter()
	2. init()
	3. destory()
3. 在web.xml中进行配置
	<filter>
		<filter-name>
		<filter-class>
	<filter-mapping>
		<filter-name>
		<url-pattern>

3. FilterChain

  1. 过滤器链,代表一次请求中所有需要生效的Fitler和资源组成的链表

  2. API

    chain.doFitler(request,response);
    
    1. 当前过滤器放行本次请求
    2. 将导致过滤器链上的下一个过滤器被调用
    3. 如果当前过滤器是链上的最后一个过滤器,将导致链尾的资源被调用
      在这里插入图片描述

4. 多个Filter生效的顺序

  1. 多个Filter生效的顺序由 web.xml中配置的出现的顺序决定
  2. 先配置的对应的Filter会先生效
  3. 当响应离开资源时,会先经过 后生效的过滤器,逐个向前执行
    在这里插入图片描述

5. Filter的生命周期

创建、初始化、就绪、销毁

1. 创建

当服务器启动后,会加载并实例化所有配置的Filter

2. 初始化

  1. 当Filter被实例化之后,立即调用它的init()方法
  2. 开发者需要执行哪些初始化的逻辑,可以写入init()方法中
  3. 该方法只执行1次

3. 就绪

  1. 每当Filter拦截了一个请求,会调用它doFilter()
  2. 开发者希望执行哪些拦截的逻辑,可以写入doFilter()方法中
  3. 该方法会被调用多次

4. 销毁

  1. 当服务器关闭,或者当前项目被移出容器时,Filter实例会被销毁
  2. 在销毁前,会调用它的destory()方法
  3. 该方法也仅会被调用1次

6. Filter拦截多个请求

  1. 直接在url-pattern中指定要拦截的具体url

    <url-pattern>/test.jsp</url-pattern>
    
  2. 可以使用 /* 作为通配符,拦截多个url

    	<url-pattern>/*</url-pattern> 拦截所有请求
    		字符编码过滤器:将解决请求乱码和响应乱码的代码都放进一个过滤器	
    	<url-pattern>/user/*</url-pattern> 拦截所有对/user下资源的请求
    

7. FilterConfig

  1. FilterConfig对象代表了一个Filter在web.xml中配置的初始化参数
  2. 当服务器实例化一个Filter时,会读取该Filter在web.xml中配置的参数,创建一个FilterConfig对象,将数据封装进去
  3. 在调用一个Filter的init()方法时,会将创建好的FilterConfig对象,以参数的形式传入该方法
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值