天天看点

javaweb中的Filter(过滤器)

1、Filter简介以及作用

1、Filter是JavaWeb的三大web组件之一Servlet、Filter、Listener。

2、Filter的作用是在请求到达WEB资源(HTML、CSS、Servlet、JSP)之前进行拦截。

3、Filter需要交给Tomcat访问器来管理。

4、Filter的作用:

1.Filter可以在请求到达目标资源之前进行拦截

2.Filter也可以放行请求

3.Filter可以在响应到达浏览器之前做一个预处理

2、Filter的三个方法

1、init()

init()方法用来初始化过滤器。

调用代码为:

2、doFilter()

一次拦截请求时都会调用。

参数

ServletRequest request

> 请求报文

ServletResponse response

> 响应报文

FilterChain chain

> 该对象的作用就是放行请求:

可以通过 chain.doFilter(request,response) 放行请求。

当调用chain.doFilter()就相当于调用目标的资源的service方法。

3、 destroy()

destroy()方法在项目停止时调用,用来在对象被销毁前做一些收尾工作。

3、多个Filter的拦截顺序

<filter-mapping>
	<filter-name>CharacterEncodingFilter1</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
	<filter-name>CharacterEncodingFilter2</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

           

拦截路径一样,拦截器的顺序,就看web.xml的配置顺序,从上到下依次

<filter-mapping>
	<filter-name>CharacterEncodingFilter3</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncodingFilter4</filter-name>
	<url-pattern>*.jsp</url-pattern>
</filter-mapping>

           

如何都能拦截,那么这两个拦截器都会拦截一下,那么谁是第一个拦截器呢?? 最精准匹配的,就是第一个拦截器

继续阅读