springboot添加过滤器,继承Filter接口,实现doFilter方法
方法一,实现类增加注解@WebFilter,注解参数filterName表示过滤器名称,urlPatterns表示要过滤的url路径,在启动类增加注解@ServletComponentScan,表示能扫描到该类。
当有多个过滤器时,通过注解@Order,注解参数大小表示过滤器执行的县厚顺序,越小越先执行
@WebFilter(filterName = "responseFilter",urlPatterns = "/*")
public class ResponseFilter implements Filter
方法二,创建新配置类,添加 @Configuration 注解,将自定义Filter加入过滤链。
@Configuration
public class DefinedFilterConfig {
@Bean
public FilterRegistrationBean responseFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
ResponseFilter responseFilter = new ResponseFilter();
filterRegistrationBean.setFilter(responseFilter);
filterRegistrationBean.addUrlPatterns("/*");//配置过滤规则
filterRegistrationBean.setName("responseFilter");//设置过滤器名称
filterRegistrationBean.setOrder(1);//执行次序
return filterRegistrationBean;
}
}
springboot在response中添加或者修改header,分两种情况
情况1,在chain.doFilter(servletRequest, servletResponse)代码之前
servletResponse.addHeader("XXX", "xxxx");
或者
servletResponse.setHeader("XXX", "xxxx");<