`
sunbin
  • 浏览: 341586 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Filter过滤器

    博客分类:
  • jsp
阅读更多

 

 

要想深入了解filter首先需要了解其运行机制

     客户端信息-- >容器如tomcat(创建request,response对象)-->filter进行权限检查-->servlet-->javabean,dao等其他-->servlet(或jsp)-->filter-->tomcat编码转为html-->客户端
     必须了解的是filter里面的三个方法destroy(),  doFilter(),   init()。
     一、其中init()/destroy()是在容器加载/销毁时候执行。加载和销毁的时机一般是在容器tomcat开始、停止的时候或filter更新时候执行的。
    、 doFilter()里面FilterChain.doFilter(request, response)方法也和有趣。假设只有一个filter时、filter下一个执行环节是servlet,最终执行的不管是servlet还是jsp都会返回到doFilter()的FilterChain.doFilter(request, response)下面继续执行。

 ex:public void doFilter(ServletRequest arg0, ServletResponse arg1,
   FilterChain FilterChain) throws IOException, ServletException {
  System.out.println("aaaaaaaaaaaaaaaaaaaaa");
  FilterChain.doFilter(arg0, arg1);//-----servlet System.out.println("----");
  System.out.println("fffffffffffffffffffff");

 }
 最总执行结果是     aaaaaaaaaaaaaaaaaaaaa
                           ----
                          fffffffffffffffffffff
     这样我们可以将一些权限认证、和字符编码设置(如request.setCharacterEncoding("GBK"))的问题在Filter里面执行,减少代码的重复量
      filter配置
        filter配置在WEBAPP\WebRoot\WEB-INF\web.xml配置在前面的filter先执行,这点和servlet不一样
      
       ex    <filter>
                  <filter-name>TestFilter</filter-name>
                  <filter-class>TestFilter</filter-class>
               </filter>
             <filter-mapping>
                 <filter-name>TestFilter</filter-name>
                <url-pattern>*.do</url-pattern>  //对do文件进行过滤
            </filter-mapping>

 

、读取配置文件中的Filter参数

       public void init(FilterConfig filterConfig) throws ServletException {

        encoding = filterConfig.getInitParameter("encoding");
        System.out.println("encoding=="+encoding);  //结果encoding=GB18030
      }

 

 

web.xml文件中的Filter

 


       <filter> 
       <filter-name>CharacterEncodingFilter</filter-name>
       <filter-class>com.bjsxt.cms.util.CharacterEncodingFilter</filter-class>
       <init-param>
       <param-name>encoding</param-name>
       <param-value>GB18030</param-value>
       </init-param>
       </filter>
       <filter-mapping>
       <filter-name>CharacterEncodingFilter</filter-name>
       <url-pattern>*.action</url-pattern>
       </filter-mapping>

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics