1. 所有请求, 前端控制器DispatchServlet收到请求调用doDispatch进行处理
    2. 根据HandlerMapping中保存的映射信息, 找到处理当前请求的处理器执行链(包含拦截器)
    3. 根据当前处理器找到他的HandlerAdapter
    4. 拦截器的preHandler先执行
    5. 适配器执行目标方法, 并返回ModelAndView
    6. ModelAttribute注解标注的方法提前运行
    7. 执行目标方法的时候(确定目标方法用的参数)
    8. 有注解
    9. 没注解:
    10. 看会否是Model, Map以前其他的自定义类型
    11. 如果是自定义类型
    12. 从隐含模型中看有没有, 有就从隐含模型中拿
    13. 如果没有, 再看是否SeesionAttributes标注的属性, 如果是就从Session中拿, 如果拿不到就会抛异常
    14. 都不是, 就利用反射创建对象
    15. 拦截器的postHandle执行
    16. 处理结果(页面渲染)

      1. 如果有异常, 使用异常解析器处理异常后返回MV
      2. 调用render金星页面渲染

        1. 视图解析器根据视图名得到视图对象
        2. 视图对象调用render方法
      3. 执行拦截器的afterCompletion

    11.SpringMVC的运行流程 - 图1