#认识 Spring MVC#

166 阅读4分钟

认识 Spring MVC

Spring MVC 全称 Spring Web MVC,是一种基于 Java 实现的 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 SpringFrameWork 的后续产品。

对于 SpringFrameWork 的架构我在之前的文章也做过介绍juejin.cn/post/711690…

我们知道 SpringMVC 目前已经成为最主流的框架之一,基于 MVC 设计模式,通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口,同时还支持 RESTful 编程风格的请求。同 Structs2 都属于表现层框架,主要职责就是处理前端的 HTTP 请求(接收请求、返回响应、跳转页面)。

SpringMVC 的本质可以认为是对 Servlet 的封装,简化了我们 Servlet 的开发。

MVC 体系架构

在介绍 Spring MVC 的时候我们提到了 MVC 设计模型。那什么是 MVC 设计模型呢?在介绍该理论之前,我们先了解下什么是三层架构。

三层架构

我们的开发架构一般都是基于两种形式,一种是 C/S 架构(即客户端/服务器),另一种是 B/S 架构(即浏览器/服务器)。在 JavaEE 开发中,几乎都是基于 B/S 架构的开发。在 B/S 架构中,系统标准的三层架构包括:表现层、业务层、持久层。

三层架构中,每一种都各司其职:

  • 表现层

我们常说 Web 层,其主要负责接收客户端请求,向客户端响应结果,通常客户端使用 HTTP 协议发送请求到 Web 层,Web 层需要接收 HTTP 请求,完成 HTTP 响应。

表现层包含:展示层、控制层。展示层负责结果的中展示,控制层负责接收请求。其依赖业务层,当表现层接收到客户端发来的请求时,一般会调研业务层进行业务处理并将处理结果响应给客户端。

  • 业务层

业务层就是我们常说的 Service 层,负责处理业务逻辑,Web 层依赖业务层,业务层不依赖 Web 层而依赖持久层,如果对数据进行持久化操作时还需要保证事务的一致性。

  • 持久层

我们通常称之为 Dao 层,负责数据的持久化,包括数据库和数据访问层,数据库是对数据进行持久化的载体而数据访问层是业务层和持久层交互的接口,业务层需要通过数据访问层将数据持久化到数据库中。

通俗的来说,持久层就是和数据库交互,对数据库表进行增删改查。

MVC 设计模式

全称是 Model View Controller,模型-视图-控制器的缩写。这是一种用于设计创建 Web 应用程序表现层的模式。其中:

  • Model(模型)

模型包含业务模型和数据模型,业务模型用于处理业务,数据模型用于封装数据。

  • View(视图)

这里的视图指的就是 jsp 或 html,主要用于展示数据的。视图通常是依据于模型数据创建的。

  • Controller(控制器)

控制器是应用程序中处理用户交互的部分,主要作用是处理程序逻辑的。

MVC 主张每一层只编写自己的部分,不编写任何其它的代码,为了解耦,解耦是为了维护方便和分工协作。

Spring MVC 的工作流程

简单介绍下 Sprng MVC 的工作流程,如同所示:

  1. ⽤户发送请求⾄前端控制器 DispatcherServlet
  2. DispatcherServlet 收到请求调⽤ HandlerMapping 处理器映射器
  3. 处理器映射器根据请求的 URL 找到具体的 Handler(后端控制器),⽣成处理器对象及处理器拦截器⼀并返回 DispatcherServlet (如果有则⽣成)
  4. DispatcherServlet 调⽤ HandlerAdapter处理器适配器去调⽤ Handler
  5. 处理器适配器执行 Handler
  6. Handler 执⾏完成给处理器适配器返回 ModelAndView
  7. 处理器适配器向前端控制器返回 ModelAndView,ModelAndView 是 SpringMVC 框架的⼀个 底层对象,包括 Model 和 View
  8. 前端控制器请求视图解析器去进⾏视图解析,根据逻辑视图名来解析真正的视图
  9. 视图解析器向前端控制器返回 View
  10. 前端控制器进⾏视图渲染,就是将模型数据(在 ModelAndView 对象中)填充到 request 域
  11. 前端控制器向⽤户响应结果