Java Filter过滤器简介

1. Filter过滤器概述

    Filter是Servlet中的一个高级特性,通俗的来说,它可以在servlet之外对request或者是response进行修改。Filter有一个FilterChain概念,就是一个FilterChain中包含多个Filter,也就是过滤链。
    客户端请求request在抵达Servlet之前会经过FilterChain中所有的Filter,服务器端响应response在抵达客户端浏览器之前,也会进过FilterChain里所有的Filter。

2. Filter使用

    如果要在我们的Java Web项目中使用Filter,首先要一个类实现一个Filter接口,这个Filter接口有3个方法,分别是init(),doFilter(),destory(),这三个方法也说明了Filter的生命周期。init方法和destory方法只会被调用一次,分别在Web程序加载或卸载的时候调用。doFilter方法则是每次客户端请求的时候都会被调用,具体一个简单的实例如下:
public class MyFilter implements Filter {

    //Filter注销方法,一般用来释放一些资源
    @Override
    public void destroy() {}

    //filter要实现的功能
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        System.out.println("接收到request请求");

        //继续向下执行,如果还有其他filter继续调用其他filter,没有的话将消息发送给服务器(Servlet)
        chain.doFilter(request, response);

        System.out.println("request被处理之后,response抵达客户端浏览器之前");
    }

    //初始化方法,一般用来加载一些资源
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

}
    定义完一个Filter之后,如果我们要在项目中真正的使用,还需要在web.xml中配置这个Filter,具体的配置方法如下:
<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>com.tgb.drp.util.filter.CharsetEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>GBK</param-value>
    </init-param>
 </filter>
 <filter-mapping>
    <filter-name>MyFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    <!-- 这里可配置多个url-pattern,是或的关系 -->
    <!-- 还可以配置<dispatcher>,具体用法参照此文章:http://hintcnuie.iteye.com/blog/226251/ -->
 </filter-mapping>
        Filter的执行是有先后顺序的,规则就是<filter-mapping>配置在前面的Filter执行要早于配置在后面的Filter,这个顺序也是十分重要的,比如说一个拦截异常的Filter,需要配置在会抛出异常的Filter之前,这样才能捕获到异常信息,具体的Filter的一些应用,我会在接下来的博客中慢慢介绍,持续更新。

这篇文章介绍的比较详细,可参考:

http://blog.csdn.net/dzy21/article/details/51991109

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值