首先建立config包下的MvcConfig類
@Configuration//配置類 spring-xxx.xml
public class MvcConfig implements WebMvcConfigurer {
//<bean></bean>
@Bean
public LoginInterceptor loginInterceptor(){
return new LoginInterceptor();
}
// 添加攔截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor()).addPathPatterns("/*");
}
}
controller層建立一個跳轉方法用于攔截
@RestController
public class HelloController {
@GetMapping("say")
public String say(){
System.out.println("say");
return "hello";
}
}
建立interceptor包下的LoginInterceptor
//攔截器
public class LoginInterceptor implements HandlerInterceptor {
//方法之前攔截
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
return true;
}
//傳回視圖之前
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
//傳回視圖之後
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}
最終結果,依次列印
如果prehandler傳回的是false
say方法會被攔截,并不會列印