一,單個攔截器,實現接口 HandlerInterceptorjava
@Component public class MyInterceptor1 implements HandlerInterceptor { /** * 進入controller層以前攔截請求 * @param request * @param response * @param handler * @return * @throws Exception */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("============1111111111---preHandle============"); return true; } /** * 處理請求完成後視圖渲染以前的處理操做 * @param request * @param response * @param handler * @param modelAndView * @throws Exception */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception { System.out.println("============1111111111---postHandle ============"); } /** * 視圖渲染以後的操做 * @param request * @param response * @param handler * @param ex * @throws Exception */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception { System.out.println("============1111111111---afterCompletion============"); } }
新建類 InterceptorConfig 實現 WebMvcConfigurer ide
@Configuration public class InterceptorConfig implements WebMvcConfigurer { @Resource private MyInterceptor1 myInterceptor1; @Override public void addInterceptors(InterceptorRegistry registry) { //添加要攔截的url 攔截的路徑 放行的路徑 registry.addInterceptor(myInterceptor1).addPathPatterns("/admin/**").excludePathPatterns("/admin/login"); } }
二 ,多個攔截器post
咱建個攔截器 2url
@Component public class MyInterceptor2 implements HandlerInterceptor { /** * 進入controller層以前攔截請求 * @param request * @param response * @param handler * @return * @throws Exception */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("============2222222---preHandle============"); return true; } /** * 處理請求完成後視圖渲染以前的處理操做 * @param request * @param response * @param handler * @param modelAndView * @throws Exception */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception { System.out.println("============2222222---postHandle ============"); } /** * 視圖渲染以後的操做 * @param request * @param response * @param handler * @param ex * @throws Exception */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception { System.out.println("============2222222---afterCompletion============"); } }
而後在 InterceptorConfig 添加配置日誌
@Configuration public class InterceptorConfig implements WebMvcConfigurer { @Resource private MyInterceptor1 myInterceptor1; @Resource private MyInterceptor2 myInterceptor2; @Override public void addInterceptors(InterceptorRegistry registry) { //添加要攔截的url 1 攔截的路徑 放行的路徑 registry.addInterceptor(myInterceptor1).addPathPatterns("/admin/**").excludePathPatterns("/admin/login"); //添加要攔截的url 2 registry.addInterceptor(myInterceptor2).addPathPatterns("/admin/**").excludePathPatterns("/admin/login"); } }
如今看看兩個攔截器執行順序blog
如今把 攔截器1和2的位置換下接口
@Configuration public class InterceptorConfig implements WebMvcConfigurer { @Resource private MyInterceptor1 myInterceptor1; @Resource private MyInterceptor2 myInterceptor2; @Override public void addInterceptors(InterceptorRegistry registry) { //添加要攔截的url 2 registry.addInterceptor(myInterceptor2).addPathPatterns("/admin/**").excludePathPatterns("/admin/login"); //添加要攔截的url 1 攔截的路徑 放行的路徑 registry.addInterceptor(myInterceptor1).addPathPatterns("/admin/**").excludePathPatterns("/admin/login"); } }
而後順序就變了,日誌以下io
完了。class