使用步骤:
1、实现HandlerInterceptor接口,该接口有三个方法preHandle 、postHandle 、afterCompletion
(1)preHandle在controller执行之前调用
(2)postHandle在controller执行之后,页面渲染之前调用
(3)afterCompletion在页面渲染之后调用,一般用于资源清理操作
2、继承WebMvcConfigurationSupport或者实现WebMvcConfigurer,重写addInterceptors方法。把拦截器加进去。
演示如下:
1、创建拦截器类
public class LogHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,HttpServletResponse response,
Object handler) throws Exception {
System.out.println("==preHandle=="+handler.getClass().getName());
return true;
}
@Override
public void postHandle(HttpServletRequest request,HttpServletResponse response,
Object handler,ModelAndView modelAndView) throws Exception {
System.out.println("==postHandle=="+handler.getClass().getName());
}
@Override
public void afterCompletion(HttpServletRequest request,HttpServletResponse response,
Object handler, Exception ex)throws Exception {
System.out.println("==afterCompletion=="+handler.getClass().getName());
}
}
2、添加拦截器类
1)使用WebMvcConfigurationSupport的方式
@Configuration
public class MyWebMvcConfigurationSupport extends WebMvcConfigurationSupport{
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogHandlerInterceptor());
}
}
2)使用WebMvcConfigurer的方式
@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogHandlerInterceptor());
}
}
3、添加测试类
@RestController
public class TestController {
@RequestMapping("/user/home")
public String home(){
System.out.println("============home=============");
return "user home";
}
}
浏览器输入:http://127.0.0.1:8080/user/home,控制台结果如下: