SpringMVC的执行流程和工作原理解析
简介
SpringMVC也叫Spring web mvc,属于表现层的框架。SpringMVC是Spring框架的一部分,Spring框架包含多种结构,如下图所示为Spring核心模块。我们可以看到SpringMVC属于Spring的Web模块部分。
SpringMVC执行流程
下图为一个较完整的SpringMVC工作执行流程图。
执行流程
- 浏览器提交请求到前端控制器DispatcherServlet;
- 前端控制器收到请求后,将请求转给处理器映射器HandlerMapping;
- HandlerMapping会根据请求,找到处理该请求的处理器Handler,将其封装为处理器执行链返回给前端控制器,执行链包含一个处理器对象和一或多个拦截器;
- DispatcherServlet根据处理器执行链的处理器,能够找到其对应的处理器适配器HandlerAdapter;
- HandlerAdapter调用相应的处理器Handler,让我们写的具体的Controller方法执行;
- Controller处理完后返回ModelAndView给HandlerAdapter;
- HandlerAdapter将ModelAndView返回给前端控制器;
- DispatcherServlet调用视图解析器ViewResovler处理ModelAndView;
- 将逻辑视图解析后返回视图对象View;
- DispatcherServlet对View进行渲染视图(即将模型数据model填充至视图中);
- 将页面响应给浏览器。
组件说明
-
DispatcherServlet :
*调度器,也称前端控制器,在MVC架构中相当于C,即控制层,它是整个流程的控制中心,由它调用其它组件处理用户的请求,*调度器的存在降低了组件之间的耦合性,系统扩展性提高,由框架实现。 -
HandlerMapping :
处理器映射器,负责根据用户请求url找到要执行的Handler,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。由框架实现。 -
Handler :
处理器,Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。 -
HandlerAdapter :
处理器适配器,通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。由框架实现。 -
ViewResolver :
视图解析器,View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。由框架实现。 -
View :
视图,springmvc框架提供了很多的View视图类型的支持,包括:jsp、jstlView、freemarkerView、pdfView等。一般需要我们根据业务需求开发具体的页面。