深入剖析Tomcat(三)

连接器

*本章将会建立一个连接器
增强第二章的application
用一种更好的方法创建request和response对象*

兼容servlet2.3和2.4规范的连接器必须要负责创建javax.servlet.http.HttpServetRequest和javax.servlet.http.HttpServletResponse实例,并传入service方法 //??不大明白在说什么
连接器并不知道第2章的servlet的对象的类型
本章application中,连接器解析http头,使servlet能获取到头cookie等信息

StringManager类

Tomcat 把错误消息保存到properties文件中
并且划分到不同的包中
每个properties都是用org.apache.catalina.StringManager类的一个实例处理的
获取错误信息

public String getString(String key);

应用程序

代码量大,要把握全局
不需要逐个看下去,有点知道构造方法和用法就行

启动模块

只用一个类 Bootstrap类 负责启动application

连接模块

可分为五个类型
- 连接器及其支持类 HttpConnector和HttpProcesser
- Http请求类(HttpRequest)及其支持类
- Http响应类(HttpResponse)及其支持类
- 外观类(HttpRequestFacade和HttpResponseFacade类)
- 常量类

核心模块

  • servletProcessor类

- StaticResourceProcessor类

整体把握

  • 启动 Bootstrap类main方法中 实例化HttpConnector 并调用start方法开启线程
  • 创建serverSocket类 等待HTTP请求
  • 创建HttpProcessor实例 并且调用process方法
  • process方法中 创建HttpRequest和HttpResponse 解析请求
  • 静态请求
  • servlet请求调用service方法

解析http请求
- 读取套接字的输入流

 input = new SocketInputStream(socket.getInputStream(), 2048);
之所以使用SocketInputStream类就是为了调用其readRequestLine()方法和readHeader方法
  • 解析请求行
private void parseRequest(SocketInputStream input, OutputStream output)
  • 解析请求头
    新类HttpHeader
    • 无参构造
    • 传参给SocketInputStream的readHeader方法
    • 获取请求头的名字和值
String name = new String(header.name, 0, header.nameEnd);
String value = new String(value.name, 0, value.nameEnd);
  • 解析Cookie
    请求头是Cookie: username password
    org.apache.catalina.util.RequestUtil类实现
  • 获取参数
    org.apache.Catalina.util.ParameterMap类实现
深入剖析Tomcat(中文版+英文版)》.rar 《深入剖析Tomcat深入剖析Tomcat 4和Tomcat 5中的每个组件(如果TOMCAT版本有点老,不过现在的Tomcat6和7同样可以借鉴参考),并揭示其内部工作原理。通过学习《深入剖析Tomcat》,你将可以自行开发Tomcat组件,或者扩展已有的组件。 Tomcat是目前比较流行的Web服务器之一。作为一个开源和小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。《深入剖析Tomcat》从最基本的HTTP请求开始,直至使用JMX技术管理Tomcat中的应用程序,逐一剖析Tomcat的基本功能模块,并配以示例代码,使读者可以逐步实现自己的Web服务器。 目录 第1章 一个简单的web服务器 1.1 http 1.1.1 http请求 1.1.2 http响应 1.2 socket类 1.3 应用程序 1.3.1 httpserver类 1.3.2 request类 1.3.3 response类 1.3.4 运行应用程序 1.4 小结 第2章 一个简单的servlet容器 2.1 javax.servlet.servlet接口 2.2 应用程序 2.2.1 httpserver1类 2.2.2 request类 2.2.3 response类 2.2.4 staticresourceprocessor类 2.2.5 servletprocessor1类 2.2.6 运行应用程序 2.3 应用程序 2.4 小结 第3章 连接器 3.1 stringmanager类 3.2 应用程序 3.2.1 启动应用程序 3.2.2 httpconnector类 3.2.3 创建httprequest对象 3.2.4 创建httpresponse对象 3.2.5 静态资源处理器和servlet处理器 3.2.6 运行应用程序 3.3 小结 第4章 tomcat的默认连接器 4.1 http 1.1的新特性 4.1.1 持久连接 4.1.2 块编码 4.1.3 状态码100的使用 4.2 connector接口 4.3 httpconnector类 4.3.1 创建服务器套接字 4.3.2 维护httpprocessor实例 4.3.3 提供http请求服务 4.4 httpprocessor类 4.5 request对象 4.6 response对象 4.7 处理请求 4.7.1 解析连接 4.7.2 解析请求 4.7.3 解析请求头 4.8 简单的container应用程序 4.9 小结 第5章 servlet容器 5.1 container接口 5.2 管道任务 5.2.1 pipeline接口 5.2.2 valve接口 5.2.3 valvecontext接口 5.2.4 contained接口 5.3 wrapper接口 5.4 context接口 5.5 wrapper应用程序 5.5.1 ex05.pyrmont.core.simpleloader类 5.5.2 ex05.pyrmont.core.simplepipeline类 5.5.3 ex05.pyrmont.core.simplewrapper类 5.5.4 ex05.pyrmont.core.simplewrappervalve类 5.5.5 ex05.pyrmont.valves.clientiploggervalve类 5.5.6 ex05.pyrmont.valves.headerloggervalve类 5.5.7 ex05.pyrmont.startup.bootstrap1 5.5.8 运行应用程序 5.6 context应用程序 5.6.1 ex05.pyrmont.core.simplecontextvalve类 5.6.2 ex05.pyrmont.core.simplecontextmapper类 5.6.3 ex05.pyrmont.core.simplecontext类 5.6.4 ex05.pyrmont.startup.bootstrap 5.6.5 运行应用程序 5.7 小结 第6章 生命周期 第7章 日志记录器 第8章 载入器 第9章 session管理 第10章 安全性 第11章 standardwrapper 第12章 standardcontext类 第13章 host和engine 第14章 服务器组件和服务组件 第15章 digester库 第16章 关闭钩子 第17章 启动tomcat 第18章 部署器 第19章 manager应用程序的servlet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值