Filter即过滤器,可以用来记录请求的日志,校验登录权限等功能。 Spring Boot 自动添加了 OrderedCharacterEncodingFilter 和 HiddenHttpMethodFilter,我们也可以自定义 Filter。
自定义Filter步骤
1.自定义Filter类,实现javax.servlet.Filter接口;
2.将自定义的Filter加入过滤链
自定义Filter
public class MyFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
System.out.println("*** MyFilter url :" + request.getRequestURI()+"***");
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
将自定义Filter加入过滤链
import org.apache.catalina.filters.RemoteIpFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author : Aslan
* @version : v1.0
* @time : 2018-06-25 13:54
* @desc : 用于配置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", "hand");
//过滤器名字
registration.setName("MyFilter");
//设置优先级
registration.setOrder(1);
return registration;
}
}
设置完成以后,启动项目,访问任意url都会被拦截,并打印,如下: