第4章Servlet技术(上).................................................................................................874.1ServletAPI..............................................................................................................894.1.1Servlet接口.................................................................................................894.1.2GenericServlet抽象类.................................................................................904.1.3HttpServlet抽象类......................................................................................924.1.4ServletRequest接口.....................................................................................954.1.5HttpServletRequest接口..............................................................................964.1.6ServletResponse接口..................................................................................994.1.7HttpServletResponse接口.........................................................................1004.1.8ServletConfig接口....................................................................................1034.1.9ServletContext接口...................................................................................1044.2JavaWeb应用的生命周期....................................................................................1074.2.1启动阶段....................................................................................................1074.2.2运行时阶段................................................................................................1084.2.3终止阶段....................................................................................................1084.2.4用Tomcat的管理平台管理Web应用的生命周期.................................1084.3Servlet的生命周期...............................................................................................1104.3.1初始化阶段................................................................................................1104.3.2运行时阶段.................................................................................................1114.3.3销毁阶段.....................................................................................................1114.3.4演示Servlet的生命周期的范例...............................................................1124.4ServletContext与Web应用范围.........................................................................1144.4.1在Web应用范围内存放共享数据的范例...............................................1154.4.2使用ServletContextListener监听器.........................................................1184.5Servlet的服务方法抛出异常...............................................................................1204.6防止页面被客户端缓存.......................................................................................1214.7小结.......................................................................................................................1224.8思考题...................................................................................................................123第4章Servlet技术(上)Servlet是JavaWeb应用中的最核心的组件。本书第2章的2.2节(Tomcat作为Servlet容器的基本功能)已经介绍了Servlet容器与Servlet之间的基本关系。Servlet运行在Servlet容器中,能够为各种各样的客户请求提供相应服务。Servlet可以轻而易举地完成以下任务:l动态生成HTML文档,参见本章。l把请求转发给同一个Web应用中的其他Servlet组件,参见第5章。l把请求转发给其他Web应用中的Servlet组件,参见第5章。PDF文件使用pdfFactoryPro试用版本创建开发技术详解(第2版)88Tomcat&JavaWebDevelopmentTipsl读取客户端的Cookie,以及向客户端写入Cookie,参见第5章。l访问其他服务器资源(如数据库或基于Java的应用程序),参见第8章。Servlet之所以本领如此高强,主要有两个原因:lServlet是用Java语言编写出来的类,只要开发人员有深厚的Java编程功底,就可以编写出能完成各种复杂任务的Servlet类。lServlet对象由Servlet容器创建,它是Servlet容器重点关照的宠儿。Servlet在容器中能呼风唤雨,驾轻就熟地动用容器为它提供的各种资源。古人云:“君子生非异也,善假于物也。”Servlet也是借助容器为它提供的十八般武器,才能成为容器中神通广大的头号干将。Java是面向对象的编程语言。面向对象编程中的最基本的思想之一就是:万物皆对象;最基本的思想之二就是:在一个软件系统中,每个对象都不是孤立的,对象与对象之间需要相互协作,才能齐心合力地完成特定任务。Servlet规范为JavaWeb应用制定了对象模型,在这个对象模型中,不仅Servlet是Java对象,而且容器为它提供的十八般武器也都是Java对象。为了叙述的方便,本书把Servlet规范为JavaWeb应用制定的对象模型命名为Servlet对象模型。要想精通Servlet编程,不仅要了解Servlet自身的用法,还要了解容器为它提供的十八般武器的用法。本章及后面章节会陆续介绍各种武器的用法,本章主要展示了以下Servlet最常用的武器:l请求对象(ServletRequest和HttpServletRequest):Servlet从该对象中获取来自客户端的请求信息。l响应对象(ServletResponse和HttpServletResponse):Servlet通过该对象来生成响应结果。lServlet配置对象(ServletConfig):当容器初始化一个Servlet对象时,会向Servlet提供一个ServletConfig对象,Servlet通过该对象来获取初始化参数信息及ServletContext对象。lServlet上下文对象(ServletContext):Servlet通过该对象来访问容器为当前Web应用提供的各种资源。本章内容主要依据以下两条线索展开:l展示Servlet对象模型的静态结构,即介绍ServletAPI中的各种接口之间的关系(如关联、依赖、继承和实现关系),以及接口的常用方法。l展示Servlet对象模型的动态结构,即介绍各种对象在运行时的协作过程,以及各种对象的生命周期。PDF文件使用pdfFactoryPro试用版本创建技术(上)Tomcat&JavaWebDevelopment894.1ServletAPIServletAPI的JavaDoc文档可以到Servlet规范的官方网站上下载:此外,本书附赠光盘中的software/servlet-2.5-javadoc.zip文件为该JavaDoc文档的压缩文件,Tomcat的CATALINA_HOME/lib/servlet-api.jar文件为ServletAPI的类库文件。ServletAPI主要由两个Java包组成:javax.servlet和javax.servlet.http。在javax.servlet包中定义了Servlet接口及相关的通用接口和类;在javax.servlet.http包中主要定义了与HTTP协议相关的HttpServlet类、HttpServletRequest接口和HttpServletResponse接口。图4-1显示了ServletAPI中的主要接口与类的类框图。图4-1ServletAPI的类框图4.1.1Servlet接口ServletAPI的核心是javax.servlet.Servlet接口,所有的Servlet类都必须实现这一接口。在Servlet接口中定义了