JavaWeb 中的 Http协议

什么是http

Hyper Text Transfer Protocol超文本传输协议
就是定义了客户端和服务器端通信时,发送数据的格式
web浏览器与web服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是Http协议

Http协议约束

  1. 约束了浏览器以何种格式向服务器发送数据
  2. 服务器端以何种格式接受客户端发送的数据
  3. 服务器端以何种格式来反馈数据给浏览器
  4. 浏览器端以何种格式来接受服务器端反馈的数据

Http的特点

  1. 基于TCP/IP的高级协议
  2. 默认端口号为:80
  3. 基于请求/响应模型的:一次请求对应一次响应
  4. [无状态的]:每次请求之间相互独立,不能交互数据,服务端不知道上一次是哪一个客户端请求发送的数据。

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 服务器内部错误