1. 过滤器在Web开发中的一些主要应用:
1. 对用户请求进行统一认证;
2. 用户的访问进行记录和审核;
3. 对用户发送的数据进行过滤和替换;
4. 转换图像格式;
5. 对响应内容进行压缩,减少传输量;
6. 对请求和响应进行加解密处理。
2. 过滤器生命周期的各个阶段:
1.实例化 Servlet容器创建Filter实例对象。
2.初始化 调用init()方法,完成对象的初始化功能,只执行一次。
3.过滤 调用doFilter()方法,该方法中定义过滤规则。
4.销毁 调用destroy()方法销毁Filter对象,释放过滤器使用的资源。
3. 有关过滤器的API
Filter
过滤器必须是一个实现Filter接口的类的对象,它根据用户的请求和资源的响应进行过滤。
Filter 接口包含以下方法:
public void init(FilterConfig fg) //被容器调用,初始化过滤器
public void doFilter(ServletRequest req,ServletResponse res, FilterChain chain) // 每当有请求或响应时被容器调用,进行过滤
public void destroy() //被容器调用,销毁过滤器
FilterChain
FilterChain接口用于调用过滤器链中的一系列过滤器,通过该接口把被过滤的任务在Filter间传递,它的主要方法:
public void doFilter(ServletRequest req, ServletResponse res) //调用下一个过滤器,若无下一过滤器,则将请求或响应传递到目标
FilterConfig
FilterConfig对象由容器提供给过滤器,以允许访问该过滤器的初始化数据(web.xml中配置)
FilterConfig 接口包含以下方法:
String getFilterName():得到filter的名称。
String getInitParameter(String name): 返回在部署描述中指定名称的初始化参数的值。如果不存在返回null。
Enumeration getInitParameterNames():返回过滤器的所有初始化参数的名字的枚举集合。
public ServletContext getServletContext():返回Servlet上下文对象的引用。
4. 实现过滤器的步骤
1.创建一个实现javax.servlet.Filter接口的类
2.实现init()方法,读取过滤器的初始化参数
3.实现doFilter()方法,完成对请求或过滤的响应
4.调用FilterChain接口对象的doFilter()方法,向后续的过滤器传递请求或响应
5.在web.xml中配置Filter,对需要过滤的资源进行配置