**图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。**
![img](https://img-blog.csdnimg.cn/20190828235959761.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Jhb2xpbmd5ZQ==,size_16,color_FFFFFF,t_70)
**1、DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。**
**我们假设请求的url为 : http://localhost:8080/SpringMVC/hello**
**如上url拆分成三部分:**
**http://localhost:8080服务器域名**
**SpringMVC部署在服务器上的web站点**
**hello表示控制器**
**通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。**
**2、DispatcherServlet调用HandlerMapper,HandlerMapper为处理器映射器,来映射设置的控制器**
**3、HandlerExecution表示具体的控制器,也就是hello**
**4、将解析后的控制器传给DispatcherServlet**
**5、DispatcherServlet将控制器传递给HandlerApdater,HandlerApdater为处理器适配器,来通过bean找到对应的controller**
**6、去执行对应的controller**
**7、返回controller执行后的模型视图(ModelAndView)给HandlerApdater,ModelAndView**
**8、HandlerApdater将对应的视图逻辑名或者模型传递给DispatcherServlet**
**9、DispatcherServlet调用ViewResolver(视图解析器)来解析传递过来的视图逻辑名,通过前缀和后缀进行解析适配**
**10、将解析好的视图逻辑名交给DispatcherServlet**
**11、DispatcherServlet根据解析好的结果调用具体的视图**
**12、展示给用户**