JavaWeb学习之HTTP协议

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Curry_On/article/details/88372358

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协议学习的笔记总结,由于目前的学习才刚开始,内容并不是很深入,随着后续的学习会继续更新。若发现问题希望大家及时指正!

猜你喜欢

转载自blog.csdn.net/Curry_On/article/details/88372358
今日推荐