1. 自定义Filter
pring Boot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,并且我们可以自定义Filter。
从输出日志可以看到默认添加的Filter
两个步骤:
- 实现Filter接口,实现Filter方法
- 添加
@Configuration
注解,将自定义Filter加入过滤链
代码 :
@Configuration
public class WebConfiguration {
@Bean
public RemoteIpFilter remoteIpFilter() {
return new RemoteIpFilter();
}
@Bean
public FilterRegistrationBean testFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new MyFilter());//添加过滤器
registration.addUrlPatterns("/*");//设置过滤路径,/*所有路径
registration.addInitParameter("name", "wcb");registration.setinitParameter("age",26);//添加默认参数
registration.setOrder(1);//设置优先级
return registration;
}
public class MyFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) srequest;
System.out.println("this is MyFilter,url :"+request.getRequestURI());
filterChain.doFilter(srequest, sresponse);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
}
//添加过滤器
registration.addUrlPatterns("/*");//设置过滤路径,/*所有路径
registration.addInitParameter("name", "wcb");registration.setinitParameter("age",26);//添加默认参数
registration.setOrder(1);//设置优先级
return registration;
}
public class MyFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) srequest;
System.out.println("this is MyFilter,url :"+request.getRequestURI());
filterChain.doFilter(srequest, sresponse);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
}
@RestController
public class TestController {
@Autowired
private FilterRegistrationBean filterRegistrationBean;
@RequestMapping("/test")
public Map<String, String> test() {
return filterRegistrationBean.getInitParameters();
}
}
访问http://localhost:8080/test 可以看到,页面结果如下
再看控制台输出日志,可见自定义的拦截器也有拦截并输出内容