自定义拦截器
自定义拦截器有两种方法,继承HandlerInterceptorAdapter和实现HandlerInterceptor接口
本例继承HandlerInterceptorAdapter
@Component
public class MyInterceptor extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
long startTime = System.currentTimeMillis();
request.setAttribute("startTime",startTime);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
long startTime = (Long) request.getAttribute("startTime");
request.removeAttribute("startTime");
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime);
request.setAttribute("handTime",endTime-startTime);
}
}
注册拦截器
定义拦截器时,springboot和传统的ssm框架并没有什么不同,传统的ssm框架一般是采用xml的方式注册拦截器,比较麻烦;springboot提倡使用注解,方式如下
@SpringBootConfiguration
public class MyAdapter extends WebMvcConfigurerAdapter{
/* @Bean
public MyInterceptor myInterceptor(){
return new MyInterceptor();
}*/
@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor).addPathPatterns("/**");
}
}
结果
在浏览器中访问任意路径,控制台会打印处理此请求的时间