1、 Filter 什么是过滤器

1、Filter过滤器它是JavaWeb的三大组件之一。三大组件分别是:Servlet程序、Listener监听器、Filter过滤器。

2、Filter过滤器它是JavaEE的规范。也就是接口。

3、Filter过滤器它的作用是:拦截请求,过滤响应。

截请求常见的应用场景:
1、权限检查
	2、日记操作
	3、事务管理... ...等等

2、Filter的体验

要求:在web工程下,有一个admin目录。这个admin目录下所有资源(html页面、jpg图片、jsp文件…等等)都必须是用户登录之后才允许访问。–>模拟一个环境

根据之前学的内容:用户登录之后会把用户登录信息保存到Session域中。所以要检查用户是否登录,可以判断Session中是否包含用户登录信息即可!

2.1、Filter使用步骤

1、编写一个类去实现Filter接口。
2、实现最重要的过滤方法,doFilter方法。
3、到web.xml中去配置Filter的拦截路径。

3、Filter的生命周期

1、构造器方法

2、init初始化方法
第1,2步,在web工程启动的时候执行(Filter已经创建)

3、doFilter过滤方法
第3步,每次拦截到请求就会执行

4、destroy销毁
第4步,停止web工程的时候,就会执行(停止web工程也会销毁Filter过滤器)

4、FilterConfig 类

FilterConfig类,它是Filter过滤器的配置文件
Tomcat每次创建Filter的时候,也会同时创建一个FilterConfig类,这里包含了Filter配置文件的配置信息。

FilterConfig类的作用是获取Filter过滤器的配置内容
1、获取Filter的名称filter-name的内容
2、获取在Filter中配置的init-param初始化参数
3、获取ServletContext对象

5、FilterChain 过滤器链

(多个过滤器如何一起工作)
FilterChain,doFilter()方法的作用:
1、执行下一个Filter过滤器(如果有)
2、执行目标资源(没有Filter)

在多个Filter过滤器执行的时候,它们的优先执行顺序是由他们在web.xml中从上到下配置的顺序决定的!!

多个Filter过滤器执行的特点:

1、所有filter和目标资源默认都执行在同一个线程中。

java的filter如何注册 javaweb的filter_java


2、多个Filter共同执行的时候,它们都使用同一个Request对象。

6、Filter的拦截路径

–精确匹配

<url-pratten> /target.jsp/ <url-pattern>

以上配置的路径,表示请求地址必须为:
http://ip:port/工程路径/target.jsp

–目录匹配

<url-pratten> /admin/* <url-pattern>

以上配置的路径,表示请求地址必须为:
http://ip:port/工程路径/admin 【只关心目录】

–后缀名匹配

<url-pratten> *.html <url-pattern>

以上配置的路径,表示请求地址必须以html结尾才会拦截到
以任意结尾都可以,do、abc。
一定不能以 ’ / ’ 开头。

Filter过滤器它只关心请求的地址是否匹配,不关心请求的资源是否存在!!