HTTP请求与响应

一.http请求过程

域名解析 –> 发起TCP的3次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) –> 浏览器对页面进行渲染呈现给用户
TCP/IP 三次握手
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。
(1) 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
(2) 第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
(3) 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。

二.http请求报文

http请求报文由四部分组成请求行请求头空行请求体
请求行:请求方法、请求URL和HTTP协议及版本
请求头:键值对形式的请求信息,常用有
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
Content-Type:text/html; charset=utf-8
Cookie:将客户端的cookie放在请求头里一并发送给服务器端.
空行:请求头和请求体之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求体。
请求体:请求体中可以包含客户提交的查询字符串信息(Get请求不需要,POST需要)。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。
HTTP请求与响应_第1张图片

三.Http响应报文

http响应报文由四部分组成响应行响应头空行响应体
响应行:一般由协议版本、状态码及其描述组成 比如 HTTP/1.1 200 OK
响应头:响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据
空行:表示响应头结束
响应体:响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。
HTTP请求与响应_第2张图片

四.常用的请求类型

1.Get:请求指定的页面信息,并返回实体主体

1)一般适用于客户端从服务器获取数据时
2)请求参数以请求参数和对应的值的形式附在URL后面,以?划分URL的结尾和请求参数的开始
3)有传递参数长度限制,参数显示在URL,较为不私密,不可传输大量数据
4)一般不包含请求体

2.POST:请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

1)一般适用于客户端向服务器提交信息
2)请求参数以名=值得形式,&拼接多个参数,放在RequestBody中
3)没有数据大小的限制,参数不显示在URL,较为私密,可以传输大量数据
4)需要请求体

3.HEAD:只请求页面的首部。

1)类似GET,只返回响应头,不会发送响应内容。
2)高效用于只需要查看某个页面的状态的时候,使用HEAD是非常高效的

4.PUT:在服务器更新资源,调用update操作。

1)类似于post请求,继承HttpEntityEnclosingRequestBase,具有Entity

5.DELETE:从服务器删除资源,调用delete语句

1)类似于get请求,继承HttpRequestBase,不具有Entity

五.常用注解

1.RequestParam

用于将请求参数区数据映射到功能处理方法的参数上。
HTTP请求与响应_第3张图片
如上URL为:http://localhost:8080/demo/order/checkPayInfo.htm?categoryId=1
@RequestParam会自动将URL的参数部分的categoryId的值获取到,注入到checkPayInfo的名为category的入参,这里必须保持方法入参和URL上的参数名一致。
@Request(“category”)此写法不要求方法入参名于URL请求参数名一致

2.PathVariable

获取请求路径中的变量作为参数
HTTP请求与响应_第4张图片
如上URL为:http://localhost:8080/demo/order/subCategory/123.htm
@pathVariable会自动将URL同名占位处的parentId值(123),自动注入到方法入参(注解同名)

3.RequestBody

这里写图片描述
常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型

4.ResponseBody

@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。

你可能感兴趣的:(实习生成长经历)