五、HTTP&Tomcat&Servlet
5.1 HTTP
5.1.1 简介
1. HTTP 概念
HTTP : HyperText Transfer Protocol,超文本传输协议
规定浏览器和服务器之间数据传输的规则
- 数据传输规则指的是请求数据和响应数据需要按照指定的格式进行传输
2. HTTP 协议特点
-
基于 TCP 协议:面向连接,安全
-
基于请求-响应模型:一次请求对应一次响应
-
HTTP 协议是无状态协议,对于响应后,不会记录任何信息
- 缺点:多次请求间不能共享数据
- 优点:速度快
会话技术(Cookie 、 Session)可以解决问题
5.1.2 请求数据格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mYvHoLJV-1663941696077)(C:\Users\18517\AppData\Roaming\Typora\typora-user-images\image-20220830184922766.png)]
请求数据分为三部分:请求行、请求头、请求体
-
请求行:HTTP请求中的第一行数据,请求行包含三块内容,分别是 GET[请求方式]/[请求URL路径]HTTP/1.1[HTTP协议及版本]
请求方式有七种,最常用的是 GET 和 POST
-
请求头: 第二行开始,格式为 key:value 形式
请求头中会包含若干个属性,常见的HTTP请求头有:
Host: 表示请求的主机名 User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko; Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有; Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页; Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。
-
请求体:POST请求的最后一部分,存储请求参数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MYNonrcp-1663941696078)(C:\Users\18517\AppData\Roaming\Typora\typora-user-images\image-20220830185450277.png)]
请求体和请求头之间是有一个空行隔开。
GET 和 POST 的区别:
- GET 请求的请求参数在请求行中,没有请求体,POST请求 请求参数在请求体中
- GET请求参数大小有限制,POST没有限制
5.1.3 响应数据格式
响应数据分为三部分:响应行、响应头、响应体
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KQ6rUROV-1663941696079)(C:\Users\18517\AppData\Roaming\Typora\typora-user-images\image-20220830190158430.png)]
-
响应行:响应数据的第一行,响应行包含三块内容,分别是:HTTP/1.1[HTTP协议及版本] 200[响应状态码] ok[状态码描述]
-
响应头:从第二行开始,格式为 key:value 形式
常见的HTTP响应头有:
Content-Type:表示该响应内容的类型,例如text/html,image/jpeg; Content-Length:表示该响应内容的长度(字节数); Content-Encoding:表示该响应压缩算法,例如gzip; Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒
-
响应体:最后一部分。存放响应数据
响应状态码
- 200 ok 客户端请求成功
- 404 Not Found 请求资源不存在
- 500 Internal Server Error 服务端发生不可预期错误