一个过滤器是一个可以传送请求或者修改相应的对象。
过滤器并不是Servlet,它们并不实际创建一个请求。它们是请求到达一个Servlet前的预处理程序,在相应离开Servlet后的后处理程序。
一个过滤器能够做如下的工作:
(1)在一个servlet被调用前截获该调用
(2)在一个servlet被调用前检查请求
(3)修改在实际请求中提供了可定制请求对象的请求头和请求数据
(4)修改在实际响应中提供了可定制响应对象的响应头和响应数据
(5)在一个servlet被调用之后截获该调用
一个过滤器实现java.servlet.Filter接口
init: 在过滤器执行service前被调用,以设置过滤器的配置对象
destroy: 在过滤器执行service后被调用
doFilter: 执行实际的过滤工作
下面给个例子,使用这个过滤器来计算执行某个servlet所用时间并记录在日志内:
使用此过滤器,还需要在web.xml文件中用<filter>标签部署它
<filter>
<filter-name>timerFilter</filter-name>
<filter-class>TimerFilter</filter-class>
</filter>