歡迎您光臨本站 註冊首頁

Spring Boot編寫攔截器教程實例解析

←手機掃碼閱讀     niceskyabc @ 2020-06-24 , reply:0

創建一個類並使其實現接口HandlerInterceptor

接口提供了一個請求的三個週期的攔截方法

在controller之前,返回true則放行,false反之,handler包含處理請求的controller類以及其方法

boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
 在controller接受請求之後,contorller渲染視圖之前,如果發生異常就不執行了,可對ModelAndView操作

void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
 在controller處理全部完成之後,ex參數包含處理期間發生的異常,但僅為未被全局捕獲的異常

void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)

  public class TheInterceptor 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");    }  }

 

編寫完成後需要將其註冊進處理棧中才會生效, 創建WebMvcConfigurer的實現類

  @Configuration  public class WebConfig implements WebMvcConfigurer {    @Override    public void addInterceptors(InterceptorRegistry registry) {      registry.addInterceptor(new MyInterceptor())          // 需要攔截的路徑,默認全部攔截          .addPathPatterns("/test1")          // 需要排除的路徑          .excludePathPatterns("/test2");    }  }

 

                                                       

   


[niceskyabc ] Spring Boot編寫攔截器教程實例解析已經有230次圍觀

http://coctec.com/docs/java/show-post-239537.html