filter知识

Filter 技术是servlet 2.3 新增加的功能。servlet2.3是sun公司与2000年10月发布的,它的开发者包括许多个人和公司团体,充分体现了sun公司所倡导的代码开放性原则。由于众多的参与者的共同努力,servlet2.3比以往功能都强大了许多,而且性能也有了大幅提高。

Filter 技术使用户可以改变一个request和修改一个response。 Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开servlet时处理response。换种说法,filter其实是一个”servlet chaining”(servlet 链)。

一个filter(filter必须实现javax.servlet.Filter接口定义的三个方法: doFilter、init和destroy) 包括: 

  1。 在servlet被调用之前截获;

  2。 在servlet被调用之前检查servlet request;      如统一的编码转换

  3。 根据需要修改request头和request数据;         装饰、或者动态代理实现

  4。 根据需要修改response头和response数据;

         5。 在servlet被调用之后截获。可以捕获servlet运行的结果,比如进行数据压缩等以上特点可以通过简单案例演示,是学生对Filter有一个初步认识。你能够配置一个filter 到一个或多个servlet;单个servlet或servlet组能够被多个filter 使用。几个实用的filter 包括:用户辨认filter,日志filter,审核filter,加密filter,符号filter,能改变xml内容的XSLT filter等。


执行流程:

执行第一个过滤器的chain.doFilter()之前的代码

——>第二个过滤器的chain.doFilter()之前的代码

——>……

——>第n个过滤器的chain.doFilter()之前的代码

——>所请求servlet的service()方法中的代码

——>所请求servlet的doGet()或doPost()方法中的代码

——>第n个过滤器的chain.doFilter()之后的代码

——>……

——>第二个过滤器的chain.doFilter()之后的代码

——>第一个过滤器的chain.doFilter()之后的代码。


过滤器的生命周期:(一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行)
(1)、启动服务器时加载过滤器的实例,并调用init()方法来初始化实例;
(2)、每一次请求时都只调用方法doFilter()进行处理;
(3)、停止服务器时调用destroy()方法,销毁实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值