如何在SpringBoot中使用过滤器

x33g5p2x  于2021-11-27 转载在 Spring  
字(1.4k)|赞(0)|评价(0)|浏览(529)

一、注解方式

1.1、创建SpringBoot Web工程

1.2、创建Filter类并添加@WebFilter注解

  1. @WebFilter(urlPatterns = "/filter")
  2. public class MyFilter implements Filter {
  3. @Override
  4. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  5. System.out.println("进入过滤器");
  6. chain.doFilter(request,response);
  7. }
  8. }

1.3、在引导类上添加@ServletComponentScan注解

  1. @SpringBootApplication
  2. @ServletComponentScan
  3. public class Ch07SpringbootFilterApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(Ch07SpringbootFilterApplication.class, args);
  6. }
  7. }

测试:

二、配置类方式

2.1、创建SpringBoot工程

2.2、创建Filter类

需要实现Filter接口并且重写doFilter方法

  1. public class MyFilter implements Filter {
  2. @Override
  3. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  4. System.out.println("进入使用配置器类的过滤器");
  5. chain.doFilter(request,response);
  6. }
  7. }

2.3、创建Filter配置类

  1. @Configuration
  2. public class FilterConfig {
  3. @Bean
  4. public FilterRegistrationBean myFilterRegistrationBean(){
  5. FilterRegistrationBean frb = new FilterRegistrationBean(new MyFilter());
  6. //添加要过滤的路径
  7. frb.addUrlPatterns("/user/filter/*");
  8. return frb;
  9. }
  10. }

2.4、编写Controller类

  1. @Controller
  2. @RequestMapping("/user")
  3. public class MyController {
  4. @RequestMapping("/filter/1")
  5. public @ResponseBody String filter(){
  6. return "filter";
  7. }
  8. @RequestMapping("/other")
  9. public @ResponseBody String other(){
  10. return "other";
  11. }
  12. }

测试:

首先测试没有添加过滤器的请求

控制台没有打印任何信息
然后测试添加了过滤器的请求

执行了在过滤器内的代码,测试成功

相关文章