SpringMVC的执行流程和工作原理解析

简介

SpringMVC也叫Spring web mvc,属于表现层的框架。SpringMVC是Spring框架的一部分,Spring框架包含多种结构,如下图所示为Spring核心模块。我们可以看到SpringMVC属于Spring的Web模块部分。
SpringMVC的执行流程和工作原理解析

SpringMVC执行流程

下图为一个较完整的SpringMVC工作执行流程图。
SpringMVC的执行流程和工作原理解析

执行流程

  1. 浏览器提交请求到前端控制器DispatcherServlet;
  2. 前端控制器收到请求后,将请求转给处理器映射器HandlerMapping;
  3. HandlerMapping会根据请求,找到处理该请求的处理器Handler,将其封装为处理器执行链返回给前端控制器,执行链包含一个处理器对象和一或多个拦截器;
  4. DispatcherServlet根据处理器执行链的处理器,能够找到其对应的处理器适配器HandlerAdapter;
  5. HandlerAdapter调用相应的处理器Handler,让我们写的具体的Controller方法执行;
  6. Controller处理完后返回ModelAndView给HandlerAdapter;
  7. HandlerAdapter将ModelAndView返回给前端控制器;
  8. DispatcherServlet调用视图解析器ViewResovler处理ModelAndView;
  9. 将逻辑视图解析后返回视图对象View;
  10. DispatcherServlet对View进行渲染视图(即将模型数据model填充至视图中);
  11. 将页面响应给浏览器。

组件说明

  • 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等。一般需要我们根据业务需求开发具体的页面。