1. 代码
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(filterName = "testFilter", urlPatterns = {"/*"})
@Component
public class TestFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
/* */
// TODO 初始化参数,在创建Filter时自动调用。当我们需要设置初始化参数的时候,可以写到该方法中
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// TODO 拦截到要执行的请求时,doFilter就会执行。这里面写我们对请求和响应的预处理。
}
@Override
public void destroy() {
// TODO 在销毁Filter时自动调用。
}
}
2. 说明
-
Filter接口中有三个重要的方法。
- init()方法:初始化参数,在创建Filter时自动调用。当我们需要设置初始化参数的时候,可以写到该方法中。
- doFilter()方法:拦截到要执行的请求时,doFilter就会执行。这里面写我们对请求和响应的预处理。
- destroy()方法:在销毁Filter时自动调用。
-
Filter的生命周期 Filter的创建和销毁由web服务器控制。
- 服务器启动的时候,web服务器创建Filter的实例对象,并调用其init方法,完成对象的初始化功能。filter对象只会创建一次,init方法也只会执行一次。
- 拦截到请求时,执行doFilter方法。可以执行多次。
- 服务器关闭时,web服务器销毁Filter的实例对象。