SpringBoot中使用拦截器HandlerInterceptor
使用步骤:
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,控制台结果如下:
浙公网安备 33010602011771号