1、注解方式
注意:该方案仅适用于Servlet3.0及其之后的版本。
1.1、定义Filter
自定义Filter实现类并添加@WebFilter
注解
@WebFilter("/*") // 拦截所有请求
public class DemoFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain)
throws IOException, ServletException {
System.out.println("信息被过滤");
filterChain.doFilter(servletRequest, servletResponse);
}
}
1.2、注册Filter
在Application.java中添加@ServletComponentScan
注解,filter包路径无需指明:
@ServletComponentScan
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
启动并运行:
2、配置类方式
注意:该方案同时适用于Servlet2.5 和 Servlet3.0及其之后的版本。
2.1、定义Servlet
无需添加@WebFilter注解
public class DemoFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain)
throws IOException, ServletException {
System.out.println("信息被过滤");
filterChain.doFilter(servletRequest, servletResponse);
}
}
2.2、注册Servlet
在Application.java中定义注册方法,此时无需使用@ServletComponentScan
注解进行注册:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public FilterRegistrationBean<DemoFilter> getFilterBean() {
FilterRegistrationBean bean = new FilterRegistrationBean(new DemoFilter());
bean.addUrlPatterns("/*");
return bean;
}
}
启动并运行: