Servlet之HTTP请求
# 1.Http传输协议
PS:这里只是做简单的介绍,更详细的会在后面俺系统学习网络知识时再详细写。
概念:Hyper Text Transfer Protocol 超文本传输协议
传输协议:定义了客户端和服务器端通信时发送数据的格式
客户端给服务器发送请求消息,服务器在接收到客户端发来的消息后,服务器会再给客户端回应一个响应消息
Http传输协议就是服务器与客户端之间消息内容的标准,双方有了一个标准(约定)后,才能彼此建立通信
那么,问题来了??我打开一次百度首页,服务器需要给我的PC响应几次呢?
这段话写的很好,送给即将秋招毕业的自己和大家,一起加油吧!
你在电脑前看这段文字, 写文字的人在百度等你。 N年前你来到了这个世界, N年后你想改变世界。 期待你脚踏祥云, 与百度一起改变世界。
- 答案是响应多次
在Network这一栏,每一个Name就是对应一次请求。
每一个图片,js,css文件都是单独的请求,他们都是独立请求的。先建立连接,然后发送数据,最后断开连接。然后这个页面的每一个资源都是如此。所以发送了多次请求!
特点
- 基于 TCP / IP 的高级协议
- 默认端囗号:
80
- 基于 请求/响应 模型的:一次请求对应一次响应
- 无状态的:每次请求之间相互独立,不能交互数据
历史版本
1.0:每一次请求响应都会建立新的连接
1.1:复用连接
就像是上面百度首页的响应,在1.0时资源A请求完之后会立即断开连接,这样当页面资源很多时会很耗时。而1.1版本则是A获取完资源后不会立即断开,会有一个等待时间,如果在此时间段内有客户端有请求,则会复用这个连接继续响应。
# 2. 请求消息数据格式
# 2.1 请求行
请求方式 请求url 请求协议/版本
GET /login.html HTTP/1.1
请求方式:
I. GET
- 请求参数在请求行中,在URL之后
- 请求的URL长度有限制
- GET不安全
II. POST
- 请求参数在请求体中
- 请求的URL长度无限制
- POST相对安全
# 2.2 请求头
请求头名称:请求头值
常见的请求头:
- User-Agent:浏览器告诉服务器,你使用的浏览器版本信息
- 可以在服务器端获取该头的信息,解决浏览器的兼容性问题
告诉服务器,我从哪里来?
作用:
防止盗取链接(盗版视频播放网站)
统计工作:
# 2.3 请求空行
空行,就是用于分割POST请求的请求头和请求体的。
# 2.4请求体
请求体(正文)
封装POST请求消息的请求参数的
字符串格式:
GET
/login.html
HTTP/1.1
Host:localhost
User-Agent:Mozilla/5.e(Windows NT 6.1;Win64;×64;rv:60.0)Gecko/20100101 Firefox/60.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding:gzip,deflate
Referer:http://localhost/login.html
Connection:keep-alive
Upgrade-Insecure-Requests:1
空行,就是用于分割POST请求的请求头和请求体
uername = Mr.Q
# 3.响应消息数据格式
request对象和response对象的原理
request
和response
对象是由服务器创建的,我们来使用它们request
对象是来获取请求消息,response
对象是来设置响应消息