how tomcat works 连接器
在介绍中提到,Catalina中有两个主要的模块:连接器和容器。本章中你将会写一个可以创建更好的请求和响应对象的连接器,用来改进第2章中的程序。一个符合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的类型(例如它是否实现了javax.servlet.Servlet,继承了javax.servlet.GenericServlet,或者继承了javax.servlet.http.HttpServlet),所以连接器必须始终提供HttpServletRequest和HttpServletResponse的实例。 在本章的应用程序中,连接器解析HTTP请求头部并让servlet可以获得头部, cookies, 参数名/值等等。你将会完善第2章中Response类的getWriter方法,让它能够正确运行。由于这些改进,你将会从 PrimitiveServlet中获取一个完整的响应,并能够运行更加复杂的ModernServlet。 本章你建立的连接器是将在第4章详细讨论的Tomcat4的默认连接器的一个简化版本。Tomcat的默认连接器在Tomcat4中是不推荐使用的,但它仍然可以作为一个非常棒的学习工具。在这章的剩余部分,"connector"指的是内置在我们应用程序的模块。
应用程序
从本章开始,每章附带的应用程序都会分成模块。这章的应用程序由三个模块组成:connector, startup和core。 startup模块只有一个类,Bootstrap,用来启动应用的。
connector模块的类可以分为五组:
连接器和它的支撑类(HttpConnector和HttpProcessor)。
指代HTTP请求的类(HttpRequest)和它的辅助类。
指代HTTP响应的类(HttpResponse)和它的辅助类。
Facade类(HttpRequestFacade和HttpResponseFacade)。
Constant类
core模块由两个类组成:ServletProcessor和StaticResourceProcessor。 Figure 3.1显示了这个应用的类的UML图。为了让图更具可读性,HttpRequest和HttpResponse相关的类给省略了。