一、什么是Filter
Filter被称作为过滤器或者拦截器,其基本功能就是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理前后实现一些特殊功能。这就好比现实中的污水净化设备,它可以看作一个过滤器,专门用于过滤污水杂志。下图就描述了Filter在web应用中的拦截过程,具体如下:
在图中,当浏览器访问服务器中的目标资源时,会被Filter拦截,在Filter中进行预处理操作,然后再将请求转发给目标资源。当服务器接收到这个请求后会对其进行响应,在服务器处理响应的过程中,也需要先将响应结果发送给拦截器,在拦截器中对响应结果进行处理后,才会发送给客户端。
二、实现一个Filter程序
1)在Eclipse中创建一个名为chapter08的web工程,然后在该工程的Java resource/src目录下创建cn.itcast.chapter08.filter包,并在该包下创建一个MyServlet.java程序,如图:
2)在web.xml文件中对Servlet进行如下配置
部署chapter08工程到Tomcat服务器,启动Tomcat服务器,在浏览器的地址栏中输入URL地址//localhost:8080/chapter08/MyServlet,此时,可以看到浏览器成功访问到MyServlet程序,MyFilter的实现代码如图:
三、Filter映射
Filter映射细节
1、多个Filter共存的时候,拦截的先后顺序由谁来决定?
由的配置先后顺序来决定.
2、Filter的对哪些资源做过滤.:
被过滤的资源名称
/hello.jsp:只对/hello.jsp做过滤.
/*:对所有的资源做过滤操作.
/system/*:只对以/system/打头的资源做过滤.
*.do:只对以.do结尾的资源做过滤
3、可以通过元素来给当前Filter配置初始化参数.
通过FilterConifg对象.getInitParameter(String name)来获取初始化参数.
4、Servlet,Filter,Listener都属于Web组件.
一般的,先配置监听器,再配置过滤器,最后配置Servlet.
5、中的子元素表示对哪些操作执行过滤.