1.1 三层架构和MVC

1.1.1 三层架构

三层架构是软件设计中经典的分层架构模式,其核心思想是将应用程序划分为三个职责明确的逻辑层次,实现 "高内聚,低耦合" 的设计目标。

  1. 表现层(Presentation Layer)
    • 直接与用户交互,负责接收用户输入并展示处理结果
    • 主要功能:请求接收、参数验证、响应处理、页面渲染
    • 技术实现:Servlet、html/vue、Spring MVC 等
  1. 业务逻辑层(Business Logic Layer)
    • 核心业务处理中心,实现业务规则和流程
    • 主要功能:业务逻辑处理、事务管理、权限控制、数据校验
    • 技术实现:纯 Java 类、Spring Bean 等
  1. 数据访问层(Data Access Layer)
    • 负责与数据源交互,执行数据的 CRUD 操作
    • 主要功能:数据库连接管理、SQL 执行、结果映射
    • 技术实现:JDBC、MyBatis、Hibernate 等

三层架构的调用关系是:表现层调用业务逻辑层,业务逻辑层调用数据访问层,各层之间通过接口交互,降低了系统的耦合度,便于维护和扩展。

1.1.2 MVC模型

MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种用于设计创建 Web 应用程序表现层的模式。MVC 中每个部分各司其职:

Model(模型):

通常指的就是我们的数据模型。作用一般情况下用于封装数据。

View(视图):

通常指的就是我们的 jsp 或者 html。作用一般就是展示数据的。

通常视图是依据模型数据创建的。

Controller(控制器):

是应用程序中处理用户交互的部分。作用一般就是处理程序逻辑的。

它相对于前两个不是很好理解,这里举个例子:

例如:

我们要保存一个用户的信息,该用户信息中包含了姓名,性别,年龄等等。

这时候表单输入要求年龄必须是 1~100 之间的整数。姓名和性别不能为空。并且把数据填充到模型之中。

此时除了 js 的校验之外,服务器端也应该有数据准确性的校验,那么校验就是控制器的该做的。

当校验失败后,由控制器负责把错误页面展示给使用者。

如果校验成功,也是控制器负责把数据填充到模型,并且调用业务层实现完整的业务需求。

1.2 SpringMVC 概述

Spring MVC 是 Spring 框架的 Web 模块,基于 MVC(Model-View-Controller)设计模式,用于构建灵活、松耦合的 Web 应用程序。

核心特点:

  • 基于组件的轻量级框架,易于集成和扩展
  • 强大的 URL 映射和参数绑定机制
  • 支持多种视图技术(JSP、Thymeleaf、FreeMarker 等)
  • 与 Spring 框架无缝集成,便于使用 Spring 的其他功能
  • 支持 RESTful 风格的 URL 设计
  • 提供拦截器机制,可实现权限控制、日志记录等横切功能
  • 支持国际化、数据验证、文件上传等 Web 开发常见需求

1.3 SpringMVC在三层架构中的位置

Spring MVC 属于三层架构中的表现层,是用户请求进入应用系统的入口点,主要负责:

客户端 → Spring MVC(表现层) → 业务逻辑层 → 数据访问层 → 数据库

Spring MVC 在三层架构中的具体职责:

  1. 接收客户端发送的 HTTP 请求
  2. 解析请求参数并进行验证
  3. 根据请求信息调用相应的业务逻辑层方法
  4. 接收业务逻辑层返回的数据
  5. 将数据封装并以合适的格式(HTML、JSON 等)响应给客户端

1.4 Spring MVC 执行原理

Spring MVC的执行流程大致如下:

1. 用户发送请求至前端控制器DispatcherServlet。

2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3. 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4. DispatcherServlet调用HandlerAdapter处理器适配器。

5. HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

6. Controller执行完成返回ModelAndView。

7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

9. ViewReslover解析后返回具体View。

10. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户。

1.5 SpringMVC 常用组件

1. 前端控制器:DispatcherServlet

用户请求到达前端控制器,它就相当于 MVC 模式中的 C(controller),DispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。DispatcherServlet本质上就是servlet。

2. 处理器映射器:HandlerMapping

HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

3. 处理器适配器:HandlerAdapter

通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

4. 处理器:Handler 【自定义的,类似于servlet】

它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由Handler 对具体的用户请求进行处理。

5. 视图解析器:View Resolver

View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。

6. ModelAndView

  • 封装处理结果(Model)和视图信息(View)的对象
  • Model:存储处理后的数据
  • View:指定要渲染的视图名称

7. 视图:View

SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView等。最常用的视图就是 jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面

总结: SpringMVC是一个基于组件开发的框架

一个中心三个基本点:SpringMVC提供的,不需要用户开发。

一个中心: 前端控制器: DispatcherServlet

三个基本点:

• 处理器映射器

• 处理器适配器

• 视图解析器

mvc:annotation-driven标签说明

在 SpringMVC 的各个组件中,处理器映射器、处理器适配器、视图解析器称为 SpringMVC 的三大组件。

使用 <mvc:annotation-driven> 自动加载 RequestMappingHandlerMapping(处理映射器)和RequestMappingHandlerAdapter ( 处 理 适 配 器 ),可 用 在 SpringMVC.xml 配 置 文 件 中 使 用<mvc:annotation-driven>替代处理映射器和适配器的配置(一般开发中都需要该标签)。

注意:我们只需要编写处理具体业务的控制器以及视图。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐