过滤器(Filter)

  Filter其实也是一种Servlet,与Servlet 2.3后增加的新功能。

  过滤器是以一种组件的形式绑定到Web应用程序当中的,与其他Web应用程序组件不同的是,过滤器采用”链“的方式进行处理,如下图所示:

      

  所谓”链“方式处理,后面再讲解。

  Jave EE标准中,要定义一个Filter,实现javax.servlet.Fliter接口即可。此接口定义了3个操作方法,如下所示:

Fliter接口定义的方法
方法 类型  描述

 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()方法之前和之后的语句都会被执行,因为过滤器采用的是”链“式方法处理。

 

 

 

 

 

 

posted @ 2017-03-03 15:44  彭泽鹏  阅读(345)  评论(0)    收藏  举报