-
FIlter概述
- 过滤请求与过滤响应
-
Filter的应用场景
- 统一解决乱码问题
-
开发Filter的步骤
- 创建一个类实现Filter接口,重写doFilter方法
-
配置web.xml定义执行行里开发的Filter(与Servlet的配置类似)
<!-- 统一处理全站编码问题,post提交请求数据乱码问题 -->
<filter>
<filter-name>Demo3Filter</filter-name>
<filter-class>com.itheima.filterconfig.Demo3Filter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<!-- 要求过滤器过滤所有的请求 -->
<filter-mapping>
<filter-name>Demo3Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-
在Filter中获取参数数据
-
String getInitParameter(String name)
获取web.xml配置文件中当前Filter配置的参数,根据指定参数名称获取参数值
-
Enumeration getInitParameterNames()
获取web.xml配置文件中当前Filter配置的参数,获取所有参数名称的列表
-
-
过滤器请求的url路径配置
-
映射的方式有两种方式
-
精确匹配:配置与用户的访问一模一样
- 多个url-pattern
- 多个filtert-mapping
-
模糊匹配
-
前缀通配符匹配
必须以"/ "开头,以"* "结尾(*前面必须要有/)
-
后缀通配符匹配
必须以"*"开头,以"."扩展的方式
-
-
-
注意事项
- 当前匹配模式一样的时候,匹配相似度越高优先级越高
- 精确匹配优于模糊匹配
- 模糊匹配中,前缀匹配优先于后缀匹配
-
- 过滤器链:就是一个Servlet被多个过滤器,过个过滤器形成一个过滤链
-
过滤方式:定义过滤器拦截什么的请求,就是对象不同请求分类进行过滤的方式就是拦截方式
- 拦截方式的使用步骤
在web.xml的配置方式,如果不配置就采用默认的配置request
-
格式
<filter-mapping>
<filter-name>Chain1Filter</filter-name>
<url-pattern>/demo1</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
-
修改拦截方式配置,修改dispatcher
REQUEST |
就是过滤直接访问 url或者页面跳转重定向 |
FORWARD |
只过滤请求转发的页面跳转 |
INCLUDE |
只过滤动态包含的页面的过滤 |
ERROR |
过滤全局配置的友好页面的过滤 |
-
- 注意:dipatcher如果没有配置,采用默认拦截方式,但是如果配置采用配置的拦截的方式,如果只配置了FORWARD就不具有默认的REQUEST.如果想一起具有就需要都配置.