协议

发布于 2026-07-29 10:25 更新于 2026-07-29 10:25 1597 字 8 min read ... 访问量

本文介绍了HTTP协议的基本概念、请求与响应结构、常见请求方法和响应状态码,强调了HTTP的无状态特性及连接复用机制;同时说明了HTTPS通过TLS提供机密性、完整性和身份认证,指出安全需结合协议与业务层面的防护;最后详细讲解了在IntelliJ IDEA中配置Maven Web工程并部署到Tomcat的步骤。

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" 时,表单数据通常放在请求体中。

与 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 状态码

状态码由三位数字组成,首位数字表示响应类别。

状态码名称含义
200OK请求成功
400Bad Request请求格式或参数不符合服务器要求
401Unauthorized尚未完成有效身份认证
403Forbidden服务器理解请求,但拒绝执行,常见原因是权限不足
404Not Found请求的资源不存在或地址不正确
405Method Not Allowed资源不支持当前请求方法
500Internal Server Error服务器内部处理发生错误
502Bad 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 的区别

对比项HTTPHTTPS
默认端口80443
传输保护默认不加密使用 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 配置。

image-001
image-001

第四步:部署项目 Artifact

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

image-002
image-002
image-003
image-003

第五步:启动并访问项目

启动 Tomcat,确认控制台没有部署错误,然后在浏览器中访问:

http://localhost:8080/pjt0721/index.html

其中 pjt0721 是应用上下文路径,index.html 是要访问的资源。实际地址应与部署配置保持一致。

喜欢的话,留下你的评论吧~

... 访问量
© 2026 跨越星轨的客 @Hoshiumi
Powered by theme astro-koharu · Inspired by Shoka