学习——JavaWeb04:HTTP协议
1.1 什么是协议?
协议:是通信双方应该遵守的一个共同的规则。相当于两个人交谈要使用同一种语言。
那么,两台计算机(两个人)按照指定的规则,一方发送数据(一个人说),另外一方才能接受到数据(另一个人听)。
让互联网中的计算机可以相互收发数据的这个规则,就是HTTP协议。
http协议:
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。
http的相关概念: http://127.0.0.1:9090/test/1.html
1、域名代替IP,默认端口是80(如果端口号是80,可以省略不写)
相当于 http://www.baidu.com
代替 IP: 115.239.211.112
2、http协议永远是客户端(浏览器或者手机等)发送请求,服务器回送响应
客户端访问服务端称为客户端的请求,服务器给浏览器回送数据称为服务器的响应。
3、http协议是基于TCP协议。
注意:基础班学习网络编程的时候学习过:UDP、TCP他们都是传输层的协议。
就业班学习的协议基本都是应用层的协议:主要是针对的是应用程序。(什么是应用层协议,参考资料文件夹中的《网络七层协议介绍》,该内容做了了解,不要求掌握)
那么之前安装好tomcat之后,我们也在使用浏览器获取tomcat服务器的资源,使用的也是http协议,如何查看http协议呢?
答:chrome(谷歌):内置 f12 firefox(火狐):安装firebug
访问:tomcat效果:
chrome(谷歌):内置 f12:
firefox(火狐):安装firebug
安装地址:
使用两个浏览器的原因:用户使用那种浏览器,程序员并不知道,但是,市面上主要的浏览器,就是谷歌和火狐,国产浏览器内核也是谷歌或者火狐,因此我们需要掌握两种浏览器的使用。
1.2 HTTP协议中的请求格式(浏览器——>服务器)
目的1: 知道浏览器把什么样的数据发送给服务器
目的2: 知道发送的数据格式
准备知识:
注意:HTTP请求方法有很多,我们目前要了解和使用的是get和post,所以在演示和解析请求的时候,我们演示get和post请求
HTTP请求方法根据HTTP标准,HTTP请求可以使用多种请求方法。 HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。 HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
|
准备测试html:
<form action="http://localhost:9090/test/1.html" method="post"> <input type="text" name="username"><br> <input type="submit" value="提交"> </form> |
介绍HTTP协议中规定的客户端请求服务器数据时的请求协议格式:
http规定:请求的数据必须分成三部分:
1、 请求行
2、 请求头
3、 请求体
这是get请求
火狐:
注意:get请求没有请求体,请求参数在请求行中
这是post请求:
谷歌:
火狐:
注意:post请求,请求参数在请求体中
1.2.1 请求行:分成3部分:
请求行:GET /test/2.html HTTP/1.1
GET: 请求方式
/test/1.html?name=tom :请求地址 ?后面是请求参数(用户名密码等等。。。)
HTTP/1.1:HTTP版本
什么是请求方式?
答:请求方式就相当于回家的开门方式:get方式相当于拿钥匙开门 post方式相当于电子密码锁开门
问:那么使用浏览器如何发送get请求?
答:A标签和直接地址栏输入都是get请求
问:那么使用浏览器如何发送post请求?
答:使用form表单就是post请求
GET和POST的区别?
第一:
Get请求:暴露请求参数在地址栏不安全
POST:不会暴露参数
第二:
Get请求方式数据有长度限制,所有浏览器,都不允许,在地址无限的书写内容
Post请求方式,长度没有限制,可用户文件上传这样的功能。
什么是请求地址?
答:相当于你家的门牌号码,通过这个找到你家
请求地址说明:
请求地址:/test/1.html?name=tom
“/” 当前服务器根路径——http://localhost:8080
“test”服务器中资源名称
“?”开启拼接请求参数
“name=tom”请求参数 post方式请求参数的请求体中
什么是HTTP版本?(了解)
答:跟软件一样,协议,过一段时间要适合互联网发展,做更新
HTTP现在使用的版本:HTTP/1.1
早期1.0版本运行图解:一次请求,获取一次资源(响应),效率慢
明显缺陷:浏览器和服务器建立连接后,每次只能处理一次请求。
为了克服上述1.0的缺陷,http1.1 应运而生。它支持持久连接,也就是说在一个TCP连接上可以传送多个http请求和响应,从而减少建立和关闭连接的消耗延时。
1.2.2 请求头:
它是有key和value组成的数据,key和value之间必须使用冒号隔开。一个key可以对应多个value值。
Host localhost:9090 服务器的域名
User-Agent Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/55.0 首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。
Accept text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8 客户端可以处理的内容类型(text/html,超文本)
Accept-Language zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 使用的语言
Accept-Encoding gzip, deflate 压缩格式
Referer 当前页面的来源页面的地址
Content-Type application/x-www-form-urlencoded 发送前对所有字符进行编码
Content-Length 12 数据长度
Connection keep-alive 保持网络连接
Upgrade-Insecure-Requests 1客户端优先选择加密及带有身份验证的响应
后期需要使用到的是:
Referer:可以用在用户登陆之后,跳转之前浏览的页面功能上
User-Agent:处理浏览器兼容性问题
有不明白的消息头,可以按一下方式查询:
请求体:post请求,会将请求要发送的参数,设置到请求体中
1.3 HTTP协议中的响应格式(服务器——>浏览器)
http协议中在定义响应格式:分成3部分:
1、 响应行
2、 响应头
3、 响应体
响应体:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1><a href="http://www.baidu.com">百度</a></h1> </body> </html>
|
1.3.1 响应行:分成三部分:
响应行:HTTP/1.1 200 OK
http/1.1 表示http协议和版本
200 响应状态码
OK 状态码代表意义 ,请求成功,响应完成
Xml技术?
-1 888 20170924xxxxx
<msg>
<status>-1</status>
<time>888</time>
<orderid>20170924xxxxx </orderid>
</msg>
1.3.2 响应行中的状态码:
常见状态码:
200 - 请求成功(一般不会显示)
302 - 请求重定向 (response)
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误(如果遇到500的情况,表示的是java代码出错误)
1.3.3 常见的响应头信息参数说明
Location: http://www.it315.org/index.jsp // 通常告知浏览器 马上向该地址发送请求 通常 和 302 一起使用!!
(重点) 结合302完成重定向 操作 Location重定向后地址
Server:apache tomcat 服务器类型
Content-Encoding: gzip 响应编码类型 gzip压缩
Content-Length: 800 响应体的长度
Content-Language: zh-cn 响应语言
Content-Type: text/html; charset=GB2312 响应字符集 决定浏览器打开文件格式类型 以及编码
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 和If-Modified-Since 一起使用,实现服务器缓存策略
Refresh: 3;url=http://www.jd.com (页面自动刷新)
3 表示是的时间,3秒
url 地址
到3秒后,页面刷新url
1.3.4 响应体——页面要展示的内容
服务器输出给浏览器显示的内容.
响应体:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <!-- <h1><a href="http://www.baidu.com">百度</a></h1> --> <form action="http://localhost:9090/test/1.html" method="post"> <input type="text" name="username"><br> <input type="submit" value="提交"> </form> </body> </html> |