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