过滤器的使用
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,对需要过滤的资源进行配置