快速上手
定义Filter
定义一个类实现Filter接口,并重写其全部方法
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
@Override
public void destroy() {
Filter.super.destroy();
}
}
其中,init和destroy分别为初始化和销毁方法,只调用一次,一般用来进行资源的获取和释放操作,有其默认的实现方法,因此大多数时候只需要重写doFilter这个方法就行了。
其中,在doFilter方法中,调用FilterChain的doFilter方法及为放行该请求去访问对应的资源。
配置Filter
Filter类上加上@WebFilter注解并配置其拦截路径,引导类上加上@ServletComponentScan开启Servlet组件支持
@WebFilter(urlPatterns = "/*")
public class DemoFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
@Override
public void destroy() {
Filter.super.destroy();
}
}
我使用的是SpringBoot框架,因此需要在SpringBoot的启动类上加上@ServletComponentScan注解
@ServletComponentScan
@SpringBootApplication
public class Demo1Application {
public static void main(String[] args) {
SpringApplication.run(Demo1Application.class, args);
}
}