`
ahuango
  • 浏览: 55620 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

读 [How Tomcat Works] Chapter4

阅读更多
在Tomcat中有两大核心:Connector 和 Container。
其中Connector的职责最主要的有两个:
  • 构建Request对象
  • 构建Response对象

Tomcat中Connector把Request和Response对象传给容器的流程是:
Connector -> Container.invoke(Request, Response) -> Servlet.service


书中首先讲解了HTTP 1.1的新特性:
1. persistent connection
在之前的HTTP协议中,服务器给一个Request发送完响应内容就断开连接。这样会使得同一个HTML文档中的image/flash/applet的请求由不同的连接来完成,这样将会降低性能(connection的建立和断开很耗资源)。 而在版本1.1中,可以使用同一个connection来下载这些资源。 这一新特性需要浏览器在请求头中加入属性:
connection:keep-alive

2. Chunked Encoding
由于支持persistent connection,这样服务器可以通过同一个connection来发送不同来源的东西,同样客户端用同一个连接来发送多个请求。所以,发送这必须在HTTP Header里附上content-length以方便接收者处理。然而有写servlet可能会在一部分数据可用的时候先发送这些数据,此时整个内容的长度并不可知。
HTTP 1.1使用一个特殊头来标记发送的块数据的大小,并以CR/LF来分隔,如
1D\r\n
TEXT .....

3. 使用 100 Continue 状态
当客户端需要发送很大的数据时,为了避免发送时遭到服务器拒绝。 在发送之前先发送100 Continue头征得服务器的同意,服务器将会发送HTTP/1.1 100 Continue 表示同意。这样避免了客户端白费时间发送将被拒绝的大数据。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics