javhd观看教程

超文本传输协议(HTTP,Hypertext Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的Web文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force)共同合作研究,最终发布了一系列的RFC文档,其中著名的RFC 2616定义了HTTP 1.1。

HTTP基于TCP/IP通信协议来传递数据,HTTP属于OSI网络七层协议模型中的最上层:应用层,由请求和响应组成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。HTTP协议的版本有0.9、1.0、1.1和2.0,目前广泛使用的是1.1版本。

HTTP默认端口号为80。它也可以承载在TLS和SSL之上,通过加密、认证的方式实现数据传输的安全,称为HTTPS,HTTPS默认端口号为443。

HTTP协议具有以下特点:

● 简单快速,客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET和POST。每种方法规定了客户与服务器联系时的类型。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

● 灵活,HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

● 无连接,无连接的含义是限制每次连接只处理一个请求。服务器处理完成客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

● 无状态,HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重新传送数据,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要之前的信息时它的应答就比较快。

HTTP协议规定了Web的基本运作过程,以及浏览器与Web服务器之间的通信细节。客户端主动发出HTTP请求,服务器端接收HTTP请求,再返回相应的HTTP响应结果。客户端与服务器端之间的一次信息交换包括以下过程:

● 客户端与服务器端建立TCP连接。

● 客户端发出HTTP请求。

● 服务器端发出响应的HTTP响应。

● 客户端与服务器端之间的TCP连接关闭。

当用户在浏览器中输入URL地址:http://www.itxdl.cn后,浏览器与服务器之间的具体通信过程如下:

● 浏览器与网络上域名为www.itxdl.cn的Web服务器建立TCP连接。

● 浏览器发出要求访问index.html(网站主页,欢迎页)的HTTP请求。

● Web服务器在接收到HTTP请求后,解析HTTP请求,然后发回包含index.html文件数据的HTTP响应。

● 浏览器在接收到HTTP响应后,解析HTTP响应,并在窗口中展示index.html文件。

● 浏览器与Web服务器之间的TCP连接关闭。

当用户在上面的网站页面中用鼠标点击“JavaEE工程师”的超链接时,将会触发浏览器与Web服务器开始一次新的HTTP通信,在这次通信过程中,浏览器会发出请求访问“JavaEE工程师”页面的HTTP请求。

从浏览器与Web服务器的通信过程中,可以看出浏览器应该具备以下功能:

● 请求与Web服务器建立TCP连接。

● 创建并发送HTTP请求。

● 接收并解析HTTP响应。

● 在浏览器窗口中展示HTML文档。

Web服务器应该具有以下功能:

● 接收来自客户端浏览器的TCP连接请求。

● 接收并解析HTTP请求。

● 创建并发送HTTP响应。

HTTP客户端程序和HTTP服务器分别由不同的软件开发商提供,目前最常使用的HTTP客户端程序包括IE(Microsoft Edge)、Firefox、Opera和NetScape、Chrome等,最常用的HTTP服务器包括IIS和Apache等。HTTP客户程序和服务器程序都可以用任意的编程语言编写,那么用VC编写的HTTP客户程序能否与用Java编写的HTTP服务器顺利通信呢?答案是肯定的。此外,运行在Windows平台上的HTTP客户程序能否与运行在Linux平台上的HTTP服务器通信呢?答案也是肯定的。

HTTP客户程序和服务器程序分别用不同的语言编写,并且运行在不用的平台上,双方如何能看得懂对方的数据呢?这要归功于HTTP协议。HTTP协议严格规定了HTTP请求和HTTP响应的数据格式,只要HTTP服务器与客户程序之间的交换数据都遵守HTTP协议,双方都能看得懂对方发送的数据,从而能顺利交流。

HTTP协议由两部分组成,分别是请求部分和响应部分。

1.3.2 HTTP协议中的请求

客户端连接上服务器端后,向服务器端请求某个Web资源,称之为客户端向服务器端发送了一个HTTP请求。

一个完整的HTTP请求包含以下内容:

● 请求行

● 请求头

● 请求空行

● 请求体

一个HTTP请求的示例:

POST /servlet/login.html HTTP/1.1

Host: localhost:8088

Content-Length: 21

Cache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml; q=0.9,image/webp, */*;q=0.8

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64)

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip,deflate,sdch

Accept-Language: zh-CN,zh;q=0.8

name=snape&pwd=123456

现在我们分析上面请求示例中各部分的内容:

● 请求行

HTTP请求中的请求行描述了请求方法,请求的服务器地址以及所使用的HTTP协议版本。

上面的HTTP请求实例中,位于请求行中的POST称之为请求方式,HTTP协议中定义的请求方式如表1.1所示:

表1.1 HTTP协议中定义的请求方式

用户如果没有设置,默认情况下浏览器向服务器发送的都是GET请求,例如在浏览器中直接输入地址访问,点击超链接访问等都是GET请求,用户如果想把请求方式改为POST,可通过更改表单的提交方式实现。

不管POST还是GET,都用于向服务器端请求某个Web资源,这两种方式的区别会在本书的1.3.4小节中进行详细的介绍。

在请求行中,请求方式之后的是URL地址和HTTP协议的版本。它们之间使用空格分隔。

● 请求头

HTTP请求中的请求头由一个个的键值对组成,是用来通知服务器有关客户端的信息的。HTTP请求中常用以下的请求头来告诉服务器一些信息:

(1)Accept:浏览器可接受的MIME类型。

(2)Accept-Charset:浏览器可接受的字符集。

(3)Accept-Encoding:浏览器能够进行解码的压缩格式。

(4)Accept-Language:浏览器所处的语言环境环境。

(5)Host:浏览器通过这个头告诉服务器想访问哪台主机。

(6)Content-Length:表示请求消息的正文长度。

(7)Content-Type:表示请求的MIME类型。

(8)User-Agent:表示浏览器的标识信息。

(9)Cache-Control:标识浏览器缓存机制。

● 请求空行

在HTTP请求的请求头和请求体之间,使用了一个请求空行用来分隔,告诉服务器端已经没有请求头信息了。即使请求体中没有内容,也必须有一个请求空行

● 请求体

请求体用来向服务器发送数据信息,使用“key=value&key=value”的形式,在GET请求中,请求体是空的,GET请求的数据信息在请求行中的URL地址中进行拼接。

1.3.3 HTTP协议中的响应

一个HTTP响应代表了服务器端向客户端返回的数据,一个HTTP完整的响应包含了以下内容:

● 响应行

● 响应头

● 响应体

一个HTTP响应的示例:

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Last-Modified: Thu, 08 Sep 2016 12:59:41 GMT

Content-Type: text/html

Content-Length: 588

Date: Thu, 08 Sep 2016 12:59:54 GMT

这是一个HTML页面

现在我们分析上面响应示例中各部分的内容:

● 响应行

以及HTTP响应中的响应行用于描述服务器端对请求的处理结果,其中包括了HTTP协议的版本号已经响应状态码信息,状态码用于表示服务器对请求的处理结果。

响应状态码由三位十进制数字组成,第一个十进制数定义了状态码的类型,后两个数字没有分类的作用。响应状态码共分为5中类型,如下表1.2所示。

表1.2 响应状态码分类

目前比较常见的响应状态码如表1.3所示。

表1.3 常见响应状态码

● 响应头

响应头用于描述服务器的基本信息,以及对返回的数据进行描述,服务器通过这些数据的描述信息,通知客户端如何处理服务器端返回的数据。HTTP响应中常用以下的响应头来告诉浏览器一些信息:

(1)Server:服务器名称,一般由Web服务器设置的,如:Apache、Tomcat。

(2)Location:通过设置Location通知浏览器跳转到指定的地址再次发送请求。

(3)Content-Encoding:该响应头告诉浏览器返回的数据的压缩格式。

(4)Content-Length:该响应头告诉浏览器返回的数据的长度。

(5)Content-Type:通过该响应头告诉浏览器返回的数据的类型。

(6)Date:表示当前的GMT时间。

(7)Last-Modified:表示文档的最后修改时间。

● 响应体

在HTTP响应中的响应体中,包含了服务器端返回给浏览器的数据。根据Content-Type类型的不同,响应体中的数据形式也不同。

1.3.4 HTTP协议中的GET和POST请求的区别

● GET请求:

(1)GET请求的数据,以键值对的形式在请求行中的URL后,以?进行拼接,多个键值对之间使用&拼接。

(2)GET请求只能传输字符串类型的数据。

(3)GET请求因浏览器限制URL长度的原因只能传输少量数据。

(4)因为GET请求会将传输的数据显示在地址栏中,所以相对POST请求不安全。

● POST请求:

(1)POST请求的数据,以键值对的形式存储在请求体中,多个键值对之间使用&拼接。

(2)POST请求可以传输任意类型的数据。

(3)POST请求对传输的数据的大小没有限制。

(4)相对于GET请求,POST请求不会将传输的数据显示在地址栏中,较为安全。

标签: java   教程  
来源:星岛中文网
编辑:GY653

免责声明:本网站内容主要来自原创、合作媒体供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。

  • 相关推荐