1、什么是FilterChain
FilterChain过滤器链:在一个Web应用中,可以开发编写多个Filter,这些Filter组合起来称为是一个过滤器链
Web服务器根据Filter在web.xml文件中的注册顺序(mapping的配置顺序)决定先调用哪个Filter,依次调用后面的过滤器,如果没有下一个过滤器,则调用目标资源
2、FilterConfig对象的概述
(1)FilterConfig对象的作用:
用来获得Filter的相关的配置的对象
(2)FilterConfig对象的API
getFilterName()
getInitParameter(String name)
getInitParameterNames()
getServletContext()
3、<dispatcher>的配置
默认的情况下,过滤器会拦截请求,如果进行转发(需要拦截这次转发)
dispatcher的取值有四个:
REQUEST:默认值。默认过滤器拦截的就是请求
FORWARD:转发
INCLUDE:页面包含的时候进行拦截
ERROR:页面出现全局错误页面跳转的时候进行拦截
4.Filter的生命周期描述
Filter的创建和销毁是由web服务器负责。Web应用程序启动的时候,Web服务器创建Filter的实例对象,并调用其init方法进行初始化的操作(Filter对象只会创建一次,init方法也只会执行一次)
每次Filter进行拦截的时候,都会执行doFilter的方法
当服务器关闭的时候,或者应用从服务器中移除的时候,服务器会销毁Filter对象
5.<url-pattern>的配置
完全路径匹配:以/开始,例如/aaa /aaa/bbb
目录匹配:以/开始,例如/* /aaa/* /aaa/bbb/*
扩展名匹配:不能以/开始,以*开始,例如*.jsp *.do *.action
6.<servlet-name>的配置
专门以Servlet的配置的名称拦截Servlet
7.通过上面的分析,现在要增强request的getParameter方法,增强的过程要写在过滤器当中
如何增强一个类中的方法?
继承
必须要能够控制这个类的构造
装饰者
被增强的类和增强的类需要实现相同的接口
在增强的类中获得被增强的类的引用
缺点:接口中的方法过多,会导致要重写很多其他的方法
动态代理
类需要实现接口