SpringMvc架构流程

最近学完了mybtis,然后开始学习springMvc和mybatis的整合,所以先熟悉一下SpringMvc架构流程。

这是SpringMvc架构的流程图
(图片来自于网络,DispatcherServlet那里翻译成*处理器和前端处理器都可以,我们这里使用的前端处理器)
SpringMvc架构流程

可以总结说有一个中心和三个大件:
前端控制器是流程控制的中心;三个大组件分别是处理器映射器、处理器适配器和视图解析器。

下面我按照流程图的顺序说明架构流程:

  1. 用户发送请求给前端控制器
  2. 前端处理器收到用户请求以后调用处理器映射器
  3. 处理器映射器根据请求的url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成,没有就不生成)一并返回给前端控制器;
  4. 前端控制器通过处理器适配器调用处理器;
  5. 执行处理器(Controller,后端控制器);
  6. 处理器执行完成返回ModelAndView
  7. 处理器适配器将处理器的执行结果ModelAndView返回给前端处理器;
  8. 前端处理器将ModelAndView传给视图解析器
  9. 视图解析器解析后返回具体View;
  10. 前端处理器对View进行渲染视图(其实就是将模型数据填充到视图中);
  11. 前端处理器响应用户。

框图中的组件详细说明:

  1. DispatcherServlet:前端控制器
    用户请求到达前端控制器,它就相当于mvc模式中的controller,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。每个组件都通过前端控制器与其他组件进行交互。
  2. HandlerMapping:处理器映射器
    HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:实现接口方式,注解方式等。(个人觉得注解方式较为方便)
  3. Handler:处理器(开发)
    Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。
    handler需要处理用户的具体请求,所以需要我们进行开发它。
  4. HandlAdapter:处理器适配器
    通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
  5. View Resolver:视图解析器
    View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。
  6. View:视图(开发)
    springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。
    一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

相关细节补充:
(1)用户的请求离开浏览器来到前端控制器的时候,会带有用户所请求的内容,至少会包含用户请求的URL,这也是第三步,处理映射器找具体处理器的根据的url的来源。