全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

对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);
        }
      }
    }
  }

以上这篇对handlerexecutionchain类的深入理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# handlerthread的理解  # 拦截器  # 给大家  # 只会  # 希望能  # 这篇  # 小编  # 大家多多  # 器中  # preHandle  # interceptors  # lt  # List  # gt  # interceptorList  # Apply  # chain  # execution  # interceptor  # proceed  # true 


相关文章: 韩国服务器如何优化跨境访问实现高效连接?  网站制作网站,深圳做网站哪家比较好?  SQL查询语句优化的实用方法总结  微信小程序 input输入框控件详解及实例(多种示例)  如何快速搭建高效服务器建站系统?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  专业网站建设制作报价,网页设计制作要考什么证?  如何快速搭建高效香港服务器网站?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  网站企业制作流程,用什么语言做企业网站比较好?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  定制建站如何定义?其核心优势是什么?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  招贴海报怎么做,什么是海报招贴?  如何快速完成中国万网建站详细流程?  建站OpenVZ教程与优化策略:配置指南与性能提升  专业商城网站制作公司有哪些,pi商城官网是哪个?  北京企业网站设计制作公司,北京铁路集团官方网站?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  C#怎么使用委托和事件 C# delegate与event编程方法  C#如何在一个XML文件中查找并替换文本内容  如何快速搭建高效简练网站?  如何选择网络建站服务器?高效建站必看指南  详解jQuery中基本的动画方法  建站之星如何快速解决建站难题?  制作营销网站公司,淘特是干什么用的?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  已有域名和空间如何搭建网站?  如何在万网自助建站平台快速创建网站?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  C#如何使用XPathNavigator高效查询XML  广州营销型建站服务商推荐:技术优势与SEO优化解析  如何在宝塔面板中修改默认建站目录?  如何在IIS服务器上快速部署高效网站?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  如何规划企业建站流程的关键步骤?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  油猴 教程,油猴搜脚本为什么会网页无法显示?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  如何选购建站域名与空间?自助平台全解析  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。