SpringMVC的执行流程
一、什么是SpringMVC?
Spring MVC 是一个用于构建 Web 应用程序的 Java 框架。它遵循模型-视图-控制器设计模式。它实现了核心 spring 框架的所有基本功能,如控制反转、依赖注入。Spring MVC在DispatcherServlet的帮助下为在Spring框架中使用MVC提供了一个优雅的解决方案。在这里,DispatcherServlet是一个接收传入请求并将其映射到正确资源(如控制器、模型和视图)的类。
SpringMVC也是spring的一个后续产品,换句话说就是在spring原有的基础上,又提供了web应用的MVC模块,其中M表示Model、V表示View、C表示Controller,下图便是SpringMVC的简单流程图。

这里简单对上图的几个模块进行一个解释:
Model:模型包含应用程序的数据。数据可以是单个对象或对象的集合。
View:视图以特定格式表示提供的信息。一般使用JSP+JSTL来创建视图页面。虽然spring也支持Apache Velocity、Thymeleaf和FreeMarker等其他视图技术。
Controller:控制器包含应用程序的业务逻辑。在这里,@Controller 注释用于将类标记为控制器。
Front Controller:在 Spring Web MVC 中,DispatcherServlet 类用作前端控制器。它负责管理 Spring MVC 应用程序的流程。
二、SpringMVC的工作流程

可以看到这里分为大致11个步骤,这11个步骤的任务是这样的:
1、用户发送请求(url)至前端控制器DispatcherServlet;
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器来获取handler;
3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;
4、DispatcherServlet调用HandlerAdapter处理器适配器;
5、 HandlerAdapter经过适配调用具体的处理器(Handler / Controller,也叫后端控制器);
6、Controller执行完成返回ModelAndView;
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet;
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器进行解析;
9、 ViewReslover解析后返回具体View,这个view不是完整的,仅仅是一个页面(视图)名字,且没有后缀名;
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中);
11、 DispatcherServlet响应用户。
图中可以看到,DispatcherServlet(前端控制器)占据了很大的一部分,事实也是这样,springMVC中,DispatcherServlet(其本质就是一个Serverlet)是他的核心。

浙公网安备 33010602011771号