- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
How Tomcat Works中文译本(第三章)
How Tomcat Works中文译本(第三章)第三章: Connector 概览 简介中介绍过,Catalina中有两个主要的模块:Connector和Container。这章我们将写一个Connector来增强第二章的应用程序,这个Connector可以创建更好的request和response对象。要使Connector遵循Servlet 2.3 /2.4规范必须创建javax.servlet.http.HttpServletRequest和javax.servlet.http.HttpServletResponse实例传递给被调用的servlet的service方法。在第二章的servlet container中,仅能运行实现javax.servlet.Servlet的servlet。传递给service方法的只能是javax.servlet.ServletRequest和javax.servlet.ServletResponse实例。因为connector是不知道servlet的类型的(比如,是否该servlet实现了javax.servlet.Servlet接口,继承了javax.servlet.GenericServlet,或是javax.servlet.http.HttpServlet),在本章的程序中Connector必须提供HttpServletRequest和HttpServletResponse实例。 在本章的程序中,Connector解析HTTP Request header使servlet获取到header,cookies和parameter的键值对等。我们还将完善第二章中Response类的getWriter方法。有了这些改进后,我们就可以从PrimitiveServlet中获取到完整的响应,也可以运行更复杂的ModernServlet类了。 这章中构建的Connector是Tomcat 4中默认Connector的一个简化版,我们将在第四章继续讨论这个Connector。Tomcat 4的默认connector是不被认同的,但是它仍旧是一个很好的学习工具。在剩下的章节中,应用程序中connector将参与模型的构建。 注:不同于前一章中的程序,这章的应用程序中,connector是与container分离的。 这章的程序在 ex03.pyrmont 包及子包中。从这章开始,每个程序都有一个bootstrap类用来启动该应用程序。但是,现阶段还没有一个机制可以停止该程序,所以一旦运行了,你必须通过关闭控制台来结束该程序(Windows),如果是UNIX/Linux ,就需要杀掉进程的方式了。在解释该应用程序之前,让我们从 org.apache.catalina.util包下的StringManager类开始。该类处理了不同模块以及Catalina本身的错误信息的国际化问题。随后将继续讨论本章的程序。 在解释程序之前,让我们从org.apache.catalina.util 包的StringManager类开始。这个类处理了程序中及Catalina本身不同模块的错误信息的国际化问题。对程序的讨论将在此后进行。 StringManager 类 像Tomcat这类大的应用程序需要认真处理错误信息。Tomcat中的错误信息对系统管理员和servlet程序员都很有用。比如,Tomcat记录整齐的错误日志以便系统管理员可以容易的精确查找到发生的异常。对于Servlet程序员,Tomcat在每个javax.servlet.ServletException异常抛出后发送详细的错误信息,这样Servlet程序员就知道他的程序发生了什么错误。 Tomcat是用一个属性文件存储错误信息的,因此编辑它们是很容易的。但是,在Tomcat中有上百个类,在一个大的属性文件中存储所有类的所有错误信息就很容易出现维护的噩梦。为避免这个,Tomcat为每个包分配了一个单独的属性文件。例如,org.apache.catalina.connector包下的属性文件只记录该包下的类抛出的错误信息。每个属性文件都由org.apache.catalina.util.StringManager类的一个实例处理,当Tomcat运行时,将有很多的StringManager实例产生,每个实例只读取一个包中的属性文件。由于Tomcat的流行,提供多语言的错误信息就非常必要了。现在支持三种语言。英文错误信息属性文件的名字叫LocalSperties。另外两种是西班牙语及日语,分别为LocalStrings_perties和LocalStrings_perties文件。 当一个包中的一个类需要在该包中的属性文件中查找错误信息时,首先要获取一个String
文档评论(0)