《SpringMVC -1 - 归档 、 HelloWorld(快速搭建纯SpringMVC)》 也有说了运行流程,但是那个太简单了。

如下:


下面看一个完整的:

完整的图:

# 源码

DispatcherServlet 类的 doDispatch 方法的几个关键类,熟悉整个流程

## 1、hanlder ?

处理器

处理器调用链,包含了***、handler和目标方法

进去 handler

handlerMapping
定义了请求到处理器的映射

  1. <mark>没有配置 下面注解的 + 没有路径映射的情况</mark>

    handlerMappings 的情况如下

    如果 请求路径没有对应的映射,handlerMapping循环后返回的 handler 为null
  1. <mark>加了下面注解 + 没有对应路径映射的全抗</mark>

    handlerMappings 的情况如下

    明显<mark>多了 SimpleUrlHandlerMapping</mark> , 这个是做静态资源请求的 - 看这篇文章
    这时候,当其他映射没有成功,会到 SimpleUrlHandlerMapping映射,把请求 当成是 <mark>静态资源</mark> 请求
    (我们知道,DefaultServletHttpRequestHandler 是处理静态资源的)
  1. <mark>加了注解 + 有对应映射的情况</mark>(也就是最常见的情况)
    handler 为 RequestMappingHandlerMapping

## 2、handlerAdapter

适配器


可以看到,下面,<mark>handlerAdapter包含了很多Resolver(解析器)</mark>

## 3、preHandle

***

## 4、 ModelAndView

模型或视图

## PostHandle

同样是*** , 看上面

## processDispatchResult

处理视图

processDispatchResult - 如果有异常

交给 HandlerExceptionResolver 处理

processDispatchResult - 正常

render 处理视图

processDispatchResult - render

没有异常
⇒ 首先找到 view 对象 ⇒ 使用视图解析器 找view 对象

processDispatchResult - render - view.render

没有异常
⇒ 首先找到 view 对象 ⇒ 使用视图解析器 找view 对象
⇒ ⇒ 渲染视图




下面。设置转发

下面,forward(完)