- 所有请求, 前端控制器DispatchServlet收到请求调用doDispatch进行处理
- 根据HandlerMapping中保存的映射信息, 找到处理当前请求的处理器执行链(包含拦截器)
- 根据当前处理器找到他的HandlerAdapter
- 拦截器的preHandler先执行
- 适配器执行目标方法, 并返回ModelAndView
- ModelAttribute注解标注的方法提前运行
- 执行目标方法的时候(确定目标方法用的参数)
- 有注解
- 没注解:
- 看会否是Model, Map以前其他的自定义类型
- 如果是自定义类型
- 从隐含模型中看有没有, 有就从隐含模型中拿
- 如果没有, 再看是否SeesionAttributes标注的属性, 如果是就从Session中拿, 如果拿不到就会抛异常
- 都不是, 就利用反射创建对象
- 拦截器的postHandle执行
处理结果(页面渲染)
- 如果有异常, 使用异常解析器处理异常后返回MV
调用render金星页面渲染
- 视图解析器根据视图名得到视图对象
- 视图对象调用render方法
- 执行拦截器的afterCompletion

