利用WebFilter注解实现
第一步:创建SpringBoot项目,添加依赖
org.springframework.boot
spring-boot-starter-web
第二步:自定义Filter
- MyFilter1
@WebFilter(filterName = "bb" , urlPatterns = {"/*"})
//@Order(10)//指定过滤器的执行顺序,值越大越靠后执行
public class MyFilter1 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("MyFilter11 初始化");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
System.out.println("MyFilter11 请求处理之前");
//将请求传递给下一个过滤器
filterChain.doFilter(request, response);
System.out.println("MyFilter11 请求处理之后");
}
@Override
public void destroy() {
System.out.println("MyFilter11 销毁");
}
}
- MyFilter2
@WebFilter(filterName = "aa",urlPatterns = {"/*"})
//@Order(2)
public class MyFilter2 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("MyFilter12 初始化");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
System.out.println("MyFilter12 请求处理之前");
//将请求传递给下一个过滤器
filterChain.doFilter(request, response);
System.out.println("MyFilter12 请求处理之后");
}
@Override
public void destroy() {
System.out.println("MyFilter12 销毁");
}
}
第三步:后台Controller
@RestController
@ServletComponentScan
public class DemoController {
@RequestMapping("/fun")
public void fun(){
System.out.println("fun");
}
}
部署项目,请求Controller,结果:
org.springframework.boot
spring-boot-starter-web
第二步:自定义Filter
MyFilter1
public class MyFilter1 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("MyFilter21 初始化");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
System.out.println("MyFilter21 请求处理之前");
//将请求传递给下一个过滤器
filterChain.doFilter(request, response);
System.out.println("MyFilter21 请求处理之后");
}
@Override
public void destroy() {
System.out.println("MyFilter21 销毁");
}
}
- MyFilter2
public class MyFilter2 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("MyFilter22 初始化");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
System.out.println("MyFilter22 请求处理之前");
//将请求传递给下一个过滤器
filterChain.doFilter(request, response);
System.out.println("MyFilter22 请求处理之后");
}
@Override
public void destroy() {
System.out.println("MyFilter22 销毁");
}
}
- 配置Filter
@Configuration
public class FilterRegistration {
@Bean
public FilterRegistrationBean filterRegistrationBean1(){
FilterRegistrationBean registration =
new FilterRegistrationBean();
registration.setFilter(myFilter1());
registration.setName("myFilter1");
registration.addUrlPatterns("/*");
registration.setOrder(9);
return registration;
}
@Bean
public Filter myFilter1(){
return new MyFilter1();
}
@Bean
public FilterRegistrationBean filterRegistrationBean2(){
FilterRegistrationBean registration =
new FilterRegistrationBean();
registration.setFilter(myFilter2());
registration.setName("myFilter2");
registration.addUrlPatterns("/*");
registration.setOrder(3);
return registration;
}
@Bean
public Filter myFilter2(){
return new MyFilter2();
}
}
第三步:后台Controller
@RestController
@ServletComponentScan
public class DemoController {
@RequestMapping("/fun")
public void fun(){
System.out.println("fun");
}
}
部署项目,请求Controller,结果: