激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 對handlerexecutionchain類的深入理解

對handlerexecutionchain類的深入理解

2020-11-27 10:43Java教程網(wǎng) Java教程

下面小編就為大家?guī)硪黄獙andlerexecutionchain類的深入理解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

HandlerExecutionChain比較簡單,好理解。

?
1
2
3
4
/*
 * 處理器執(zhí)行鏈由處理器對象和攔截器組成。
 */
public class HandlerExecutionChain {

下面是類的部分屬性。

?
1
2
3
4
5
private final Object handler; //處理器對象。
 
  private HandlerInterceptor[] interceptors; //攔截器數(shù)組
 
  private List<HandlerInterceptor> interceptorList; //攔截器列表
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
   * 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.
   * 執(zhí)行已經(jīng)注冊的攔截的 preHandle()方法。如果返回true,則執(zhí)行鏈可以執(zhí)行下一個攔截器的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;
  }
?
1
2
3
4
5
6
7
8
9
10
11
12
/*
   * 執(zhí)行已經(jīng)注冊的攔截器 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);
      }
    }
  }
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
   * 這個方法只會執(zhí)行preHandle()方法已經(jīng)成功執(zhí)行并且返回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);
        }
      }
    }
  }

以上這篇對handlerexecutionchain類的深入理解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 伊人欧美 | 日韩av片网站 | 免费一级a毛片免费观看 | 91看片成人 | 国产午夜精品一区二区三区免费 | 香蕉黄色网| 中文字幕精品久久 | 欧美 日韩 三区 | 蜜桃视频在线免费播放 | 久久精品视频16 | 亚洲成人在线视频网站 | 国产精品99精品 | 欧美日韩高清在线观看 | 老子午夜影院 | 91精品国产日韩91久久久久久360 | 未成年人在线观看 | 一本色道精品久久一区二区三区 | 免费高潮在线国 | 日韩黄色av| 黑人一级片视频 | 狼人狠狠干 | 久久久麻豆| 亚洲一级电影在线观看 | 91精品国产777在线观看 | 手机国产乱子伦精品视频 | 免费国产羞羞网站视频 | 国产精品久久久久久久午夜片 | 毛片视频网址 | 91小视频在线观看免费版高清 | 欧美精品欧美 | 911色_911色sss主站色播 | 深夜福利视频绿巨人视频在线观看 | 97人操| 理论片中文字幕 | 国语自产免费精品视频在 | 黄色av片在线观看 | 18视频网站在线观看 | 成人免费网站在线观看 | 中文字幕激情视频 | 中文字幕在线免费看 | 激情亚洲一区二区三区 |