-
1 知识链接
-
2 任务实现
-
3 同步实训
1.Filter简介
Filter被称作过滤器或者拦截器,其基本功能就是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理前后实现一些特殊功能。图7-14描述了Filter的拦截过程。
Filter是servlet规范中定义的Java Web组件,在所有支持Java Web的容器中都可以使用。

图7-14 过滤器工作过程
当客户端发生请求后,在HttpServletRequest 到达Servlet 之前,过滤器拦截客户的HttpServletRequest。根据需要检查HttpServletRequest,也可以修改HttpServletRequest 头和数据。在过滤器中调用doFilter方法,对请求放行。请求到达Servlet后,对请求进行处理并产生HttpServletResponse发送给客户端。在HttpServletResponse 到达客户端之前,过滤器拦截HttpServletResponse。根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据。最后,HttpServletResponse到达客户端。
2.Filter接口
在开发过滤器时,需要实现Filter接口,这个接口存在于javax.servlet包下。
Filter接口定义了3个方法,如表7-3所示
表7-3 Filter接口的方法
| 方法名称 | 方法描述 |
| void init(FilterConfig filterConfig) | Web容器调用该方法实现过滤器的初始化 |
| void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) | 当客户端请求资源时,Web容器会调用与资源对应的过滤器的doFilter()方法。在该方法中,可以对请求和响应进行处理,实现过滤功能 |
| void destroy() | Web容器调用该方法,造成过滤器失效 |
3.Filter的生命周期
Filter的创建和销毁由web服务器控制。
(1)创建实例并初始化。服务器启动的时候,web服务器创建Filter的实例对象,并调用其init方法,完成对象的初始化功能。filter对象只会创建一次,init方法也只会执行一次。
(2)执行过滤。拦截到请求时,执行doFilter方法。可以执行多次。
(3)销毁。服务器关闭时,web服务器销毁Filter的实例对象。

