过滤器的api接口

过滤器是执行过滤任务的对象,这些任务是针对对某一资源(servlet 或静态内容)的请求或来自某一资源的响应执行的,抑或同时针对这两者执行。

Filter 用 doFilter 方法执行过滤。每个 Filter 都有对 FilterConfig 对象的访问权,可从该对象获得其初始化参数以及对它可以使用的 ServletContext 的引用,以便为过滤任务加载所需的资源。

Filter 是在 Web 应用程序的部署描述符中配置的。

已经标识用于此设计的示例是
1) 验证过滤器
2) 日志记录和审计过滤器
3) 图像转换过滤器
4) 数据压缩过滤器
5) 加密过滤器
6) 标记过滤器
7) 触发资源访问事件的过滤器
8) XSL/T 过滤器
9) Mime 类型链过滤器

since
en
Servlet 2.3

 

 

Methods
public void destroy()
zh_cn
由 Web 容器调用,指示将从服务中取出的过滤器。此方法仅在过滤器的 doFilter 方法中的所有线程都已退出之后调用一次,或者在过了超时期之后调用。在调用此方法之后,Web 容器不会再对此过滤器实例调用 doFilter 方法。

此方法为过滤器提供了一个清除持有的所有资源(比如内存、文件句柄和线程)的机会,并确保任何持久状态都与内存中该过滤器的当前状态保持同步。
 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException
zh_cn
每次由于对链末尾的某个资源的客户端请求而通过链传递请求/响应对时,容器都会调用 Filter 的 doFilter 方法。传入此方法的 FilterChain 允许 Filter 将请求和响应传递到链中的下一个实体。

此方法的典型实现遵循以下模式:-
1. 检查请求
2. 有选择地将带有自定义实现的请求对象包装到用于输入过滤的过滤器内容或头中
3. 有选择地将带有自定义实现的响应对象包装到用于输出过滤的过滤器内容或头中
4. a) 可以使用 FilterChain 对象 (chain.doFilter()) 调用链中的下一个实体,
4. b) 可以不将请求/响应对传递给过滤器链中的下一个实体,从而阻塞请求处理
5. 在调用过滤器链中的下一个实体之后直接设置响应上的头。

 
public void init(FilterConfig filterConfig) throws ServletException
zh_cn
由 Web 容器调用,指示将放入服务中的过滤器。servlet 容器只在实例化过滤器之后调用一次 init 方法。在要求过滤器做任何过滤工作之前,init 方法必须成功完成。

如果 init 方法
1.抛出 ServletException
2.没有在 Web 容器定义的时间段内返回,则 Web 容器无法将过滤器放入服务中。

posted on 2016-06-28 01:59  雪的心  阅读(1121)  评论(0编辑  收藏  举报

导航