web开发 必须先 熟悉 http协议
客户端和服务器建立通信连接后,进行数据交互,使用协议进行交流
HTTP协议特征
1、基于TCP传输协议
OSI七层网络体系结构 : 物理层、数据链路层、网络层、传输层、表示层、会话层、应用层
TCP 是 传输层 协议
HTTP 是 应用层协议 基于TCP 协议
TCP特征 : 三层握手
1)、A给B 说话: 能听到我说话吗?
2)、B回应:我能听到,能听到我说话吗?
3)、A回应:我也能听到
确保通信畅通的
A 给 B 发数据,如果B 没有回应,A 选择重新发送
2、默认端口80 省略端口 http://www.itcast.cn 省略 :80
3、基于请求-响应模式的协议
先请求,再出现响应
实验一 : 通过telnet 连接服务器,进行协议操作
XP 自动安装telnet
win7 系统 安装telnet插件
* telnet 采用 传输层连接原理方式 通信内容必须严格按照应用层协议
语法:telnet ip port
1、 cmd> telnet localhost 80
2、手动输入HTTP协议请求
telnet乱码解决:ctrl+] 回车
3、输入协议内容
GET / HTTP/1.0
HOST: localhost
回车
实验二 : 安装Httpwatch
完成访问web页面时 http协议数据包 抓取
查看网络连接过程中 http协议内容
请求内容
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*
Accept-Language: zh
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: localhost
Connection: Keep-Alive
响应内容
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"7347-1184876416000"
Last-Modified: Thu, 19 Jul 2007 20:20:16 GMT
Content-Type: text/html
Content-Length: 7347
Date: Sat, 09 Jun 2012 07:02:35 GMT
<?xml version="1.0" encoding="ISO-8859-1"?>
...
HTTP 和 HTML 关系 ?
HTTP 通信协议 规定数据传输格式
HTML 网页设计语言,静态网页数据
HTTP 传输格式 、HTML 传输内容
HTTP/1.0、HTTP/1.1 区别?
1.0 一次 与服务器连接 只能获得一个资源
1.1 一次与服务器连接 ,连续获得多个资源
思考题:
一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求。
* 三幅图片地址是否相同
如果三幅图片地址都不相同
第一部分 HTTP 请求
请求完整格式 包括三个部分 : 请求行、头信息、请求体
1、请求行:请求中第一行信息
例如: GET / HTTP/1.1
HTTP请求方式有几种 : POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用两种: GET 、 POST
客户端网页哪些是GET方式请求? 哪些是 POST 请求
GET方式 :1、用户直接在浏览器上手动输入url地址 2、<a href="url"></a> 3、<form method="get" > *form表单默认提交方式就是get
POST方式: 1、<form method="post" >
GET提交方式和POST提交方式区别 ?
Get url地址后携带数据有大小限制 1K ,提交数据在url上显示
* http://localhost/day04/url?username=zhangsan 格式 url?name=value&name=value&name=value...
以?分隔url和参数,参数采用键值对格式,多个参数使用& 符合分隔
POST 数据在请求体中,不在url上显示 ,没有数据大小限制
* username=zhangsan 请求体和头信息直接存在一个空行
2、头信息: 很多key -value
Accept: text/html,image/*
Accept-Charset: ISO-8859-1
Accept-Encoding: gzip
Accept-Language:zh-cn
Host: www.itcast.com:80
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
Referer: http://www.itcast.com/index.jsp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2000 18:23:51 GMT
******* Accept-Encoding 、If-Modified-Since 、Referer
Referer 防止客户盗链数据 :通过google搜索页面直接下载 其它网站数据 (盗链)
模拟浏览器访问服务器 获得 refererServlet当中信息
1) URL 连接
2) Socket 连接
3、请求体: 存放客户端提交post 请求 数据
key=value&key=value&key=value ....
例如 : username=sss
第二部分 HTTP响应
响应数据 分为三个部分 :状态行、头信息、响应体
1、状态行 分为三个部分: HTTP协议版本、状态码、描述信息
例如: HTTP/1.1 200 OK
100~199 Informational 请求信息不足 ,还需要其他信息才能处理
200~299 Success 请求处理成功
300~399 Redirection 服务器已经处理完毕,客户端还需要进一步动作
400~499 Client Error 客户端错误
500~599 Server Error 服务器端错误
200 请求处理成功 302 客户端进行重定向 304 客户端访问资源没有被修改后,客户端访问本地缓存 404 访问资源不存在 500 服务器内部出错
借钱
200 A 找 B 借钱 B 将钱 借个A
302 A 找 B 借钱 B 通知 A 找C 借钱
304 A 找 B 借钱 , B对A 说 借过了
404 没钱
505 B 不存在了
2、响应头
Location: http://www.it315.org/index.jsp
* 重定向 两次请求 两次响应
Server:apache tomcat
Content-Encoding: gzip
* 如果响应数据经过压缩 传输体积更小,性能更好
没有压缩情况下 13605字节 http://localhost/docs/
如何设置tomcat压缩
* 通过设置 tomcat/conf/server.xml 设置响应数据压缩
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" compressableMimeType="text/html,text/xml,text/plain" compression="on"/>
* 清除浏览器缓存,重启tomcat
4244字节 http://localhost/docs/
Content-Length: 80
Content-Language: zh-cn
Content-Type: text/html; charset=GB2312
* 数据类型采用Mime协议规定类型 html文件
* 在 tomcat/conf/web.xml 中查看文件mime类型
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
* ETag: W/"13397-1184876416000" tomcat生成Etag 13397文件大小 1184876416000文件最后修改时间(精确毫秒)
* 客户端下次请求时通过If-None-Match 携带刚刚 Etag信息
Refresh: 1;url=http://www.it315.org
Content-Disposition: attachment; filename=aaa.zip
控制该程序在客户端不缓存
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
* 对于动态程序,经常修改, 禁止浏览器缓存内容
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2000 18:23:51 GMT
重点:302结合Location进行重定向 、在tomcat配置gzip压缩 、tomcat缓存策略 、禁止浏览器缓存
3、响应体
通常HTML 文件内容
通过HTTP协议Range头信息 实现断点下载功能
在连接服务器目标资源进行下载过程中,传递Range头信息, 指定下载目标资源部分内容
使用URL类 模拟客户端访问 WebRoot/info.txt 下载文件中内容
小结:
1、Tomcat安装配置
2、tomcat 理论细节 Tomcat和JAVAEE、Servlet、JDK版本对应关系 、Tomcat目录结构、标准网站目录结构
3、虚拟目录映射三种方式
4、虚拟主机配置(虚拟主机DNS解析过程)
5、在MyEclipse中 使用Tomcat
6、HTTP 请求方式几种? GET和POST区别?
7、HTTP 协议头信息 Referer防盗链案例、Location重定向、tomcat的gzip配置、tomcat缓存策略、禁止浏览器缓存
8、Range断点下载 了解即可