Servlet:超文本传输协议
- 网络的三大基石
- http超文本传输协议
- http协议的请求与响应
- post和get方式请求差异
网络三大基石:
- url:负责定位资源
- http:负责传输资源的规则
- HTML:负责显示资源
http超文本传输协议
隶属于tcp/ip协议的子协议簇,所以http是一种安全的连接方式。
- 1,是一个单向性的协议,必须先有请求再有响应。原来的http协议都是一次连接只能发送一次请求,好处在于大家可以使用服务器,缺点建立连接浪费资源
- 建立链接
- 发送请求
- 返回响应
- 关闭连接 * N
- 2,HTTP协议1.1之后开始支持长连接,一次连接可以有多次请求
- 建立链接
- 发送请求
- 返回响应 *N
- 返回响应
- 关闭连接 * 1
- 建立链接
- 3,HTTP协议都是无状态的协议,对事务的处理没有任何的记忆功能
- 解决问题的方法:
-
- Cookie*
-
- Session *
Http协议分为两部分:
请求
- 请求行
- GET / HTTP/1.1
GET 请求方式
/:资源的请求地址uri
HTTP/1.1:请求协议的版本号
- GET / HTTP/1.1
请求头
- Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, /
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Host: www.baidu.com
Connection: Keep-Alive
Cookie: BAIDUID=8DE5B8771CCBC8BE2B7C2376F6BF04D2:FG=1; BIDUPSID=190F4BE69277526ED65E1C6BA2660033; PSTM=1471483760; BD_LAST_QID=9775626997723070266
- Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, /
请求实体内容
- 存放post方式的请求参数
- 请求行
- 响应
- 响应行(状态行
- HTTP/1.1 200 OK
协议版本号
状态码:1消息2成功3重定向4请求错误56服务器错误
状态描述
- HTTP/1.1 200 OK
- 响应头(应答头)
- **Server: bfe/1.0.8.18
Date: Sun, 18 Sep 2016 06:44:58 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: private
Cxy_all: baidu+b77b0310ad629143b5a3e24b7c28bf7f
Expires: Sun, 18 Sep 2016 06:44:51 GMT
X-Powered-By: HPHP
X-UA-Compatible: IE=Edge,chrome=1
Strict-Transport-Security: max-age=604800
BDPAGETYPE: 1
BDQID: 0x9d4556e30000a6c6
BDUSERID: 0
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=1420_19033_12896_17943_21092_17001_21161_20719; path=/; domain=.baidu.com
Content-Encoding: gzip
Set-Cookie: __bsi=12654872556865954990_00_6_R_N_4_0301_C013_N_I_I_0; expires=Sun, 18-Sep-16 06:45:03 GMT; domain=www.baidu.com; path=/
- **Server: bfe/1.0.8.18
- 响应实体内容
- 就是我们具体显示的内容
- 响应行(状态行
post和get方式请求的时候有什么差异:
1. get方式请求参数放在地址栏,post方法参数放在实体内容中
2. get方式会有缓存,post方式没有缓存
3. post方式安全性较高,用户无法直观的查看;get方式安全性较低,用户可以直接查看用户名和密码,最主要原因在于密码会存放在缓存中
4. post发送数据数据量大
相对较大
get方法数据数据量小
url长度为2-4K
但是服务器可以根据安全考虑自定义读取的大小
5. 查询的时候用get
get方式有缓存,可以减少网络加载资源的时间
幂等 :重复做相同的操作可以得到相同的结果
--增删改的时候用post