springboot 使用Filter

 1.创建一个 Filter 类,实现 Filter 接口

public class HelloFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //处理业务逻辑
        filterChain.doFilter(servletRequest, servletResponse);
    }
    @Override
    public void destroy() {
    }
}

2. 创建一个配置类,将该过滤器注册到Web拦截器中

@Configuration
public class WebConfig implements WebMvcConfigurer {
@Bean
public FilterRegistrationBean filterRegistrationBean(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
//将自定义的 HelloFilter注册到Web应用的Filter中 使其生效
registrationBean.setFilter(new HelloFilter());

//声明该 HelloFilter 作用在哪些url
List<String> urlList = new ArrayList<>();
//作用于所有url
urlList.add("/*");
registrationBean.setUrlPatterns(urlList);

return registrationBean;
}
}

 

扩展:

Filter(过滤器) Interceptor(拦截器)Aspect(切片)比较:

  • Filter 是 java web 里面的,肯定获取不到 spring 里面 Controller 的信息。
  • Interceptor、Aspect 是和 spring 相关的,所以能获取到 Controller 的信息。
  • Interceotor获取不到请求方法中的参数信息    Aspect(切片)可以获取到
原文地址:https://www.cnblogs.com/Dandwj/p/10582227.html