过滤器
🌓过滤器概念
-
过滤器是能够对web请求和web响应的头属性和内容体进行操作的一种特殊web组件
-
过滤器的特殊之处在于本身并不直接生成web响应,而是拦截web请求和响应,以便查看、提取或以某种方式操作客户机和服务器之间交换的数据
补充:VPN也相当于过滤器
🌘 过滤器功能:
- 分析web请求,对输入的数据进行预处理
- 阻止web请求和响应的进行
- 根据功能改动请求的头信息和数据体
- 与其他web资源协作
🌛过滤器使用方法:
- 过滤器的API包括javax.servlet包中的Filter,FilterChain和FilterConfig三个接口
- 所有的过滤器都必须实现javax.servlet.Filter接口,该接口定义了init(),doFilter()和destory()三个方法
- 这三个方法分别对应了过滤器生命周期中的初始化、响应和销毁三个阶段
🌍总结:
自定义过滤器:
完成请求的拦截和资源的统一管理
使用方式:
- 定义普通的java类,实现Filter接口
- 重写其中的方法
- init:完成初始化功能 tomcat启动的时候执行一次
- dofilter:进行处理 每次发送请求都会执行
- destory:销毁功能 tomcat关闭的时候执行
<filter> <filter-name>filter</filter-name> 配置filter别名 <filter-class>(类路径地址)</filter-class> 配置filter指定类名路径 </filter> <filter-mapping> <filter-name>filter</filter-name> 配置filter的别名,跟filter标签中的name对应 <url-pattern>/*</url-pattern> 表示要匹配的请求 </filter-mapping>
在过滤器的web.xml配置文件中,可以指定过滤器过滤哪些请求
- /* :匹配所用请求
- /*.do:匹配所用后缀为do的请求
- /filter.do:匹配请求为filter.do的请求
生命周期: 从tomcat启动到关闭
filterChain: 表示过滤器链
在项目中可以定义N多个过滤器,当开始执行的时候,根据用户的请求把符合规则的过滤器挨个执行
建议:每个过滤器完成独立功能,不要将所用的逻辑处理都放置到同一个过滤器中,耦合性高,不利于维护