Filter
Filter (过滤器)
1.概念
Filer称之为过滤器,在web开发时,可以通过filter实现对访问的拦截,然后对拦截后的请求或者响应做一些操作再放行,或者不放行。
说明:
-
过滤器可以拦截对资源的访问
-
一个过滤器可以拦截多个资源,一个资源也可以被多个过滤器拦截
-
可以根据访问的url地址判断是否拦截
-
所谓的拦截就是阻截代表请求的 request 和代表响应的 response
-
拦截后可以控制是否放行,也可以在放行之前做一些额外的操作
2.开发过滤器
开发步骤:
- 写一个类实现Filter接口
- 在web.xml中配置过滤器
Filter 接口
-
init方法:初始化方法,当Filter对象被创建时调用此方法
-
destroy方法:善后的方法,当Filter对象被销毁时调用
-
doFilter方法:是过滤器的核心方法,当过滤器拦截到对资源的访问时,服务器就会调用此方法,所有的过滤器的逻辑都在此方法中
web.xml 中的配置
<filter>
<filter-name>myfilter01</filter-name>
<filter-class>cn.tedu.filter.MyFilter01</filter-class>
</filter>
<filter-mapping>
<filter-name>myfilter01</filter-name>
<url-pattern>/*</url-pattern> //拦截资源的路径,/*代表拦截所有资源
</filter-mapping>
3.filter中的相关对象
- FilterConfig:init方法的参数,可以用来获取ServletContext
- FilterChain:代表过滤器链,提供了doFilter方法,用来放行当前过滤器
4.Filter生命周期
当web应用启动时,filter随之创建,创建时调用init方法进行初始化,一旦创建,则一直存活,直到web应用被销毁时,filter随之销毁,在销毁之前会调用destroy方法进行善后。
在存活期间,每当有资源被拦截时,就调用MyFilter01的doFilter方法处理业务逻辑