过滤器作用
Filter过滤器是Servlet2.3中所提供的一个过滤请求与响应的对象。
Filter过滤器既可以对客户端向服务器端发送的请求进行过滤,也可以对服务器端向客户端产生的响应进行过滤处理。
Filter对象的创建
创建一个Class实现Filter接口,并实现接口中三个抽象方法。
init()方法:初始化方法,在创建Filter后立即调用。可用于完成初始化动作。
doFilter()方法:拦截请求与响应方法,可用于对请求和响应实现预处理。
destroy()方法:销毁方法,在销毁Filter之前自动调用。可用于完成资源释放等动作。
Filter的生命周期
Filter的创建和销毁由web服务器控制
服务器启动的时候,Web服务器创建Filter的实例对象,并调用其init方法,完成对象的初始化功能。filter对象只会创建一次,init方法也只会执行一次。
拦截到请求时,执行doFilter方法,可以执行多次。
服务关闭时,web服务器销毁Filter的实例对象
FilterChain(过滤器链)
Filter技术的特点是在对请求或响应做预处理时,可实现“插拔式”的程序设计。我们可以根据自己需求添加多个Filter,也可以根据需求去掉某个Filter,通过修改web.xml文件即可实现。那么如果有多个过滤器对某个请求及响应进行过滤,那么这组过滤器就称为过滤器链。
Filter执行顺序
则按照在web.xml文件中配置的上下顺序来决定先后。在上的先执行,在下的后执行。