Filter(过滤器)
-
什么是Filter
是Sun公司提供的一种特殊的JavaEE组件,可以对用户的请求进行拦截,以实现特定的功能
常见的功能:访问权限控制,敏感词过滤,压缩响应内容等 -
如何开发一个Filter
1.开发一个Filter类,实现Filter接口
2.实现接口中定义的3个抽象方法
doFilter()
init()
destory()
3.在web.xml中进行配置<filter> <filter-name> <filter-class> <filter-mapping> <filter-name> <url-pattern>
chain.doFitler(request,response);
- 当前过滤器放行本次请求
- 将导致过滤器链上的下一个过滤器被调用
- 如果当前过滤器是链上的最后一个过滤器,将导致链尾的资源被调用
- 多个Filter生效的顺序
多个Filter生效的顺序由 web.xml中配置的出现的顺序决定
先配置的对应的Filter会先生效
当响应离开资源时,会先经过 后生效的过滤器,逐个向前执行
Filter的生命周期
创建、初始化、就绪、销毁
Filter拦截多个请求
-
直接在url-pattern中指定要拦截的具体url
/test.jsp -
可以使用 /* 作为通配符,拦截多个url
/* 拦截所有请求
字符编码过滤器:将解决请求乱码和响应乱码的代码都放进一个过滤器/user/* 拦截所有对/user下资源的请求
FilterConfig
FilterConfig对象代表了一个Filter在web.xml中配置的初始化参数
当服务器实例化一个Filter时,会读取该Filter在web.xml中配置的参数,创建一个FilterConfig对象,将数据封装进去
在调用一个Filter的init()方法时,会将创建好的FilterConfig对象,以参数的形式传入该方法