Filter过滤器

Filter 接口:Filter随容器创建随容器销毁而销毁
过滤器是一个对象,它对资源的请求(servlet 或静态内容)或来自资源的响应或两者都执行过滤任务。
过滤器在doFilter方法中执行过滤。每个 Filter 都可以访问 FilterConfig 对象,从中可以获取其初始化参数,以及对 ServletContext 的引用,它可以使用它来加载过滤任务所需的资源。
过滤器在 Web 应用程序的部署描述符中配置。
已为此设计确定的示例有:
1、身份验证过滤器
2、日志记录和审计过滤器
3、图像转换滤镜
4、数据压缩过滤器
5、加密过滤器
6、分词过滤器
7、触发资源访问事件的过滤器
8、XSL/T 过滤器
9、哑剧式链式过滤器
初始化方法
public void init(FilterConfig filterConfig) throws ServletException:
由 Web 容器调用以向过滤器指示它正在投入使用。
servlet 容器在实例化过滤器后只调用一次 init 方法。在要求过滤器执行任何过滤工作之前,init 方法必须成功完成。
如果使用 init 方法,则 Web 容器无法将过滤器投入使用
1、抛出 ServletException
2、在 Web 容器定义的时间段内不返回
拦截请求的方法
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain throws IOException, ServletException:
每次由于客户端对链末端资源的请求,请求/响应对通过链时,容器都会调用 Filter 的doFilter方法。传入此方法的 FilterChain 允许 Filter 将请求和响应传递给链中的下一个实体。
此方法的典型实现将遵循以下模式:
检查请求
可以选择使用自定义实现包装请求对象以过滤内容或标题以进行输入过滤
可以选择使用自定义实现包装响应对象以过滤内容或标题以进行输出过滤
使用 FilterChain 对象( chain.doFilter chain.doFilter() )调用链中的下一个实体,
或不将请求/响应对传递给过滤器链中的下一个实体以阻止请求处理
调用过滤器链中的下一个实体后,直接在响应上设置标头。
销毁方法
public void destroy();
由 Web 容器调用以向过滤器指示它正在停止服务。
仅当过滤器的 doFilter 方法中的所有线程都退出或经过超时时间后才调用此方法。 Web 容器调用该方法后,不会在该过滤器实例上再次调用 doFilter 方法。
此方法使过滤器有机会清理被占用的任何资源(例如,内存、文件句柄、线程),并确保任何持久状态与过滤器在内存中的当前状态同步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值