Spring MVC的执行流程(有图有真相)

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC的执行流程(有图有真相)相关的知识,希望对你有一定的参考价值。

文章目录

Spring MVC的执行流程

我们先回顾一下MVC的概念,便于我们学习Spring MVC的执行流程

MVC

MVC是一种设计模式,在这种模式下软件被分为三层,即Model(模型)、View(视图)、
Controller(控制器)。

  • Model代表的是数据
  • View代表的是用户界面
  • Controller代表的是数据的处理逻辑,它是Model和View这两层的桥梁。

将软件分层的好处是,可以将对象之间的耦合度降低,便于代码的维护。

Spring MVC

Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。

详细介绍可以参考查看官方文档:https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-web

围绕着SpringMVC执行流程来分析:Spring的web框架围绕DispatcherServlet [ 调度Servlet ] 设计

DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁;

因为SpringMVC好 , 简单 , 便捷 , 易学 , 天生和Spring无缝集成(使用SpringIoC和Aop) , 使用约定优于配置 . 能够进行简单的junit测试 . 支持Restful风格 .异常处理 , 本地化 , 国际化 , 数据验证 , 类型转换 , 拦截器 等等…所以我们要学习它,很重要的。

执行流程

执行流程图如下所示:

  1. 整个过程开始于客户端发出的一个HTTP请求,Web应用服务器接收到这个请求。如果匹配DispatcherServlet的请求映射路径,则Web容器将该请求转交给DispatcherServlet处理。

    DispatcherServlet的作用是将请求分发到不同的处理器

  2. DispatcherServlet接收到这个请求后,将根据请求的信息(包括URL、HTTP方法、请求报文头、请求参数、Cookie等)及HandlerMapping的配置找到处理请求的处理器(Handler)。

    可将HandlerMapping看做路由控制器,将Handler看做目标主机。值得注意的是,在Spring MVC中并没有定义一个Handler接口,实际上任何一个Object都可以成为请求处理器。

  3. 当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过
    HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。

    HandlerAdapter是Spring MVC框架级接口,顾名思义,HandlerAdapter是一个适配器,它用统一的接口对各种Handler方法进行调用

  4. 处理器完成业务逻辑的处理后,将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和模型数据信息。

  5. ModelAndView中包含的是“逻辑视图名”而非真正的视图对象,DispatcherServlet借由
    ViewResolver完成逻辑视图名到真实视图对象的解析工作。

  6. 当得到真实的视图对象View后,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。

  7. 最终客户端得到的响应消息可能是一个普通的html页面,也可能是一个XML或JSON串,甚至是一张图片或一个PDF文档等不同的媒体形式。

以上是关于Spring MVC的执行流程(有图有真相)的主要内容,如果未能解决你的问题,请参考以下文章

从请求管道深入剖析HttpModule的实现机制,有图有真相

async ,await 有图有真相

教你 21 天学会 C++(有图有真相)

C#项目间循环引用的解决办法,有图有真相

孙武玩《魔兽》?有图有真相

Qt中QGraphics类坐标映射关系详解(有图有真相,实例讲解)