JSON数据交换
当前后端交互时,客户端往往需要把参数传给服务器。根据参数复杂度不同,常见方式可以分为两类:
简单参数:如果请求中只需要携带少量、结构简单的参数,最常见的做法是把它们以键值对形式拼接在 URL 后面。
scheme://host:port/path?参数1名称=参数1值&参数2名称=参数2值
复杂参数:放在请求体中,以 JSON 格式传递
请求和响应:复杂数据最常见的交换格式都是 JSON

Web服务器概念
服务器有两层含义:
| 层面 | 说明 | 例子 |
|---|---|---|
| 软件层面 | 能将本地资源发布到网络的软件程序 | Tomcat、Nginx、Apache |
| 硬件层面 | 性能较高的计算机主机 | 云服务器、机房服务器 |
静态资源 vs 动态资源:
| 类型 | 特点 | 例子 |
|---|---|---|
| 静态资源 | 内容固定不变 | HTML页面、图片、CSS、小说 |
| 动态资源 | 根据请求动态生成 | 用户中心、订单列表、搜索页面 |
JavaEE规范:由于不同服务器API不统一,所以javaee统一接口,由不同厂商实现
Tomecat 配置运行
tomecat目录结构解析:
apache-tomcat-9.0.80/
├── bin/ # 启动/停止脚本
│ ├── startup.bat # Windows启动
│ ├── startup.sh # Linux启动
│ ├── shutdown.bat # Windows停止
│ └── shutdown.sh # Linux停止
├── conf/ # 配置文件
│ ├── server.xml # 服务器核心配置
│ ├── web.xml # 默认Web应用配置
│ └── logging.properties # 日志配置
├── lib/ # 依赖库(jar包)
├── logs/ # 日志文件
├── temp/ # 临时文件
├── webapps/ # 默认部署目录(重要!)
└── work/ # 运行时生成的文件
配置环境变量:
# 必须配置JAVA_HOME!
JAVA_HOME=C:\Program Files\Java\jdk-1.8
# 可选:配置CATALINA_HOME
CATALINA_HOME=D:\apache-tomcat-9.0.80
启动tomecat:
双击 bin/startup.bat
# Windows
cd D:\apache-tomcat-9.0.80\bin
startup.bat
# Linux/Mac
cd /usr/local/tomcat/bin
./startup.sh
访问:http://localhost:8080
停止tomecat:
方式1:双击 `shutdown.bat` 标准停止
方式2:命令行执行 `shutdown` 脚本控制
方式3:启动窗口按 `Ctrl+C` 快速停止
方式4:关闭CMD窗口 不推荐
部署Web应用
| 方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 直接部署 | 简单直观 | 必须放在webapps | 开发测试 |
| 虚拟映射 | 灵活,位置不限 | 需要配置 | 生产环境 |
| WAR包部署 | 方便分发 | 需要打包 | 生产发布 |
直接部署
1. 在 webapps 目录下新建文件夹(建议英文)
2. 将资源文件放入该文件夹
3. 访问:http://localhost:8080/文件夹名/资源路径
例子
webapps/
└── myapp/ # 应用目录
├── index.html # 首页
├── css/
│ └── style.css
├── js/
│ └── app.js
└── images/
└── logo.png
http://localhost:8080/myapp/index.html
http://localhost:8080/myapp/images/logo.png
虚拟映射
1. 在 conf/Catalina/localhost/ 下创建 XML 文件
2. 文件名 = 访问路径名
3. XML内容配置 docBase 指向实际路径
例子:
<!-- 文件:conf/Catalina/localhost/user1.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:\my-projects\app1" />
实际目录结构:
D:\my-projects\app1\
├── index.html
└── images\
└── banner.jpg
http://localhost:8080/user1/index.html
http://localhost:8080/user1/images/banner.jpg
直接部署 和 虚拟映射 冲突时:虚拟映射优先级 > 直接部署
WAR包部署
WAR(Web Application Archive)是Web应用的标准打包格式,本质就是ZIP压缩包。打包后把它放进 webapps/,Tomcat 会自动解压并部署。
# 1. 将应用目录打包为WAR
cd D:\my-projects\app1
jar -cvf myapp.war .
# 2. 将WAR放入webapps目录
# Tomcat会自动解压部署
jar -cvf myapp.war .
webapps/
├── myapp.war # 放入WAR包
└── myapp/ # Tomcat自动解压
└── ...
部署本质:URL 到本地路径的映射
用户访问的 URL —> Tomcat 如何解析路径 —> 最终找到本地哪个资源
4. Tomcat的常见配置
1,修改端口
默认端口是 8080,配置位置在 conf/server.xml,如果改成 80,访问时就可以省略端口:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
http://localhost/
2,配置ROOT应用
配置root应用后访问http://localhost:8080/会直接进入应用
方式1:
webapps/ROOT/
方式2:
conf/Catalina/localhost/ROOT.xml
3,配置欢迎页
欢迎页用于控制“访问目录时默认打开哪个文件”。配置位置通常在 conf/web.xml:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
访问逻辑可以理解为:
访问 /myapp/
-> 先找 index.html
-> 再找 index.htm
-> 再找 index.jsp
-> 都没有则 404
访问不到的常见原因有三个:
- 本机防火墙未放行
- 云服务器安全组未开放端口
- 服务只绑定到本机回环地址
遇到“自己能访问,别人不能访问”时,优先从这三项排查。
总结
核心知识点
1. Tomcat 是 Java Web 应用的运行容器
2. webapps 是默认部署目录
3. bin 负责启停,conf 负责配置,logs 负责日志
4. 直接部署最简单,虚拟映射最灵活,WAR 包更接近发布流程
5. URL 访问背后,本质是 Tomcat 做路径映射
6. ROOT、欢迎页、端口配置是最常见的三个基础操作
部署方式选择决策
资源放在哪里?
│
├─ 在 webapps 下 -> 直接部署
│
├─ 不在 webapps 下 -> 虚拟映射
│
└─ 需要分发或上线 -> WAR 包部署

多线程,网络编程
