SpringMVC的运行流程

1,所有请求,前端控制器(DispatcherServlet)收到请求,调用doDispatch进行处理
2,根据handlerMapping中保存的请求映射信息找到处理当前请求的处理器执行链(包含拦截器)
3,根据当前处理器,找到它的HandlerAdapter(适配器)
4,拦截器的preHandle先执行
5,适配器执行目标方法,并返回ModelAndView

5.1,ModelAttribute注解表注的方法提前运行
5.2,执行目标方法的时候(确定目标方法要用的参数)
5.2.1,有注解:
5.2.2,没注解:看是否Model,Map以及其他的,如果是自定义类型1)隐含模型中看有没有2)如果没有,再看是否SessionAttributes表注的属性,如果拿不到抛异常3)如果都不是,利用反射创建对象
6,拦截器的PostHandle
7,处理结果(页面渲染)

7.1如果有异常,使用异常解析器处理,处理完后返回ModelAndView
7.2调用render进行渲染
7.2.1视图解析器根据视图名得到视图对象
7.2.2视图对象调用render方法
7.2.3执行拦截器的afterCompletion
SpringMVC的运行流程