1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| @Configuration
public class FilterConfig {
//配置filter,默认filter的顺序是最后执行的,可以修改,这里不进行修改
//springboot 默认会添加一些编码相关的filter在最前面,如果该顺序不要改太小,OrderedCharacterEncodingFilter的顺序是 `Ordered.HIGHEST_PRECEDENCE`
//这里使用默认顺序
//注意UrlPatterns不是ant路径模式,不要写成了 `/**`否则不生效
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean<Filter> register = new FilterRegistrationBean<>();
register.setFilter(new TimeFilter());
register.addUrlPatterns("/*");
return register;
}
//过滤器器打印请求路径和参数,方法执行完成统计执行毫秒值
private static class TimeFilter implements Filter {
private static Logger log = LoggerFactory.getLogger(TimeFilter.class);
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
long start = System.currentTimeMillis();
log.info("{} {}", req.getServletPath(), JSONObject.toJSONString(request.getParameterMap()));
chain.doFilter(request, response);
log.info("{} {}ms", req.getServletPath(), System.currentTimeMillis() - start);
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| //继承WebMvcConfigurationSupport
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
//重写此方法
//注意此处的路径格式是ant模式
@Override
protected void addInterceptors(InterceptorRegistry reg) {
reg.addInterceptor(new loginInterceptor())
.addPathPatterns("/**");
}
private static class loginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("请求经过拦截器");
return true;
}
}
}
|