过滤器

一、生命周期
当tomcat容器启动的时候,会加载这个filter,并且调用init()方法,给encoding赋初值。当生命周期结束,就调用destroy()的方法。
init():初始化,在创建过滤器对象的时候会被调用。在过滤器在web应用启动时创建,就只创建一次,以后再调用也不会初始化
doFilter():执行过滤的主要方法,用于过滤请求和响应,请求一次就调用一次,可以调用多次
destory():销毁方法,过滤器对象销毁的时候会被调用,也只是调用一次。

二、过滤器的作用:
Filter和Servlet一样都是在服务器中运行的,因此也是需要在web.xml进行配置
过滤器实现了Filter接口,用于在请求资源或者响应资源,或者请求和响应资源的时候,执行过滤任务

首先定义一个过滤器类
public class TimerFilter implements Filter {

public TimerFilter() {
    super();
    System.out.println("实例化了过滤器");
}

@Override
public void destroy() {
System.out.println("过滤器被销毁");
}

@Override
public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain arg2) throws IOException, ServletException {
    // TODO Auto-generated method stub
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    long start = System.currentTimeMillis();
    System.out.println("计时完毕");

    // 请求继续
    arg2.doFilter(request, response);

    // 请求完毕之后才运行到这里
    long end = System.currentTimeMillis();

    System.out.println("用时:" + (end - start) + "毫秒");

}

@Override
public void init(FilterConfig arg0) throws ServletException {
    System.out.println("过滤器被创建");

}

}
然后在web.xml中进行配置

Timer
com.filtertest.servlet.TimerFilter


Timer
/FilterTestServlet

过滤器可以监听多个servlet的状态的,只要在
/FilterTestServlet
在这里配置servlet的路径就可以了
然后在servlet的处理前就会先走过滤器了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值