HTTP 协议
HTTP 概述
HTTP 是 Hypertext Transfer Protocol 的缩写,中文名称为“超文本传输协议”。它规定了客户端与服务器之间请求和响应的格式及交互规则。
HTTP 通常运行在 TCP 之上。客户端先向服务器发送 HTTP 请求,服务器处理后返回 HTTP 响应。
HTTP 的主要特点
无状态
HTTP 协议本身不会自动记住前一次请求中的业务状态。服务器可以通过 Cookie、Session、Token 或数据库等机制维护登录状态和业务数据。
请求与响应模式
一次 HTTP 交互通常包含一个请求和一个响应。HTTP/1.1 默认支持持久连接,因此不能简单理解为“每次请求结束后一定立即断开 TCP 连接”。连接是否复用还取决于协议版本、请求头、服务器配置和网络环境。
HTTP 请求报文
HTTP 请求报文通常由以下部分组成:
-
请求行。
-
请求头。
-
空行。
-
可选的请求体。
请求行
请求行包含请求方法、请求目标和 HTTP 版本,例如:
GET /users?id=10 HTTP/1.1
查询参数位于请求目标中,不属于请求头。
常见请求方法
GET
通常用于获取资源。查询参数常写在 URL 后面,因此容易出现在地址栏、浏览器历史记录、服务器日志等位置。
GET 并不天然比 POST 更“不安全”;是否安全取决于是否使用 HTTPS、是否暴露敏感参数、服务端权限校验等因素。URL 长度也没有由 HTTP 统一规定的固定上限,但浏览器、服务器和代理可能设置各自限制。
POST
通常用于向服务器提交数据或触发处理操作。表单使用 method="post" 时,表单数据通常放在请求体中。
HEAD
与 GET 类似,但服务器只返回响应头,不返回响应体,常用于获取资源元数据。
PUT
通常用于创建或整体替换指定资源,在 REST 风格接口中较常见。
DELETE
通常用于删除指定资源。服务器仍需进行身份认证、权限检查和业务校验。
常见请求头
| 请求头 | 作用 |
|---|---|
Accept | 声明客户端可以接收的响应内容类型 |
Accept-Language | 声明客户端偏好的语言 |
Content-Type | 声明请求体的数据类型 |
Cookie | 将符合条件的 Cookie 发送给服务器 |
常见请求体类型
表单编码
Content-Type: application/x-www-form-urlencoded
请求体示例:
username=tom&password=123
文件上传
Content-Type: multipart/form-data
该格式可以在同一次请求中提交普通字段和文件内容,实际请求头还会包含用于分隔各部分的 boundary。
XML
Content-Type: application/xml
JSON
Content-Type: application/json
JSON 使用双引号表示对象的属性名和字符串值:
{
"username": "tom",
"password": "123",
"name": "tom"
}
{
"name": "财务部",
"id": 5001,
"employees": [
{
"name": "tom",
"age": 20
},
{
"name": "jack",
"age": 23
}
]
}HTTP 响应报文
HTTP 响应报文通常由以下部分组成:
-
状态行。
-
响应头。
-
空行。
-
可选的响应体。
状态行示例:
HTTP/1.1 200 OK
HTTP 状态码
状态码由三位数字组成,首位数字表示响应类别。
| 状态码 | 名称 | 含义 |
|---|---|---|
200 | OK | 请求成功 |
400 | Bad Request | 请求格式或参数不符合服务器要求 |
401 | Unauthorized | 尚未完成有效身份认证 |
403 | Forbidden | 服务器理解请求,但拒绝执行,常见原因是权限不足 |
404 | Not Found | 请求的资源不存在或地址不正确 |
405 | Method Not Allowed | 资源不支持当前请求方法 |
500 | Internal Server Error | 服务器内部处理发生错误 |
502 | Bad Gateway | 网关或代理从上游服务器收到无效响应 |
4xx 通常表示客户端请求存在问题,5xx 通常表示服务器处理请求时发生问题。
常见响应头
| 响应头 | 作用 |
|---|---|
Content-Type | 声明响应体的数据类型和字符编码 |
Content-Length | 声明响应体长度 |
Location | 常用于重定向,指定新的资源地址 |
Set-Cookie | 要求浏览器按规则保存 Cookie |
请求中的 Cookie 使用 Cookie 请求头,服务器设置 Cookie 时使用 Set-Cookie 响应头。
HTTPS 协议
HTTPS 概述
HTTPS 可以理解为在 TLS 安全通道中传输 HTTP。SSL 是 TLS 的历史前身,日常资料中仍常把相关证书称为 SSL 证书。
TLS 主要提供以下安全能力:
-
机密性:对传输数据加密,降低内容被窃听的风险。
-
完整性:检测传输内容是否被篡改。
-
身份认证:通过数字证书验证服务器身份;在特定场景中也可以验证客户端身份。
HTTP 与 HTTPS 的区别
| 对比项 | HTTP | HTTPS |
|---|---|---|
| 默认端口 | 80 | 443 |
| 传输保护 | 默认不加密 | 使用 TLS 加密并校验完整性 |
| 身份认证 | 协议本身不提供证书认证 | 通常通过数字证书验证服务器身份 |
| 地址前缀 | http:// | https:// |
使用 HTTPS 不等于业务系统绝对安全,服务器仍需正确处理身份认证、权限控制、输入校验和敏感数据存储。
在 IntelliJ IDEA 中配置 Tomcat
以下步骤适用于传统 Maven Web 工程。不同 IntelliJ IDEA 版本的菜单名称可能略有差异。
第一步:创建 Maven Web 工程
创建 Maven 项目,并准备 Web 资源目录及 Servlet 相关依赖。
第二步:配置 Web Facet
打开 Project Structure,在 Facets 中添加或检查 Web 配置,然后应用设置。
第三步:添加 Tomcat 运行配置
在 Run 菜单中打开 Edit Configurations,添加 Tomcat Server 下的 Local 配置。

第四步:部署项目 Artifact
在 Tomcat 运行配置的 Deployment 页面中添加当前 Web 项目的 Artifact,并检查应用上下文路径。


第五步:启动并访问项目
启动 Tomcat,确认控制台没有部署错误,然后在浏览器中访问:
http://localhost:8080/pjt0721/index.html
其中 pjt0721 是应用上下文路径,index.html 是要访问的资源。实际地址应与部署配置保持一致。
喜欢的话,留下你的评论吧~