SpringMVC运行流程
图一:
图二:
总结:
1、 用户发起请求到前端控制器;
2、 前端控制器没有处理业务逻辑的能力,需要找到具体的模型对象处理(Handler),到处理器映射器中查找Handler对象;
3、 HandlerMapping返回执行链,包含了2部分内容
a) Handler对象
b) 拦截器数组(list)
4、 前端控制器通过适配器包装后执行Handler对象;
5、 处理业务逻辑
6、 Handler处理完业务逻辑,返回ModelAndView对象,其中view是视图名称,不是真正的视图对象;
7、 将ModelAndView返回到前端控制器;
8、 前端控制器通过视图名称到视图解析器中查找视图;
9、 视图解析器返回真正的视图对象(View);
10、 前端控制器根据模型数据和视图对象,进行视图渲染;
11、 返回渲染后的视图(html/json/xml)返回
12、 给用户产生响应
springmvc默认的配置
使用注解驱动后的推荐配置
SpringMVC源码解析
①.由HandlerMapping 获取HandlerExecutionChain 对象
②.获取适配器对象
③.调用拦截器的前置方法
④.调用目标Handler的目标方法,得到ModelAndView
⑤.调用拦截器后置方法
⑥.处理结果,是否有异常
⑦.拦截器的完成方法
Spring MVC WEB层容器可以作为“业务层”Spring容器的子容器:即web层容器可以访问引用业务层容器的bean,而业务层容器却访问不到WEB层容器的bean
springmvc为子容器,spring为父容器。
子容器可以访问到父容器的bean,反之不可以访问到