目录
一.SpringMVC执行流程解析
- 根据request请求URL,循环遍历HandlerMapping列表获取包含Handler和HandlerInterceptor的HandlerExecutionChain对象;
- 然后通过HandlerExecutionChain对象内部Handler实例循环遍历HandlerAdapter列表获取适配器对象;
- 执行HandlerExecutionChain内部的所有拦截器HandlerInterceptor的preHandle方法,成功返回true,返回false直接return;
- 如果拦截器preHandle执行成功,再使用HandlerAdapter适配器去执行Handler的业务逻辑并返回一个ModelAndView对象;
- 执行所有拦截器postHandle方法;
- 通过ModelAndView对象的view属性的值(实际上就是viewName)从ViewResolver集合中获取View对象;
- 将ModelAndView中model数据渲染到View返回HTML基于response输出到终端;
- 执行所有拦截器的afterCompletion方法;
- 上述执行过程中如果出现未主动try catch的异常,都将被HandlerExceptionResolver捕获处理。
二.体系结构UML