SpringMvc框架——【深入】SpringMVC 的运行流程:从客户端发送请求request到springMvc框架返回响应response的全流程分析 & DispatcherServlet

目录

  • Spring Web MVC 框架
  • DispatcherServlet简介
  • 图解springMvc全流程

Spring Web MVC 框架

Spring Web MVC 框架提供了模型-视图-控制器架构和现成的组件,可用于开发灵活且松散耦合的 Web 应用程序。MVC 模式导致分离应用程序的不同方面(输入逻辑、业务逻辑和 UI 逻辑),同时在这些元素之间提供松散耦合。

  • Model 封装了应用程序数据,一般来说,它们将由 POJO 组成。
  • View 负责渲染模型数据,一般来说,它生成客户端浏览器可以解释的 HTML 输出。
  • Controller负责处理用户请求和构建合适的模型,并将其传递给视图进行渲染。

DispatcherServlet简介

Spring Web 模型-视图-控制器 (MVC) 框架是围绕处理所有 HTTP 请求和响应的 DispatcherServlet 设计的。 Spring Web MVC DispatcherServlet 的请求处理工作流程如下图所示。

SpringMvc框架——【深入】SpringMVC 的运行流程:从客户端发送请求request到springMvc框架返回响应response的全流程分析 & DispatcherServlet_第1张图片
以下是对应于对 DispatcherServlet 的传入 HTTP 请求的事件序列 −

  • 收到 HTTP 请求后,DispatcherServlet 会咨询 HandlerMapping 以调用适当的 Controller。
  • 控制器接受请求并根据使用的 GET 或 POST 方法 调用适当的服务方法。服务方法将根据定义的业务逻辑设置模型数据,并将视图名称返回给 DispatcherServlet。
  • DispatcherServlet 将获得 ViewResolver 的帮助来获取请求的定义视图。
  • 一旦视图完成,DispatcherServlet 将模型数据传递给视图,最终在浏览器上呈现。

上述所有组件,即 HandlerMapping、Controller 和 ViewResolver 都是 WebApplicationContext 的一部分,它是普通 ApplicationContext 的扩展,具有 Web 应用程序所需的一些额外功能。

图解springMvc全流程

在这里插入图片描述

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

(2)DispatcherServlet的作用是将请求分发到不同的处理器:DispatcherServlet接收到这个请求后,根据请求的信息(包括URL、HTTP方法、请求报文头、请求参数、Cookies等)及HandlerMapping的配置找到处理该请求的处理器(Handler);

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

(4)当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过HandlerAdapter对Handleri进行封装,再以统一的适配器接口调用Handler;HandlerAdapter是Spring MVC框架级接口,顾名思义,HandlerAdapter是一个适配器,它用统一的接口对各种Handler方法进行调用;

(5)处理器Handler完成业务逻辑的处理后,将返回一个ModelAndView给DispatcherServlet,其中ModelAndView包含了视图逻辑名和模型数据信息,ModelAndView顾名思义,包含了数据模型以及相应的视图的信息;

(6)ModelAndView中包含的是"逻辑视图名”而非真正的视图对象,DispatcherServlet借由视图解析器ViewResolver完成逻辑视图名到真实视图对象的解析工作;

(7)当得到真正的视图对象后,DispatcherServlet会利用视图对象对模型数据进行渲染;

(8)客户端得到响应,可能是一个普通的HTML页面,也可以是XML或JSON字符串,还可以是一张图片或者一个PDF文件;

SpringMvc框架——【深入】SpringMVC 的运行流程:从客户端发送请求request到springMvc框架返回响应response的全流程分析 & DispatcherServlet_第2张图片

你可能感兴趣的:(SpringBoot,spring,servlet,java)