Filter可以在servlet这个目标程序之前添加代码,也可以在目标程序执行之后添加代码,之前之后都可以添加过滤规则
一般情况下,都是在过滤器中编写公共代码
怎么实现一个过滤器?
第一步:
编写java类实现一个接口,javax.servlet.Filter,并实现这个接口的所有方法 3个
init方法:在Filter对象第一次被创建后调用,并且只调用一次
doFilter方法:只要用户发送一次请求,则执行一次,发送N次请求,执行N次,这个方法中编写过滤规则
destroy方法:在Filter对象销毁/释放之前调用,并且只调用一次
第二步:
在实现这个Filter接口的类上面加上@WebFilter("/路径")注解
只要某个servlet的路径和@WebFilter("/路径")一致,或者是@WebFilter("/路径")子路径,在执行servlet之前先走这个过滤器
注意:
Servlet对象默认情况下,在服务器启动的时候是不会新建对象的
Filter对象默认情况下,在服务器启动的时候会新建对象
Servlet对象是单例的,Filter对象也是单例的,(单实例,对象只创建一次)
package com.bjpowernode.domain;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebFilter("/b.do")
//@WebFilter("/b.do")精确匹配路径
//@WebFilter("*.do")以*开始模糊匹配路径
//@WebFilter("/b.do
chain.doFilter(request,response);
System.out.println("doFilter方法执行啦");
}
@Override
public void destroy() {
System.out.println("destry方法执行结束啦");
}
}



