目录
[二、什么是 JSON](#二、什么是 JSON)
[三、为什么不用 XML?](#三、为什么不用 XML?)
[四、Spring Boot 如何接收 JSON](#四、Spring Boot 如何接收 JSON)
[五、@RequestBody 做了什么?](#五、@RequestBody 做了什么?)
[六、什么是 Jackson?](#六、什么是 Jackson?)
[七、JSON 转 Java 对象](#七、JSON 转 Java 对象)
[八、Spring Boot 返回 JSON 原理](#八、Spring Boot 返回 JSON 原理)
[九、常见 JSON 注解](#九、常见 JSON 注解)
[十、什么是 Tomcat?](#十、什么是 Tomcat?)
[十一、传统 Tomcat 部署方式](#十一、传统 Tomcat 部署方式)
[十二、Spring Boot 为什么内嵌 Tomcat](#十二、Spring Boot 为什么内嵌 Tomcat)
[十三、内嵌 Tomcat 架构](#十三、内嵌 Tomcat 架构)
[十四、Tomcat 依赖在哪里?](#十四、Tomcat 依赖在哪里?)
[十五、Spring Boot 启动时发生了什么](#十五、Spring Boot 启动时发生了什么)
[十六、修改 Tomcat 端口](#十六、修改 Tomcat 端口)
[十八、Jar 与 War 对比](#十八、Jar 与 War 对比)
一、前言
在现代 Java Web 开发中,我们几乎每天都在和两样东西打交道:
JSON
Tomcat
例如:
前端发送请求:
{
"username":"admin",
"password":"123456"
}
Spring Boot 自动接收:
java
@PostMapping("/login")
public String login(
@RequestBody UserDTO dto){
return "success";
}
返回结果:
{
"code":200,
"msg":"登录成功"
}
整个过程中:
JSON负责数据传输
Tomcat负责网络通信
而 Spring Boot 最大的创新之一就是:
内嵌Tomcat
让开发者无需单独安装 Web 容器即可启动项目。
本文将系统讲解:
-
什么是 JSON
-
Spring Boot 如何处理 JSON
-
Jackson 工作原理
-
Tomcat 的作用
-
Spring Boot 内嵌 Tomcat 原理
-
Jar 包部署流程
二、什么是 JSON
JSON:
JavaScript Object Notation
即:
JavaScript对象表示法
是一种轻量级数据交换格式。
示例:
{
"id":1,
"name":"Tom",
"age":20
}
特点:
可读性高
跨语言
体积小
解析速度快
因此成为:
前后端通信标准
三、为什么不用 XML?
早期系统广泛使用:
XML
<user>
<id>1</id>
<name>Tom</name>
</user>
但 XML 存在:
标签冗余
数据量大
解析复杂
而 JSON:
{
"id":1,
"name":"Tom"
}
更加简洁。
因此:
JSON逐渐取代XML
成为主流。
四、Spring Boot 如何接收 JSON
前端请求:
POST /user
Content-Type: application/json
请求体:
{
"name":"张三",
"age":18
}
对应实体类:
java
@Data
public class UserDTO {
private String name;
private Integer age;
}
Controller:
java
@RestController
@RequestMapping("/user")
public class UserController {
@PostMapping
public String save(
@RequestBody UserDTO dto){
return dto.getName();
}
}
执行过程:
JSON
↓
Jackson
↓
UserDTO
↓
Controller
五、@RequestBody 做了什么?
很多人以为:
@RequestBody
只是一个注解。
实际上它背后完成了:
读取请求流
解析JSON
对象转换
参数绑定
工作。
流程:

六、什么是 Jackson?
Spring Boot 默认使用:
Jackson
完成 JSON 转换。
依赖:
XML
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-databind
</artifactId>
</dependency>
对象转 JSON:
java
ObjectMapper mapper =
new ObjectMapper();
User user = new User();
user.setName("Tom");
String json =
mapper.writeValueAsString(user);
System.out.println(json);
输出:
{
"name":"Tom"
}
七、JSON 转 Java 对象
JSON:
{
"name":"Tom",
"age":20
}
转换:
java
String json =
"{\"name\":\"Tom\",\"age\":20}";
User user =
mapper.readValue(
json,
User.class
);
结果:
user.getName();
输出:
Tom
八、Spring Boot 返回 JSON 原理
Controller:
java
@GetMapping("/{id}")
public User query(){
return new User(
1L,
"Tom"
);
}
Spring MVC:
User对象
↓
Jackson
↓
JSON字符串
↓
HTTP响应
最终浏览器收到:
{
"id":1,
"name":"Tom"
}
九、常见 JSON 注解
@JsonFormat
时间格式化:
java
@JsonFormat(
pattern =
"yyyy-MM-dd HH:mm:ss"
)
private LocalDateTime createTime;
输出:
{
"createTime":
"2026-06-02 10:30:00"
}
@JsonIgnore
忽略字段:
java
@JsonIgnore
private String password;
返回:
{
"username":"admin"
}
不会暴露密码。
@JsonProperty
重命名字段:
java
@JsonProperty("user_name")
private String username;
输出:
{
"user_name":"admin"
}
十、什么是 Tomcat?
Tomcat 本质上是:
Servlet容器
也是:
Web服务器
作用:
监听端口
接收HTTP请求
调用Servlet
返回响应
架构:

十一、传统 Tomcat 部署方式
以前开发:
开发代码
↓
打WAR包
↓
上传Tomcat
↓
启动Tomcat
流程:

缺点:
部署复杂
环境依赖
版本不一致
十二、Spring Boot 为什么内嵌 Tomcat
Spring Boot 目标:
开箱即用
因此:
Tomcat直接集成到项目
开发者无需安装。
只需要:
java -jar app.jar
即可启动。
十三、内嵌 Tomcat 架构
Spring Boot:

Tomcat 已经成为:
项目的一部分
十四、Tomcat 依赖在哪里?
查看 Maven:
XML
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
展开依赖树:
spring-boot-starter-web
↓
spring-boot-starter-tomcat
因此:
Tomcat自动引入
十五、Spring Boot 启动时发生了什么
启动:
java
@SpringBootApplication
public class Application {
public static void main(
String[] args) {
SpringApplication.run(
Application.class,
args
);
}
}
执行流程:
sequenceDiagram
Main->>SpringApplication:
run()
SpringApplication->>IOC:
创建容器
IOC->>Tomcat:
启动Tomcat
Tomcat->>DispatcherServlet:
注册Servlet
DispatcherServlet->>Controller:
映射接口
十六、修改 Tomcat 端口
默认:
8080
修改:
server:
port: 9090
启动后:
http://localhost:9090
访问。
十七、打包部署
执行:
mvn clean package
生成:
app.jar
运行:
java -jar app.jar
启动日志:
Tomcat started on port(s): 8080
说明:
内嵌Tomcat启动成功
十八、Jar 与 War 对比
| 项目 | Jar | War |
|---|---|---|
| 部署方式 | java -jar | Tomcat部署 |
| Tomcat | 内嵌 | 外置 |
| 运维复杂度 | 低 | 高 |
| Spring Boot推荐 | √ | × |
现代项目:
绝大多数采用Jar部署
十九、生产环境部署流程
典型流程:

或者:
Docker
↓
Kubernetes
↓
Spring Boot Jar
云原生部署。
二十、总结
在 Spring Boot 中:
JSON
负责数据交换
而:
Tomcat
负责网络通信
整个请求链路:
浏览器
↓
Tomcat
↓
DispatcherServlet
↓
Controller
↓
Jackson
↓
JSON
↓
浏览器
Spring Boot 最大的价值在于:
自动完成JSON转换
自动启动Tomcat
自动配置MVC
开发者只需要关注:
java
@RestController
@RequestBody
@GetMapping
等业务代码即可。
可以这样理解:
JSON解决了"数据如何传输"。
Tomcat解决了"请求如何到达"。
Spring Boot则把两者整合在一起,
让Java Web开发进入了真正的一键启动时代。