`
wataxi
  • 浏览: 201975 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

how tomcat works chinese 学习系列第三章

阅读更多

本来第三章, 在28号已经看完了, 但是觉的看的有点晕, 理解的不够,

 

就决定在看一遍, 呵呵, 坚持啊, 内容越来越多了,网上说tomcat源码有20-30万行代码

 

我不能完全看完, 但是其中的机制和核心模块还是要了解的, 坚持看下去。。。

 

 

第三章-- 连接器

 

书中继续改造第二章的代码和继续扩展功能, 并且功能开始划分模块

 

connector 连接器

连接器和它的支撑类(HttpConnector和HttpProcessor)。
指代HTTP请求的类(HttpRequest)和它的辅助类。
指代HTTP响应的类(HttpResponse)和它的辅助类。
Facade类(HttpRequestFacade和HttpResponseFacade)。
Constant类

 

startup 启动应用

Bootstrap

 

core

由这两个类组成:  ServletProcessor和StaticResourceProcessor

 

 

流程是: 

1.启动程序 Bootstrap创建一个HttpConnector对象,侦听http请求,然后HttpConnector对象获取socket套接字对 象

2. 创建一个HttpProcessor对象,调用它的process方法 请求通过SocketInputStream获取输入流和socket的outputStream输出流创建Http的Request对象和Respon对象。

 

3. 获取请求行和请求头, 初始化到httpRequest,HttpResponse属性, 便于客户端调用

 

 

4.判断uri资源,找到处理servlet处理

 

5. 在异常处理时, 通过配置文件放到异常里面,StringManager类来获取指定包的配置文件的异常key,返回一个value给调用者。

 

 

所用使用的类的列表如下:

core

 

ServletProcessor              动态资源请求处理servlet

StaticResourceProcessor  静态资源请求处理servlet

 

connector

 

RequestStream

ResponseStream

ResponseWriter

Constants                       静态公共final公共资源

HttpConnector                连接器提供入口给容器启动,线程类, 监听请求

HttpHeader                     在解析请求头时,对象封装类

HttpProcessor                 有点像控制器,调用资源封装请求对象和响应对象, 调用处理servlet处理

HttpRequest                    请求对象, 实现httpServletRequest接口

HttpRequestFacade         跟上面一个实现相同接口

HttpRequestLine             请求行封装类

HttpResponse                 响应对象,底层都是通过流实现的, 但是响应给客户端通过这个类实现。

HttpResponseFacade      和上面一样, 实现HttpServletResponse接口

SocketInputStream        有两个重要的方法

                                      readRequestLine和readHeader。readRequestLine返回一个HTTP请求的第一行

                                      readHeader的返回值是一个HttpHeader对象

 

LocalStrings.properties  异常key-value 文件。

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics