【Springboot | 过滤器】配置类和注解两种方式

Spring Boot实战:拦截器与过滤器

方式一:FilterRegistrationBean配置

这个类必须继承Filter类,这个是Servlet的规范
Spring boot中,我们需要FilterRegistrationBean来完成配置。

public class LogCostFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
 
    }
 
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        long start = System.currentTimeMillis();
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("Execute cost="+(System.currentTimeMillis()-start));
    }
 
    @Override
    public void destroy() {
 
    }
}
@Configuration
public class FilterConfig {
 
    @Bean
    public FilterRegistrationBean registFilter() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new LogCostFilter());
        registration.addUrlPatterns("/*");
        registration.setName("LogCostFilter");
        registration.setOrder(1);
        return registration;
    }
 
}
方式二:注解配置

用@WebFilter就可以进行配置,同样,可以设置url匹配模式,过滤器名称等。这里需要注意一点的是@WebFilter这个注解是Servlet3.0的规范,并不是Spring boot提供的。除了这个注解以外,我们还需在配置类中加另外一个注解:@ServletComponetScan,指定扫描的包。

@WebFilter(urlPatterns = "/*", filterName = "logFilter2")
public class LogCostFilter2 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
 
    }
 
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        long start = System.currentTimeMillis();
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("LogFilter2 Execute cost=" + (System.currentTimeMillis() - start));
    }
 
    @Override
    public void destroy() {
 
    }
}
@SpringBootApplication
@MapperScan("com.pandy.blog.dao")
@ServletComponentScan("com.pandy.blog.filters")
public class Application {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中,配置一个过滤器非常简单,只需要遵循以下步骤: 1. 创建一个过滤器类 首先,我们需要创建一个过滤器类。这个类必须实现javax.servlet.Filter接口,并且实现doFilter()方法。例如: ```java public class MyFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // 这里写过滤器逻辑 filterChain.doFilter(servletRequest, servletResponse); } } ``` 2. 注册过滤器 接下来,我们需要将这个过滤器注册到Spring Boot的应用程序中。有两种方式可以实现这个目标: 方法一:使用@WebFilter注解 使用@WebFilter注解可以很方便地将过滤器注册到应用程序中。例如: ```java @WebFilter(urlPatterns = "/*") public class MyFilter implements Filter { // 这里省略doFilter()方法 } ``` 这个注解需要放在过滤器类的定义上面。urlPatterns属性指定了过滤器要过滤的URL模式。 方法二:使用FilterRegistrationBean 另一种方式是使用FilterRegistrationBean类。这个类可以在Spring Boot应用程序启动时注册过滤器。例如: ```java @Configuration public class MyFilterConfig { @Bean public FilterRegistrationBean<MyFilter> myFilter() { FilterRegistrationBean<MyFilter> registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new MyFilter()); registrationBean.addUrlPatterns("/*"); return registrationBean; } } ``` 这里,我们定义了一个名为myFilter的FilterRegistrationBean,并将MyFilter类的实例设置为过滤器。addUrlPatterns()方法指定了过滤器要过滤的URL模式。 3. 配置过滤器 最后,我们可以在application.properties文件中配置过滤器。例如: ```properties my.filter.param=value ``` 这里,我们定义了一个名为my.filter.param的参数,并将它的值设置为value。在过滤器类中,我们可以使用以下代码获取这个参数的值: ```java String paramValue = filterConfig.getInitParameter("my.filter.param"); ``` 这样,我们就完成了Spring Boot过滤器配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值