什么是Filter
- Filter称为是过滤器,是Servlet技术中最实用的技术,web开发人员通过Filter技术,对web服务器所管理的资源(JSP、Servlet、html、静态页面等)进行拦截,从而实现一些特定的功能。
- Filter就是过滤从客户端向服务器发送的请求。
Filter原理
类似于地铁的安检设备。
- 1、编写一个类实现Filter接口
- 2、配置
FilterChain对象的概述
FilterChain过滤器链:在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称为一个FilterChain过滤器链。
- web服务器根据Filter在web.xml文件中的注册顺序(mapping的配置顺序)决定先调用哪个Filter,依次调用后面的过滤器,如果没有下一个过滤器,调用目标资源。
- FilterChain只有一个方法doFilter()
Filter的生命周期
Filter的创建和销毁是由web服务器负责的。
- web应用程序启动的时候,web服务器创建Filter的实例对象,并调用其init方法进行初始化(Filter对象只会创建一次,init方法也只会执行一次)。
- 每次Filter拦截的时候,都会执行doFilter方法。
- 当服务器关闭时,应用从服务器移除的时候,服务器会销毁Filter对象。
Filter的相关配置
web.xml下的配置。
- < url-pattern >的配置
- < servlet-name >的配置
以servlet的配置的名称拦截servlet。 - < dispatcher >的配置
默认的情况下过滤器会拦截请求,如果进行转发(需要拦截这次转发)。- dispatcher的取值
- REQUEST:默认值,默认过滤器拦截的就是请求。
- FORWARD:转发。
- INCLUDE:页面包含的时候进行拦截。
- ERROR:页面出现全局错误页面跳转的时候进行拦截。
- dispatcher的取值