过滤器(Filter)
Filter其实也是一种Servlet,与Servlet 2.3后增加的新功能。
过滤器是以一种组件的形式绑定到Web应用程序当中的,与其他Web应用程序组件不同的是,过滤器采用”链“的方式进行处理,如下图所示:

所谓”链“方式处理,后面再讲解。
Jave EE标准中,要定义一个Filter,实现javax.servlet.Fliter接口即可。此接口定义了3个操作方法,如下所示:
| 方法 | 类型 | 描述 |
|
pubic void init(FilterConfig filterConfig) throws ServletException |
普通 |
过滤器初始化(容器启动时初始化)时调用,可以通过FilterConfig取得配置的初始化参数。 |
|
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOExcepiton,ServletException |
普通 | 完成具体的过滤操作,然后通过FilterChain让请求继续向下传递。 |
| public void destroy() | 普通 | 过滤器销毁时使用 |
下面用实例介绍什么是”链“式处理方式:
1 public class SimpleFilter implements Filter{ 2 public void init(FilterConfig config)throws ServletException{ 3 String initParam=config.getInitParameter("ref"); 4 System.out.println("过滤器初始化,初始化参数="+iniParam); 5 } 6 public void foFilter(ServletResquest request,ServletResponse response,FilterChain chain)throws IOException,ServletException{ 7 System.out.println("执行doFilter()方法之前"); 8 chain.doFiler(request,response); 9 System.out.println("执行doFilter()方法之后"); 10 } 11 public void destroy(){ 12 System.out.println("过滤器销毁"); 13 } 14 }
本程序中,chain.doFilter()方法之前和之后的语句都会被执行,因为过滤器采用的是”链“式方法处理。

浙公网安备 33010602011771号