HTTP协议是JavaWeb学习以及开发的基础,每一个请求和响应都是web开发中最基本的操作,因此要学习JavaWeb就必须要了解HTTP协议。
-
首先,什么是HTTP?
HTTP就是超文本传输协议,用于定义客户端浏览器和服务器之间交换数据的过程。
-
特点:基于请求-响应模型,先有客户端的请求,然后再是服务器的响应。
-
组成:HTTP请求协议包括:请求行、请求头、请求体;
类似地,HTTP响应协议包括:响应行、响应头、响应体
那么,什么是HTTP请求?
客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。
请求包括一个请求行、若干请求头以及请求体内容,请求头和请求体内容之间要用空行隔开。
下面来分别介绍下请求行、请求头以及请求体:
-
请求行:
请求行里包含了HTTP的请求方式,请求资源名称,HTTP版本
例如:POST /post.html HTTP/1.1 格式:请求方式 资源路径 协议/版本
其中常见的请求方式有:POST、GET、DELETE、PUT :
GET请求:向服务器的特定资源发出查询请求,一般用于查询数据和资源的请求中。
- get请求查询的参数可以在浏览器中的地址栏中显示。
- 请求的数据会附在URL之后,以?分割URL和传输的数据,多个参数用&连接。
- get请求没有请求体。
例如:
GET /get.html?name=xiaoming&passWord=1234567 HTTP/1.1
POST请求:向服务器提交数据,一般用在客户端将本地数据或者资源提交给服务器,例如:注册用户,将用户信息提交给服务器;POST请求会把请求的数据放置在请求体中。
<通过以上的介绍可以看出,GET请求通常用于查询操作,而POST通常用于提交数据操作。二者的区别不仅仅是功能用途上的区别,还体现在:在HTTP规范中,没有对URL的长度和传输的数据大小进行限制,但是在实际开发过程中,对于GET请求,特定的浏览器和服务器对URL的长度有限制,所以在使用GET请求时传输的数据会受到URL长度的限制;而对于POST请求,由于不是URL传值,理论上可传输的数据长度是不受限制的,所以POST可以用于数据较大的场景。>
而DELETE请求则用于删除数据,PUT请求用于更新数据。
-
请求头:
用于描述客户端请求哪台主机,以及客户端的一些环境信息等,请求头一键值对(key=value)的形式传递数据。
例如:Host : localhost:8080 Connection : keep-alive
-
请求体:
代表着浏览器在post请求方式中传递给服务器的参数,请求体中的每一个数据使用键值对(key=value)的形式,多个值用&连接。注:服务器在接受到请求体后需要单独解析。
例如:name=xiaoming&passWord=1234567
下面说说什么是HTTP响应?
一个HTTP响应代表服务器向客户端回送的数据,它包括一个响应行、若干响应头、以及响应体,其中的
一些响应头和响应体的内容都是可逆的,响应头和响应体内容之间要用空行隔开。
同样地,下面来分别介绍下响应行、响应头、以及响应体:
-
响应行:包含了HTTP协议的版本,以及用于描述服务器对于请求的处理结果。
例如:HTTP/1.1 200 OK 格式 : 协议/版本 状态码 状态码的描述
其中状态码是指服务器和浏览器用于确定状态的固定数字号码:
200 : 请求成功 302 : 请求重定向 404 : 请求资源不存在,通常是访问路径写错了或者是服务器删除了该资源 500 : 服务器内部发生错误
-
响应头:响应头用于描述服务器的基本信息以及对数据的描述,服务器通过这些数据的描述信息可以通知客户端该如何处理它们。例如:
Content-Length :2291 // 返回内容的长度 Content-Type : text/html // 表示返回内容的类型
-
响应体:代表服务器向客户端浏览器回送的正文。
以上是我在JavaWeb学习中关于HTTP协议学习的笔记总结,由于目前的学习才刚开始,内容并不是很深入,随着后续的学习会继续更新。若发现问题希望大家及时指正!