版权声明:Summer https://blog.csdn.net/csdnyanglei/article/details/81192898
@Configuration
public class BootWebAppConfigurer extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new BootInterceptor()).addPathPatterns("/**");
super.addInterceptors(registry);
}
}
/***
* 拦截器,单例
*/
public class BootInterceptor implements HandlerInterceptor {
public final AtomicLong _count = new AtomicLong();// 计数器
// 1
public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object arg2) {
long begin_nao_time = System.nanoTime();
String realIp = HttpHeadTool.getRealIpAddr(req);
req.setAttribute("p_real_ip", realIp);
req.setAttribute("begin_nao_time", begin_nao_time);
return true;
}
/*3*/
public void afterCompletion(HttpServletRequest req, HttpServletResponse resp, Object arg2, Exception arg3)
throws Exception {
long begin_nao_time = (Long) req.getAttribute("begin_nao_time");
String real_ip = (String) req.getAttribute("p_real_ip");
long interval = System.nanoTime() - begin_nao_time;
String uri = req.getRequestURI();
StatsManager.inst().statsUri(uri, interval);//统计费时
}
/* 2 */
public void postHandle(HttpServletRequest req, HttpServletResponse resp, Object arg2, ModelAndView arg3)throws Exception {}
}