《深入剖析Tomcat》一第 3 章 连 接 器

第 3 章 连 接 器

正如前言所述,Catalina中有两个主要的模块,连接器(connector)和容器(container)。在本章中,将会建立一个连接器来增强第2章中的应用程序的功能,用一种更好的方法来创建request对和response对象。兼容Servlet 2.3和2.4规范的连接器必须要负责创建javax.servlet.http.HttpServletRequest对象和javax.servlet.http.HttpServletResponse的实例,并将它们作为servlet的service方法的参数传入。在第2章中,servlet容器仅仅能运行实现了javax.servlet.servlet接口的servlet容器,并把javax.servlet.servletRequest实例和javax.servlet.servletResponse实例传递给service方法。因为连接器并不知道servlet对象的类型(即不知道该servlet对象是实现了javax.servlet.Servlet接口,还是继承自javax.servlet.GenericServlet类或javax.servlet.http.HttpServlet类),连接器总是会提供HttpServletRequest实例和HttpServletResponse实例。
在本章的应用程序中,连接器解析HTTP请求头,使servlet实例能够获取到请求头、cookie和请求参数/值等信息。可以修改第2章中Response类的getWriter()方法,使其可以工作得更好些。有了这些增强功能之后,就可以从PrimitiveServlet实例中获得完整的响应信息了,从而可以运行更加复杂一点的servlet类(例如ModernServlet)。
本章中所要建立的连接器实际上是Tomcat 4中的默认连接器的简化版,默认连接器将会在第4章中讨论。虽然在Tomcat 4中已经以不再推荐使用默认连接器了,但它却是一个很好的学习工具。在本章剩下的部分中,“连接器”特指要在本章的应用程序中建立的模块。
注意 与前面几章中的应用程序不同,在本章的应用程序中,连接器和容器是分开的。
本章的应用程序都在ex03.pyrmont包及其子包下。其中连接器所使用的类都在ex03.pyrmont.connector包及ex03.pyrmont.connector.http包下。从本章的应用程序开始,每章的应用程序中都会有一个启动类,用来启动整个应用程序。但是,另一方面,还没有一种机制来关闭应用程序。一旦应用程序运行后,就只能通过关闭控制台(在Windows平台上)或终止进程(在UNIX/Linux平台上)的方式强制关闭应用程序。
在对本章的应用程序进行说明之前,会先对org.apache.catalina.util包下的StringManager类进行说明。该类用来处理应用程序中不同模块和Catalina本身中错误消息的国际化操作。在此之后,再对应用程序进行说明。

时间: 2024-10-08 16:57:47

《深入剖析Tomcat》一第 3 章 连 接 器的相关文章

mysql-《疯狂java实战演义》里面的第十三章MySQL管理器程序有没有做出往数据库导入Excel表的?

问题描述 <疯狂java实战演义>里面的第十三章MySQL管理器程序有没有做出往数据库导入Excel表的? 本人想在MySQL管理器程序源代码里面加上导入表的代码,但是总是失败,想向个位请教一下,有人这么做过吗,能否给一下代码,谢谢! 解决方案 http://download.csdn.net/detail/qianfu123/3589697 源代码,自己下

《OpenGL ES应用开发实践指南:Android卷》——第3章 编译着色器及在屏幕上绘图

第3章 编译着色器及在屏幕上绘图 本章会继续上一章开始的工作.作为本章的开发计划,我们首先加载并编译前面定义的着色器,然后把它们链接在一起放在OpenGL的一个程序里.我们接下来就可以用着色器程序在屏幕上绘制空气曲棍球桌子了.打开上一章启动的AirHockey1项目,并从那里开始.

《深入剖析Tomcat》一第 1 章 一个简单的Web服务器

第 1 章 一个简单的Web服务器 本章介绍Java Web服务器是如何运行的.Web服务器也称为超文本传输协议(HyperText Transfer Protocol,HTTP)服务器,因为它使用HTTP与其客户端(通常是Web浏览器)进行通信.基于Java的Web服务器会使用两个重要的类:java.net.Socket类和java.net.ServerSocket类,并通过发送HTTP消息进行通信.本章先介绍HTTP协议和这两个类,然后介绍一个简单的Web服务器.

《深入剖析Tomcat》一导读

前 言 欢迎阅读本书.本书剖析了Tomcat 4.1.12版本和Tomcat 5.0.18版本的基本结构,并解释了其servlet容器Catalina的内部工作原理.Catalina是开源.免费的,也是最受欢迎的servlet容器之一.Tomcat本身是一个复杂的系统,包含了许多不同的组件.若你想学习Tomcat的工作方式,应该从了解这些组件开始.本书描述Tomcat的总体结构,并针对每个组件建立一个简单的版本,使你更好地理解组件的工作机制,之后对真实组件进行描述."本书结构"一节会对

《深入剖析Tomcat》一3.2 应用程序

3.2 应用程序 从本章开始,每章的应用程序都会按照模块进行划分.本章的应用程序包含3个模块:连接器模块.启动模块和核心模块. 启动模块只有一个类(Bootstrap),后者负责启动应用程序.连接器模块中的类可分为以下5个类型: 连接器及其支持类(HttpConnector和HttpProcessor): 表示HTTP请求的类(HttpRequest)及其支持类: 表示HTTP响应的类(HttpResponse)及其支持类: 外观类(HttpRequestFacade和HttpResponseF

《深入剖析Tomcat》一3.3 小结

3.3 小结 本章学习了连接器是如何工作的.本章所构建的连接器是Tomcat 4中默认连接器的一个简化版.如你所知,由于该默认连接器性能不高,已经不推荐使用.例如,所有的HTTP请求头都会被解析,即使并不会在servlet中使用它们.因此,默认连接器运行缓慢,现在已经被Coyote连接器所替代.Coyote连接器执行起来速度更快一些,其源代码可以在Apache软件基金会的网站上下载.但无论如何,默认连接器是一个不错的学习工具,将在第4章详细讨论.

《深入剖析Tomcat》一2.2 应用程序 1

2.2 应用程序 1 下面从servlet容器的角度审视servlet程序的开发.简单来说,对一个Servlet的每个HTTP请求,一个功能齐全的servlet容器有以下几件事要做: 当第一次调用某个servlet时,要载入该servlet类,并调用其init()方法(仅此一次): 针对每个request请求,创建一个javax.servlet.ServletRequest实例和一个javax.servlet.ServletResponse实例: 调用该servlet的service()方法,将

《深入剖析Tomcat》一1.2 Socket类

1.2 Socket类 套接字是网络连接的端点.套接字使应用程序可以从网络中读取数据,可以向网络中写入数据.不同计算机上的两个应用程序可以通过连接发送或接收字节流,以此达到相互通信的目的.为了从一个应用程序向另一个应用程序发送消息,需要知道另一个应用程序中套接字的IP地址和端口号.在Java中,套接字由java.net.Socket表示. 要创建一个套接字,可以使用Socket类中众多构造函数中的一个.其中一个构造函数接收两个参数:主机名和端口号. public Socket (java.lan

《深入剖析Nginx》——第2章  跟踪与调试2.1 利用gdb调试

第2章 跟踪与调试 跟踪与调试,不仅是我们解决程序Bug的有力途径,也是帮助我们理解现有代码的有效方法.通过跟踪程序执行的过程,我们可以清楚地了解程序的内部逻辑,对于不明就里的实现细节,调试查看程序内部变量也能更好地帮助我们做出正确的理解.本章将介绍一些跟踪与调试程序的方法,除了最基本的 gdb 调试,我还将结合个人经验,介绍一些相对高级的应用技巧. 2.1 利用gdb调试 gdb是Linux下调试程序的常用工具,任何Linux开发工程师初学程序调试时第一个接触到的工具应该就是gdb.关于gdb