美文网首页
DispatcherServlet.doDispatch()分析

DispatcherServlet.doDispatch()分析

作者: 叶小松_ea46 | 来源:发表于2020-06-17 16:25 被阅读0次

该方法是处理请求的核心方法,所有请求都会走这个方法

其内部根据HandlerMapping找到映射,

根据HandlerAdapter找到适配器并调用Handler

根据ViewResolver和view返回

#### 开始

1. 请求来的时候根据按道理是根据url获取对应的控制器,但是返回的是HandlerExecutionChain

在HandlerExecutionChain中 可以看到其中包括控制器(handler)和拦截器(interceptors)

在拦截器中 有三个方法 afterCompletion() postHandler() preHandler()

2. 第二步

根据HandlerExecutionChain中的handler获取对应适配器

3. 执行调用handler

ha是适配器,其调用handle方法就是通过反射调用真正的控制器,返回ModeAndView对象

在调用handle之前会调用HandlerExecutionChain的前置处理方法preHandler()

在调用handle之后调用HandlerExecutionChain的后置处理方法postHandler()

在finally中可以看到,直接调用HandlerExecutionChain的afterCompletion() 所以不管是否报错,都会执行该方法.

4. 得到ModeAndView以后通过processDispatchResult()方法对ModeAndView进行处理,如果有异常 那么将异常封装成dispatchException 传入该方法中

先判断是否有异常,如果没有并且ModeAndView不为空 调用render()方法

在方法中判断viewName是否为空 如果是空直接从ModeAndView中直接getView,如果不为空 调用resolveViewName

在resolveViewName中 通过ViewResolver组件 通过viewName获取对应的View进行返回

最后通过view.render解析成html返回

相关文章

  • DispatcherServlet.doDispatch()分析

    该方法是处理请求的核心方法,所有请求都会走这个方法 其内部根据HandlerMapping找到映射, 根据Hand...

  • 常用数据分析方法

    对比分析(现状分析) 趋势分析(预测分析) 矩阵关联分析 分组分析(原因分析-分布情况) 漏斗...

  • 零售业大数据分析

    零售业数据分析包括: 财务分析销售分析商品分析顾客分析供应商分析人员分析 1 财务分析 1)分析企业的财务状况,了...

  • 分析分析分析

    新工作第三天,沒有前兩天覺得那麼難熬。也不是難熬,不過是有些覺得無所事事。今天用SQL導出了工作的數據,然後下午學...

  • 用数据驱动产品和运营 之 数据分析方法

    数据分析方法 多维事件分析 漏斗分析 留存分析 行为序列分析 A/B测试 用户分群 (一)数据分析——多维事件分析...

  • 9种常用的数据分析方法

    公式拆解、对比分析、A/Btest、象限分析、帕累托分析、漏斗分析、路径分析、留存分析、聚类分析 一、公式拆解 所...

  • 数据分析

    数据分析基本方法 对比分析(横向对比纵向对比) 趋势分析 象限分析 交叉分析 数据分析框架_AARRR分析 逻辑分...

  • OpenCV-Python学习(十):图像滤波之傅里叶变换

    滤波分析又分为 时域分析、频域分析: 时域分析: 直接对信号本身进行分析。 频域分析: 对信号的变化快慢进行分析。...

  • 7张脑图讲透如何做好品牌、价格、渠道、市场、机会分析

    1、品牌分析: 2、价格分析 3、广告分析 4、渠道分析: 5、市场机会分析: 6、满意度分析 7、市场细分分析 ...

  • 谁说菜鸟不懂数据分析-读书整理

    数据分析简述: 数据分析分类及作用: 分类:描述性分析,探索性分析,验证性分析 作用:现状分析,原因分析,...

网友评论

      本文标题:DispatcherServlet.doDispatch()分析

      本文链接:https://www.haomeiwen.com/subject/mqusxktx.html