一、http 1.1的新特性java
(1)持久链接web
- 当下载了页面后,服务器不会当即关闭链接
- 等待被该页面引用的全部资源下载完(同一个链接下载)
- 考虑到 打开/关闭 http 链接系统开销很大
- 故web 服务端、网络、客户端都节省了大量的时间和工做量
- 默认使用持久链接,显式请求头:

(2)块编码apache
- 创建持久链接,服务器能够从多个资源发送字节流,客户端可使用该链接发送多个请求
- 发送方必须在每次发送时、在请求头或响应头添加content-length 头信息
- http 1.0 中不须要content-length ,读到-1 返回关闭
- http 1.1 transfer-encoding 头信息,指明字节流会分块发送

- 第一块:1D 是16进制数,表明10进制的29个字符
- 第二块:9个字符,看到0\r\n 代表结束
(3)状态码100的使用缓存


二、Connector 接口服务器
- 提供不少接口的声明,包括关联容器、request、responce等

三、HttpConnector 类网络
- 实现了 org.apache.catalina.Connector 接口(可使用catalina 的链接器)
- 实现了 java.lang.Runnable 接口(确保实例在本身线程里运行)
- 实现了 org.apache.catalina.LifeCycle 接口(维护每一个catalina 组件的生命周期)
- 建立HttpConnector 实例后,调用 initialize()、start() 方法(俩方法生命周期内执行一次)
- initialize(),调用open 方法从一个套接字工厂获取一个实例
- 每一个HttpConnector 实例维护HttpProcesser 对象池,能够同时处理多个http 请求
- 每一个HttpProcesser 实例运行在本身的线程中
四、HttpProcesser 对象池存储在以下栈里(java.io.Stack):异步

- 最小对象池数量和最大数量
- 最开始初始化最小数量对象
- 超过最大后,引入的http 请求会被忽略

- 每一个HttpProcesser 实例负责解析请求行和请求头,填充Request 对象
- 关联一个Request 和Response 对象
五、提供Http 请求服务编码

六、HttpProcesser 类线程
- assign() 方法的异步实现
- process() 方法负责解析http 请求,并调用响应servlet 容器的invoke() 方法
- 实现了java.lang.Runnable 接口,每一个实例运行在本身的线程里,叫:处理器线程
- assign 方法和await 方法对比

七、Request 对象对象
- 实现了org.apache.catalina.Request 接口
八、处理请求
- 解析链接、解析请求、解析请求头
- 经过链接器能够设置缓存区的大小
九、简单的容器实现 SimpleContainer