


专栏:JavaEE 进阶跃迁营
个人主页:手握风云
目录
[一、什么是 Sping Web MVC](#一、什么是 Sping Web MVC)
[1.1. MVC 定义](#1.1. MVC 定义)
[1.2. 什么是 Spring MVC](#1.2. 什么是 Spring MVC)
[1.3. 与 Spring Boot 的关系](#1.3. 与 Spring Boot 的关系)
[二、学习 Spring MVC](#二、学习 Spring MVC)
[2.1. 建立连接(@RequestMapping 注解)](#2.1. 建立连接(@RequestMapping 注解))
[2.2. Postman](#2.2. Postman)
一、什么是 Sping Web MVC
根据 Spring 官方文档(及参考文档内容),Spring Web MVC 的核心定义如下:
Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从 Spring 框架诞生之初就被包含其中。其正式名称 "Spring Web MVC" 源于其源模块名称(
spring-webmvc),但在实际开发中通常简称为 "Spring MVC"。
关键信息拆解:
- 技术基石:基于 Java Servlet 规范实现,依赖 Servlet 容器(如 Tomcat、Jetty 等)运行 ------Servlet 是 Java Web 开发的标准,负责处理 HTTP 请求 / 响应,而 Spring MVC 在此基础上封装了更简洁的开发模式。
- 框架归属:是 Spring 框架的核心模块之一,而非独立框架,可无缝集成 Spring 的依赖注入(DI)、AOP 等核心能力。
- 核心定位:解决 Java Web 开发中 "请求处理、参数绑定、视图渲染、响应生成" 等核心问题,简化 Web 应用构建。
1.1. MVC 定义
要理解 Spring MVC,需先明确 MVC 设计模式------ 它是软件工程中一种 "分离关注点" 的架构思想,将软件系统分为三个核心部分,Spring MVC 则是该思想在 Web 领域的具体实现。
| 组件 | 核心职责 | 类比场景 |
|---|---|---|
| Model(模型) | 处理业务逻辑、管理数据(如计算、数据库交互),是应用的 "业务核心" | 饭店的 "后厨":根据前厅指令制作菜品(处理业务) |
| View(视图) | 与用户交互,展示数据(如 HTML 页面、JSON 数据),是应用的 "界面层" | 饭店的 "服务员":接待顾客、传递菜单、端送菜品(展示 / 交互) |
| Controller(控制器) | 作为 "调度中枢",接收用户请求,选择对应的 Model 处理,再指定 View 响应 | 饭店的 "前厅":接收服务员传递的菜单,调度后厨做菜,再通知服务员端菜 |
1.2. 什么是 Spring MVC
传统 MVC 侧重 "视图与模型分离",而 Spring MVC 针对 Web 场景做了适配,核心流程调整为:
- 用户请求 :浏览器直接发送 HTTP 请求到 Controller(跳过传统 View 的 "前置交互",更符合 Web 场景);
- Controller 调度 :Controller 接收请求后,根据请求路径 / 参数选择对应的 Model(业务逻辑层)处理;
- Model 处理:Model 执行业务逻辑(如计算、数据查询),返回处理结果;
- 响应生成 :Controller 接收 Model 结果后,选择对应的 View(如返回 HTML 页面、JSON 数据),最终通过 Servlet 容器响应给浏览器。
1.3. 与 Spring Boot 的关系
核心区别如下:
- Spring MVC:是 "Web 开发的核心框架",负责处理 Web 层逻辑(请求 / 响应);
- Spring Boot:是 "Spring 应用的快速启动工具",通过 "自动配置" 简化 Spring MVC 的部署(如默认集成 Tomcat 嵌入式容器、自动配置 Spring MVC 核心组件)。
类比理解:Spring MVC 好比 "做饭的工具(燃气灶、锅铲)",负责 "做饭(Web 开发)" 的核心动作;Spring Boot 好比 "厨房(带预装工具的场景)",提供现成的 "工具摆放、燃气开通"(自动配置),让你直接用工具做饭,无需手动搭建环境。
实际开发中,创建 Spring Boot 项目时勾选 "Spring Web" 依赖,本质就是引入 Spring MVC 框架,此时项目具备 Web 开发能力。
二、学习 Spring MVC
2.1. 建立连接(@RequestMapping 注解)
@RequestMapping 是 Spring Web MVC 应用程序中最常被用到的注解之一,它是用来注册接口的路由映射的。
java
package com.yang.test12_4_1;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
// 这里的 / 可以省略,Spring 启动时会自动补全
@RequestMapping("/hello")
public String hello() {
return "hello, Spring MVC";
}
}
- 核心作用
@RequestMapping 是 Spring Web MVC 框架中最核心、最常用 的注解之一,其核心作用是实现 URL 路由映射------ 即把客户端(如浏览器、Postman)发送的 HTTP 请求,与后端 Java 程序中的具体方法关联起来,让服务端知道 "哪个请求该由哪个方法处理"。
当客户端访问某个 URL(如 http://127.0.0.1:8080/hello)时,Spring 会通过 @RequestMapping 注解的配置,找到对应的方法并执行,最终将结果响应给客户端。用通俗的话讲:@RequestMapping 就是 "给方法贴个 URL 标签",客户端通过标签就能找到对应的方法。
- 基本使用方式
@RequestMapping 既可以修饰类 ,也可以修饰方法,二者配合使用时,最终的访问路径是 "类路径 + 方法路径"。如上面的代码就是修饰类。
java
package com.yang.test12_4_1;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
// 类路径前缀
@RequestMapping("/user")
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "hello, Spring MVC!";
}
}

注意 @RequestMapping 在修饰方法时不能映射相同的路径,否则会启动失败。
java
package com.yang.test12_4_1;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/user")
@RestController
public class HelloController {
@RequestMapping("/v1/v2")
public String v1() {
return "hello, Spring Boot v1!";
}
@RequestMapping("/v1/v2")
public String v2() {
return "hello, Spring Boot v2!";
}
}

- GET 和 POST 请求
我们可以在浏览器中输入 URL 字符串,就能够建立连接,说明 @RequestMapping 支持 GET 请求。
我们可以通过 form 表单来构造请求。在 static 文件夹下新建 hello.html 文件。这里不能直接在 IntelliJ IDEA 里面打开,需要在地址栏输入链接 http://127.0.0.1:8080/hello.html。

html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/user/v1/v2">
<input type="submit" value="发送请求">
</form>
</body>
</html>


我们同时可以通过 Fiddler 抓包来查看结果,正是 GET 请求。

从运行结果可以看出:@RequestMapping 既支持 Get 请求,又支持 Post 请求。同理,也支持其他的请求方式。
我们也可以在 POST 里面显示的指定 @RequestMapping 来接收 POST 的情况。
java
package com.yang.test12_4_1;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/user")
@RestController
public class HelloController {
@RequestMapping(value = "/v1/v2", method = RequestMethod.POST)
public String v1() {
return "hello, Spring Boot v1!";
}
}
2.2. Postman
在上面的示例中,我们还需要编写前端代码来进行测试,为了方便,我们还可以使用专业的接口测试工具------Postman。
- 下载和安装
下载网址:https://www.postman.com/downloads/。

- 创建请求

- 传参介绍
