springboot 添加自定义过滤器,servlet,监听器,拦截器

springboot 添加自定义过滤器,servlet,监听器,拦截器

开发阶段需要添加一个过滤器来做一些log,方便调试,如打印方法执行时间,方法参数等信息

1.添加过滤器

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);
}
}
}

!!同理 相同的办法可以添加自定义servlet listener等,分别构造出一个 ServletRegistrationBean , FilterRegistrationBean,ServletListenerRegistrationBean

2.添加拦截器

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;
}
}


}


springboot 添加自定义过滤器,servlet,监听器,拦截器
https://www.huangchaoyu.com/1155163571.html
作者
hcy
发布于
2019年10月10日
更新于
2024年8月17日
许可协议