## 一、C/S与B/S 1、C/S结构应用程序(Client/Server):客户端 <--> 服务器结构。 凡是需要在客户的机器上安装客户端软件的应用程序都是CS架构的应用程序。 - 优点:响应速度快,安全性强,一般应用于局域网中。 - 缺点:需要经常更新客户端,开发维护成本高。 2、B/S结构应用程序(Browser/Server):浏览器 <--> 服务器结构。 凡是使用浏览器运行的应用程序都是BS架构的应用程序。 - 优点:跨平台,客户端零维护,即不需要更新客户端。 - 缺点:响应速度受制于网络 JavaWeb就是用Java语言开发B/S结构应用程序。 ## 二、Web请求响应模式 B/S结构中浏览器端与服务器端采用请求/响应模式进行交互  ## 三、HTTP协议 **HTTP协议(HyperText Transfer Protocol,超文本传输协议)** 是Web通信的核心规则,定义了客户端(如浏览器)与服务器之间如何交换数据。它是互联网数据通信的基石,几乎承载了所有网页浏览、API调用和资源加载的过程。 #### 1、核心工作原理:请求-响应模型 #### 2、HTTP请求组成 ##### 请求行(Request Line) ``` GET /index.html HTTP/1.1 ``` - **方法**:指定操作类型(如 `GET` 获取资源,`POST` 提交数据)。 - **路径**:请求的资源路径(如 `/index.html`)。 - **协议版本**:如 `HTTP/1.1` 或 `HTTP/2`。 ##### 请求头(Headers) 描述请求的元信息: ``` Host: www.example.com User-Agent: Chrome/123.0 Accept: text/html Cookie: session_id=abc123 ``` - 常见头字段:`Content-Type`, `Authorization`, `Cache-Control` 等。 ##### 请求体(Body,可选) 用于提交数据(如表单或 JSON): ``` {"username": "admin", "password": "123456"} ``` #### 3、HTTP响应组成 ##### 状态行(Status Line) ``` HTTP/1.1 200 OK ``` - **协议版本**:如 `HTTP/1.1`。 - **状态码**:表示请求结果(如 `200` 成功,`404` 资源不存在)。 - **状态短语**:对状态码的说明(如 `OK`)。 ##### 响应头(Headers) 描述响应的元信息: ``` Content-Type: text/html; charset=UTF-8 Set-Cookie: session_id=xyz789 Cache-Control: max-age=3600 ``` - 常见头字段:`Location`(重定向),`Content-Length` 等。 ##### 响应体(Body) 返回的实际内容: ```html Hello World! ``` #### 4、HTTP请求方法 | 方法 | 作用 | 幂等性 | | -------- | -------------------------- | ------ | | `GET` | 获取资源(无请求体) | 是 | | `POST` | 提交数据(有请求体) | 否 | | `PUT` | 更新整个资源 | 是 | | `PATCH` | 局部更新资源 | 否 | | `DELETE` | 删除资源 | 是 | | `HEAD` | 获取资源的响应头(无Body) | 是 | **幂等性**:多次请求效果相同(如 GET 多次刷新增删查改数据)。 #### 5、请求状态码 | 状态码 | 类别 | 常见示例 | | ------ | ---------- | ------------------------------------------------------- | | 1xx | 信息响应 | `101` 协议切换 | | 2xx | 成功 | `200 OK`,`201 Created` | | 3xx | 重定向 | `301 Moved Permanently`,`304 Not Modified`(缓存有效) | | 4xx | 客户端错误 | `400 Bad Request`,`403 Forbidden`,`404 Not Found` | | 5xx | 服务器错误 | `500 Internal Server Error`,`503 Service Unavailable` | #### 6、HTTP协议演进 | 版本 | 特点 | | ------------ | -------------------------------------------------------------------- | | **HTTP/1.0** | 短连接(每次请求新建 TCP 连接),效率低下。 | | **HTTP/1.1** | 默认长连接(复用连接)、支持分块传输(`Transfer-Encoding: chunked`) | | **HTTP/2** | 二进制协议、多路复用、头部压缩、服务器推送(Server Push) | | **HTTP/3** | 基于 UDP 的 QUIC 协议,解决 TCP 队头阻塞问题,零 RTT 握手 | ## 四、URL介绍 #### 1、URL 核心结构 URL:Uniform Resource Locator(统一资源定位符) `https://www.example.com:8080/path/to/page?name=Alice&age=25#section2` | 组件 | 说明 | 示例片段 | | ---------------- | ----------------------------------------------------------------- | -------------------- | | 协议 (Scheme) | 访问资源使用的协议(决定了数据传输规则) | `https:` | | 域名 (Host) | 服务器的域名或 IP 地址(指向资源所在服务器) | `www.example.com` | | 端口 (Port) | 服务器监听端口(默认端口可省略,如 HTTP 默认 80,HTTPS 默认 443) | `:8080` | | 路径 (Path) | 资源在服务器上的具体位置(类似文件路径) | `/path/to/page` | | 查询参数 (Query) | 向服务器传递的额外参数(格式为`?key1=value1&key2=value2`) | `?name=Alice&age=25` | | 锚点 (Fragment) | 页面内的特定位置(仅客户端使用,不发送到服务器) | `#section2` | #### 2、关键组件详解 ##### 协议(Scheme) - 定义通信规则,常见协议: - `http`:普通网页传输(未加密) - `https`:加密的 HTTP(SSL/TLS 保护) - `ftp`:文件传输协议 - `mailto`:电子邮件地址(如 `mailto:contact@example.com`) - `file`:本地文件(如 `file:///C:/documents/doc.pdf`) - `data`:直接嵌入数据(Base64 编码,如 `data:image/png;base64,...`) ##### 域名(Host) - 可以是域名(如 `google.com`)或 IP 地址(如 `192.168.1.1`)。 - **域名解析**:浏览器通过 DNS 将域名转换为 IP 地址。 ##### 路径(Path) - 服务器上资源的层级位置,模拟文件系统结构: - `https://example.com/images/logo.png` → 获取图片文件 - `https://api.example.com/v1/users` → 访问 RESTful API ##### 查询参数(Query String) - 以 `?` 开头,键值对用 `&` 分隔: - `?search=web+development&sort=date` - **字符编码**:非英文字符需用 URL 编码(如空格 → `%20` 或 `+`)。 ##### 锚点(Fragment) - 用于页面内跳转,不会触发服务器请求: - `https://example.com/page#chapter-3` → 滚动到页面第三章。 ## 五、Web服务器介绍 #### 1、处理 HTTP 请求生命周期 #### 2、常见的Web服务器类型 ##### ① Nginx 特点:高性能、轻量级、高并发(异步非阻塞 I/O) 场景:静态资源托管、反向代理/负载均衡、API 网关 优势:内存占用低,擅长处理 C10K 问题(万级并发) ##### ② Apache HTTP Server 特点:功能全面、模块化(.htaccess 文件动态配置) 场景:传统动态网站(PHP 首选)、需灵活权限控制的场景 优势:模块生态丰富(如 `mod_rewrite` 实现 URL 重写) ##### ③ Caddy 特点:自动 HTTPS(内置 Let’s Encrypt 集成)、配置简洁 场景:快速搭建 HTTPS 服务、开发环境 ##### ④ Microsoft IIS 特点:深度集成 Windows Server 生态 场景:ASP.NET 应用托管 ##### ⑤ Tomcat 特点: Java Web 开发的核心引擎 场景:专为运行 **Servlet、JSP** 等 Java EE(现 Jakarta EE)技术设计。 生产环境典型架构:  Loading... ## 一、C/S与B/S 1、C/S结构应用程序(Client/Server):客户端 <--> 服务器结构。 凡是需要在客户的机器上安装客户端软件的应用程序都是CS架构的应用程序。 - 优点:响应速度快,安全性强,一般应用于局域网中。 - 缺点:需要经常更新客户端,开发维护成本高。 2、B/S结构应用程序(Browser/Server):浏览器 <--> 服务器结构。 凡是使用浏览器运行的应用程序都是BS架构的应用程序。 - 优点:跨平台,客户端零维护,即不需要更新客户端。 - 缺点:响应速度受制于网络 JavaWeb就是用Java语言开发B/S结构应用程序。 ## 二、Web请求响应模式 B/S结构中浏览器端与服务器端采用请求/响应模式进行交互  ## 三、HTTP协议 **HTTP协议(HyperText Transfer Protocol,超文本传输协议)** 是Web通信的核心规则,定义了客户端(如浏览器)与服务器之间如何交换数据。它是互联网数据通信的基石,几乎承载了所有网页浏览、API调用和资源加载的过程。 #### 1、核心工作原理:请求-响应模型 <img src="https://pic.soki.me/file/piclist/image-20251020234153141.png" alt="image-20251020234153141" style="zoom: 33%;" style=""> #### 2、HTTP请求组成 ##### 请求行(Request Line) ``` GET /index.html HTTP/1.1 ``` - **方法**:指定操作类型(如 `GET` 获取资源,`POST` 提交数据)。 - **路径**:请求的资源路径(如 `/index.html`)。 - **协议版本**:如 `HTTP/1.1` 或 `HTTP/2`。 ##### 请求头(Headers) 描述请求的元信息: ``` Host: www.example.com User-Agent: Chrome/123.0 Accept: text/html Cookie: session_id=abc123 ``` - 常见头字段:`Content-Type`, `Authorization`, `Cache-Control` 等。 ##### 请求体(Body,可选) 用于提交数据(如表单或 JSON): ``` {"username": "admin", "password": "123456"} ``` #### 3、HTTP响应组成 ##### 状态行(Status Line) ``` HTTP/1.1 200 OK ``` - **协议版本**:如 `HTTP/1.1`。 - **状态码**:表示请求结果(如 `200` 成功,`404` 资源不存在)。 - **状态短语**:对状态码的说明(如 `OK`)。 ##### 响应头(Headers) 描述响应的元信息: ``` Content-Type: text/html; charset=UTF-8 Set-Cookie: session_id=xyz789 Cache-Control: max-age=3600 ``` - 常见头字段:`Location`(重定向),`Content-Length` 等。 ##### 响应体(Body) 返回的实际内容: ```html <!DOCTYPE html> <html> <body>Hello World!</body> </html> ``` #### 4、HTTP请求方法 | 方法 | 作用 | 幂等性 | | -------- | -------------------------- | ------ | | `GET` | 获取资源(无请求体) | 是 | | `POST` | 提交数据(有请求体) | 否 | | `PUT` | 更新整个资源 | 是 | | `PATCH` | 局部更新资源 | 否 | | `DELETE` | 删除资源 | 是 | | `HEAD` | 获取资源的响应头(无Body) | 是 | **幂等性**:多次请求效果相同(如 GET 多次刷新增删查改数据)。 #### 5、请求状态码 | 状态码 | 类别 | 常见示例 | | ------ | ---------- | ------------------------------------------------------- | | 1xx | 信息响应 | `101` 协议切换 | | 2xx | 成功 | `200 OK`,`201 Created` | | 3xx | 重定向 | `301 Moved Permanently`,`304 Not Modified`(缓存有效) | | 4xx | 客户端错误 | `400 Bad Request`,`403 Forbidden`,`404 Not Found` | | 5xx | 服务器错误 | `500 Internal Server Error`,`503 Service Unavailable` | #### 6、HTTP协议演进 | 版本 | 特点 | | ------------ | -------------------------------------------------------------------- | | **HTTP/1.0** | 短连接(每次请求新建 TCP 连接),效率低下。 | | **HTTP/1.1** | 默认长连接(复用连接)、支持分块传输(`Transfer-Encoding: chunked`) | | **HTTP/2** | 二进制协议、多路复用、头部压缩、服务器推送(Server Push) | | **HTTP/3** | 基于 UDP 的 QUIC 协议,解决 TCP 队头阻塞问题,零 RTT 握手 | ## 四、URL介绍 #### 1、URL 核心结构 URL:Uniform Resource Locator(统一资源定位符) `https://www.example.com:8080/path/to/page?name=Alice&age=25#section2` | 组件 | 说明 | 示例片段 | | ---------------- | ----------------------------------------------------------------- | -------------------- | | 协议 (Scheme) | 访问资源使用的协议(决定了数据传输规则) | `https:` | | 域名 (Host) | 服务器的域名或 IP 地址(指向资源所在服务器) | `www.example.com` | | 端口 (Port) | 服务器监听端口(默认端口可省略,如 HTTP 默认 80,HTTPS 默认 443) | `:8080` | | 路径 (Path) | 资源在服务器上的具体位置(类似文件路径) | `/path/to/page` | | 查询参数 (Query) | 向服务器传递的额外参数(格式为`?key1=value1&key2=value2`) | `?name=Alice&age=25` | | 锚点 (Fragment) | 页面内的特定位置(仅客户端使用,不发送到服务器) | `#section2` | #### 2、关键组件详解 ##### 协议(Scheme) - 定义通信规则,常见协议: - `http`:普通网页传输(未加密) - `https`:加密的 HTTP(SSL/TLS 保护) - `ftp`:文件传输协议 - `mailto`:电子邮件地址(如 `mailto:contact@example.com`) - `file`:本地文件(如 `file:///C:/documents/doc.pdf`) - `data`:直接嵌入数据(Base64 编码,如 `data:image/png;base64,...`) ##### 域名(Host) - 可以是域名(如 `google.com`)或 IP 地址(如 `192.168.1.1`)。 - **域名解析**:浏览器通过 DNS 将域名转换为 IP 地址。 ##### 路径(Path) - 服务器上资源的层级位置,模拟文件系统结构: - `https://example.com/images/logo.png` → 获取图片文件 - `https://api.example.com/v1/users` → 访问 RESTful API ##### 查询参数(Query String) - 以 `?` 开头,键值对用 `&` 分隔: - `?search=web+development&sort=date` - **字符编码**:非英文字符需用 URL 编码(如空格 → `%20` 或 `+`)。 ##### 锚点(Fragment) - 用于页面内跳转,不会触发服务器请求: - `https://example.com/page#chapter-3` → 滚动到页面第三章。 ## 五、Web服务器介绍 #### 1、处理 HTTP 请求生命周期 <img src="https://pic.soki.me/file/piclist/image-20251021000304361.png" alt="image-20251021000304361" style="zoom:50%;" style=""> #### 2、常见的Web服务器类型 ##### ① Nginx 特点:高性能、轻量级、高并发(异步非阻塞 I/O) 场景:静态资源托管、反向代理/负载均衡、API 网关 优势:内存占用低,擅长处理 C10K 问题(万级并发) ##### ② Apache HTTP Server 特点:功能全面、模块化(.htaccess 文件动态配置) 场景:传统动态网站(PHP 首选)、需灵活权限控制的场景 优势:模块生态丰富(如 `mod_rewrite` 实现 URL 重写) ##### ③ Caddy 特点:自动 HTTPS(内置 Let’s Encrypt 集成)、配置简洁 场景:快速搭建 HTTPS 服务、开发环境 ##### ④ Microsoft IIS 特点:深度集成 Windows Server 生态 场景:ASP.NET 应用托管 ##### ⑤ Tomcat 特点: Java Web 开发的核心引擎 场景:专为运行 **Servlet、JSP** 等 Java EE(现 Jakarta EE)技术设计。 生产环境典型架构:  最后修改:2025 年 10 月 21 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 👆请简单粗暴地爱我。