12.17 Spring MVC 运行流程

  1. 所有请求,前端控制器(DispatcherServlet)收到请求,调用doDispatch进行处理
  2. 根据HandlerMapping中保存的请求映射信息找到,处理当前请求的处理器执行连
  3. 根据当前处理器找到他的HandlerAdapter
  4. 拦截器preHandle先执行
  5. 适配器执行目标方法(返回ModelAndView)
    1. ModelAttribute注解标注的方法提前运行
    2. 执行目标方法的时候 确定目标方法用的参数
    3. 有注解:
    4. 没有注解 1. 看是否Model Map以及其他的 2. 如果是自定义类型 再看是否有SessionAttribute标注的属性,如果是Session中拿 拿不到就抛异常 3. 都不是的话利用反射创建对象
  6. 拦截器的postHandle执行
  7. 处理结果(页面渲染流程)
    1. 如果有异常 使用异常解析器处理异常,处理完还返回ModelAndView
    2. 调用render进行页面渲染

多数都在do dispatch里面转来转去

-------------文章已结束~感谢您的阅读-------------
穷且益坚,不堕青云之志。