JavaWEB10 Http协议 & Servlet
案例: 客户端与服务器端之间的通讯 (with HttpWatch)
- 安装抓包工具HttpWatch(IE & 火狐插件 支持win10 ie11的httpwatch pro,亲测可用,点击下载)
- 打开tomcat,进入host主页,选择Example
- 选择servlet例子 → Request Parameter
- 开启HttpWatch工具,同时运行tomcat提供的例子
一. Http协议 (详细定义可查Http协议详解)
1. Http请求数据解释
> 请求的内容里面包含三个部分内容:请求行 / 请求头 / 请求体
1.1 请求行 :
POST /examples/servlets/servlet/RequestParamExample HTTP/1.1
- POST : 请求方式 ,以post去提交数据
- /examples/servlets/servlet/RequestParamExample :请求的地址路径 , 就是要访问哪个地方。
- HTTP/1.1 :协议版本
1.2 请求头
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif,image/pjpeg, application/x-ms-xbap, */*
Referer: http://localhost:8080/examples/servlets/servlet/RequestParamExample
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; Media Center PC 6.0; .NET4.0C;.NET4.0E)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 31
Connection: Keep-Alive
Cache-Control: no-cache
- Accept: 客户端向服务器端表示,我能支持什么类型的数据。
- Referer : 真正请求的地址路径,全路径
- Accept-Language: 支持语言格式
- User-Agent: 用户代理 向服务器表明,当前来访的客户端信息。
- Content-Type: 提交的数据类型。经过urlencoding编码的form表单的数据
- Accept-Encoding: gzip, deflate : 压缩算法 。
- Host : 主机地址
- Content-Length: 数据长度
- Connection : Keep-Alive 保持连接
- Cache-Control : 对缓存的操作
1.3 请求体:浏览器真正发送给服务器的数据
> 发送的数据呈现的是key=value ,如果存在多个数据,那么使用 & :如firstname=zhang&lastname=sansan
2. Http响应数据解析
> 请求的数据里面包含三个部分内容 : 响应行 、 响应头 、响应体
2.1 响应行:
HTTP/1.1 200 OK
协议版本 状态码
常见状态码:
- 200:成功,正常处理,得到数据
- 403:For Bidden 拒绝
- 404:Not Found
- 500:服务器异常
2.2 响应头
Server: Apache-Coyote/1.1 服务器是哪一种类型
Content-Type: text/html;charset=ISO-8859-1 服务器返回给客户端的内容类型
Content-Length: 669 返回的数据长度
Date: Tue, 18 Dec 2018 10:07:36 GMT 通讯的日期,相应的时间
3 Get 和 Post 请求区别:请求路径不同 / 带上的数据不同
二. Servlet
1. Web资源
在http协议当中,规定了请求和响应双方,客户端和服务器端。与web相关的资源有两种分类
- 静态资源:html \ js \ css
- 动态资源:servlet \ jsp