JavaWeb 中的 Http协议
什么是http
Hyper Text Transfer Protocol超文本传输协议
就是定义了客户端和服务器端通信时,发送数据的格式
web浏览器与web服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是Http协议
Http协议约束
- 约束了浏览器以何种格式向服务器发送数据
- 服务器端以何种格式接受客户端发送的数据
- 服务器端以何种格式来反馈数据给浏览器
- 浏览器端以何种格式来接受服务器端反馈的数据
Http的特点
- 基于TCP/IP的高级协议
- 默认端口号为:80
- 基于请求/响应模型的:一次请求对应一次响应
- [无状态的]:每次请求之间相互独立,不能交互数据,服务端不知道上一次是哪一个客户端请求发送的数据。
Http历史版本
HTTP1.0(1996):每次请求响应都会建立新的连接,tcp协议
HTTP1.1(1999):长连接(多次请求同用一个连接)
HTTP1.2(2015):支持压缩,提高效率(支持push推送)
HTTP3.0(2019):让http改成udp协议
Http1.0
规范
>若请求的有多个资源,就必须建立多次连接,发送多次请求,接收多次响应,关闭多次连接
缺点
>每次请求资源都要建立独立的新的连接,请求完毕关闭连接,比较浪费资源。 >为了解决上述问题,出现了Http1.1
Http1.1
规范
>能在建立一次连接,发送多次请求,多次响应,响应完成之后再关闭连接
特点
>一次连接多个http请求和响应 >多个请求过程可以进行重叠进行 >增加了更多的请求头和响应头
请求方式的区别
Get和Post
get的请求参数在地址栏上显示,post不会
get的请求参数放于请求行中,post的请求参数在请求体中
get的请求的url长度有限制(最大2kb),post没有限制
get可以缓存数据,post没有缓存
使用场景
提交表单数据使用post,其他使用get
常见的状态码
200 响应成功
302 重定向
304 从缓存中读数据
404 请求资源为找到
405 请求的方法未找到
500 服务器内部错误