初探Tomcat源码 (1) —— Http请求和响应

来源:互联网 发布:java初学者项目案例 编辑:程序博客网 时间:2024/05/22 09:39

        HTTP (HTTP-Hypertext transfer protocol),超文本传输协议,是超媒体系统应用之间的通信协议。是一个让网络客户端和服务器端相互传输交互的协议,是Request和Response的协议,简单来说,就是Client发送请求Request,而Server响应请求Response。

        【另外,在HTTP中,服务器端不能主动连接客户端,都是客户端先请求,服务器端再响应。所以基于HTTP的 客户端 实时响应 服务器端 ,只能通过长连接,或者定时轮训等方式来实现,此处不做讨论】


HTTP请求Request

Request就是客户端向服务器端发送的请求,举个简单的例子,我们访问本地,输入网址http://localhost:8080/test/index.jsp,并按回车,这时候就向本地服务器发送了一个访问的请求,这个就是HTTP的Request。

一个完整的Http的请求Request如下:

POST /test/index.jsp HTTP/1.1

Accept: text/plain; text/html

Accept-Language: en-gb

Connection: Keep-Alive

Host: localhost

User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows98)

Content-Length: 33

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

Accept-Encoding: gzip, deflate

lastName=Franks&firstName=Michael   

 

Request主要包含三个部分:

1、方法 + URI + 协议/版本

对应上面的【POST  /examples/default.jsp HTTP/1.1】,方法:POST;  URI:/examples/default.jsp;  协议版本:HTTP/1.1

请求方法Method包括:GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE。其中GET和POST最常用。

2、请求头部Header,一系列通过“:”连接的key-value。这些键值都是客户的环境信息,例如:浏览器语言,主体内容的长度等等。

3、主体内容Body,除了上面两个,剩余的部分,通常是“=”连接的key-value

 

HTTP响应Response

Response是服务器端接到客户请求,处理后再返回给客户端。Request和Response是配对的,只要客户request,服务器就会返回Response。

举个简单的例子,我们输入网址http://localhost:8080/test/index.jsp,按回车后,这时候浏览器显示的就是从服务器返回的内容,这个返回的内容就是HTTP的Response。

一个完整的Http的请求Request如下:

HTTP/1.1 200 OK

Server: Microsoft-IIS/4.0

Date: Set, 4 May 2013 13:13:33 GMT

Content-Type: text/html

Last-Modified: Set, 4 May 2013 13:13:12 GMT

Content-Length: 112

<html>

<head>

<title>HTTP Test</title>

</head>

<body>

Hello World !

</body>

</html>

 

Response主要包含三个部分:

1、协议/版本 +状态标识 + 描述,对应【HTTP/1.1 200 OK】,

协议/版本:HTTP/1.1;  状态标识:200;  状态描述:OK 。

2、响应头部Header,一系列通过“:”连接的key-value。

3、主体内容Body,除了上面两个,剩余的部分。就是我们平时编写的HTML格式,以供浏览器呈现。


这部分介绍了HTTP的请求和响应,那么他们两个之间是怎么样在网络中传输通信的呢?就需要使用Socket


— — 参考《How Tomcat Works》

 

原创粉丝点击