亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

handlerexecutionchain類的作用有哪些

發布時間:2020-11-25 16:39:53 來源:億速云 閱讀:338 作者:Leah 欄目:編程語言

handlerexecutionchain類的作用有哪些?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

HandlerExecutionChain類

/*
 * 處理器執行鏈由處理器對象和攔截器組成。
 */
public class HandlerExecutionChain {

下面是類的部分屬性。

private final Object handler; //處理器對象。

  private HandlerInterceptor[] interceptors; //攔截器數組

  private List<HandlerInterceptor> interceptorList; //攔截器列表
/**
   * Apply preHandle methods of registered interceptors.
   * @return {@code true} if the execution chain should proceed with the
   * next interceptor or the handler itself. Else, DispatcherServlet assumes
   * that this interceptor has already dealt with the response itself.
   * 執行已經注冊的攔截的 preHandle()方法。如果返回true,則執行鏈可以執行下一個攔截器的preHandle()方法或 handler 自身。
   * 否則,
   */
  boolean applyPreHandle(HttpServletRequest request, HttpServletResponse response) throws Exception {
    HandlerInterceptor[] interceptors = getInterceptors();
    if (!ObjectUtils.isEmpty(interceptors)) {
      for (int i = 0; i < interceptors.length; i++) {
        HandlerInterceptor interceptor = interceptors[i];
        if (!interceptor.preHandle(request, response, this.handler)) {
          triggerAfterCompletion(request, response, null);
          return false;
        }
        this.interceptorIndex = i;
      }
    }
    return true;
  }
/*
   * 執行已經注冊的攔截器 postHandle()方法。
   */
  void applyPostHandle(HttpServletRequest request, HttpServletResponse response, ModelAndView mv) throws Exception {
    HandlerInterceptor[] interceptors = getInterceptors();
    if (!ObjectUtils.isEmpty(interceptors)) {
      for (int i = interceptors.length - 1; i >= 0; i--) {
        HandlerInterceptor interceptor = interceptors[i];
        interceptor.postHandle(request, response, this.handler, mv);
      }
    }
  }
/**
   * 這個方法只會執行preHandle()方法已經成功執行并且返回true的攔截器中的postHandle()方法。
   */
  void triggerAfterCompletion(HttpServletRequest request, HttpServletResponse response, Exception ex)
      throws Exception {

    HandlerInterceptor[] interceptors = getInterceptors();
    if (!ObjectUtils.isEmpty(interceptors)) {
      for (int i = this.interceptorIndex; i >= 0; i--) {
        HandlerInterceptor interceptor = interceptors[i];
        try {
          interceptor.afterCompletion(request, response, this.handler, ex);
        }
        catch (Throwable ex2) {
          logger.error("HandlerInterceptor.afterCompletion threw exception", ex2);
        }
      }
    }
  }

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鱼台县| 右玉县| 桐梓县| 盐池县| 道孚县| 三河市| 宁远县| 精河县| 福清市| 岳阳县| 互助| 绥宁县| 秀山| 青铜峡市| 吉木乃县| 拜城县| 金昌市| 栖霞市| 彭州市| 弥渡县| 临邑县| 延津县| 南涧| 新野县| 新乐市| 迭部县| 资中县| 玉山县| 康保县| 文山县| 柳林县| 开封县| 白朗县| 龙岩市| 苗栗县| 崇义县| 新泰市| 连州市| 绵阳市| 五台县| 长子县|