`
vipqweer
  • 浏览: 52097 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Java Servlet API说明文档(一)

阅读更多

绪言
      这是一份关于2.1版Java Servlet API的说明文档,作为对这本文档的补充,你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。

      谁需要读这份文档
      这份文档描述了Java Servlet API的最新版本2.1版。所以,这本书对于Servlet的开发者及servlet引擎的开发者同样适用。

      Java Servlet API的组成
      Java Servlet API由两个软件包组成:一个是对应HTTP的软件包,另一个是不对应HTTP的通用的软件包。这两个软件包的同时存在使得Java Servlet API能够适应将来的其他请求-响应的协议。
      这份文档以及刚才提及的Javadoc格式的文档都描述了这两个软件包,Javadoc格式的文档还描述了你应该如何使用这两个软件包中的所有方法。

      有关规范
      你也许对下面的这些Internet规范感兴趣,这些规范将直接影响到Servlet API的发展和执行。你可以从http://info.internet.isi.edu/7c/in-notes/rfc/.cache 找到下面提到的所有这些RFC规范。
      RFC 1738 统一资源定位器(URL) 
      RFC 1808 相关统一资源定位器 
      RFC 1945 超文本传输协议--HTTP/1.0 
      RFC 2045 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第一部分:Internet信息体格式 
      RFC 2046 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:媒体类型 
      RFC 2047 多用途网际邮件扩充协议(MIME)(多用途Internet邮件扩展)第三部分:信息标题扩展用于非ASCII文本 
      RFC 2048 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第四部分: 注册步骤 
      RFC 2049 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第五部分:一致性标准和例子 
      RFC 2068 超文本传输协议 -- HTTP/1.1 
      RFC 2069 一个扩展HTTP:摘要访问鉴定 
      RFC 2109 HTTP状态管理机制 
      RFC 2145 HTTP 版本号的使用和解释 
      RFC 2324 超文本Coffee Pot控制协议 (HTCPCP/1.0)
      万维网协会(http://www.w3.org)管理着这些协议的规范和执行。


有关Java Servlets
      JavaTM servlets是一个不受平台约束的Java小程序,它可以被用来通过多种方法扩充一个Web服务器的功能。你可以把Servlet理解成Server上的applets,它被编译成字节码,这样它就可以被动态地载入并用效地扩展主机的处理能力。
      Servlet与applets不同的地方是,它不运行在Web浏览器或其他图形化的用户界面上。Servlet通过servlet引擎运行在Web服务器中,以执行请求和响应,请求、响应的典型范例是HTTP协议。
      一个客户端程序,可以是一个Web浏览器,或者是非其他的可以连接上Internet的程序,它会访问Web服务器并发出请求。这个请求被运行在Web服务器上的Servlet引擎处理,并返回响应到Servlet。Servlet通过HTTP将这个响应转发到客户端。
在功能上,Servlet与CGI、NSAPI有点类似,但是,与他们不同的是:Servlet具有平台无关性。

      Java Servlet概论
      Servlet与其他普通的server扩展机制有以下进步:
      因为它采用了不同的进程处理模式,所以它比CGI更快。
      它使用了许多Web服务器都支持的标准的API。
      它继承了Java的所有优势,包括易升级以及平台无关性。
      它可以调用Java所提供的大量的API的功能模块。
      这份文档说明了Java Servlet API的类和接口的方法。有关更多的信息,请参看下面的API说明。

      Servlet的生命周期
      一个Java servlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。Servlet的生命周期被javax.servlet.Servlet这个接口所定义。
      所有的Java Servlet都会直接地或间接地执行javax.servlet.Servlet接口,这样它才能在一个Servlet引擎中运行。Servlet引擎是Web 服务器按照Java Servlet API定制的扩展。Servlet引擎提供网络服务,能够理解MIME请求,并提供一个运行Servlet的容器。
      javax.servlet.Servlet接口定义了在Servlet的生命周期中特定时间以及特定顺序被调用的方法。

      Servlet的解析和载入\r
      Servlet引擎解析并载入一个Servlet,这个过程可以发生在引擎启动时,需要一个Servlet去响应请求时,以及在此之间的任何时候。
      Servlet引擎利用Java类载入工具载入一个Servlet,Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。

      Servlet的初始化
      Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化,在这一过程中,你可以读取一些固定存储的数据、初始化JDBC的连接以及建立与其他资源的连接。
      在初始化过程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。这样,Servlet可以对自己进行配置。
      init()方法获得了一个Servlet配置对象(ServletConfig)。这个对象在Servlet引擎中执行,并允许Servlet通过它获处相关参数。这个对象使得Servlet能够访问ServletContext对象。

      Servlet处理请求\r
      Servlet被初始化之后,它已经可以处理来自客户端的请求,每一个来自客户端的请求都被描述成一个ServletRequest对象,Servlet的响应被描述成一个ServletResponse对象。
      当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。
      Servlet也可以执行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有权使用客户端发出的请求。Servlet可以通过ServletInputStream对象读取请求信息。
      ServletResponse接口允许Servlet建立响应头和状态代码。通过执行这个接口,Servlet有权使用ServletOutputStream类来向客户端返回数据。

      多线程和映射\r
      在多线程的环境下,Servlet必须能处理许多同时发生的请求。例外的情况是这个Servlet执行了SingleThreadModel接口,如果是那样的话,Servlet只能同时处理一个请求。
      Servlet依照Servlet引擎的映射来响应客户端的请求。一个映射对包括一个Servlet实例以及一个Servlet返回数据的URL,例如:HelloServlet with /hello/index.html。
      然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的开发者,你不能假定一个Servlet只有一个实例。

      Servlet的卸载
      Servlet引擎并不必需保证一个Servlet在任何时候或在服务开启的任何时候都被载入。Servlet引擎可以自由的在任何时候使用或清除一个Servlet。因此,我们不能依赖一个类或实例来存储重要的信息。
      当Servlet引擎决定卸载一个Servlet时(例如,如果这个引擎被关闭或者需要让资源),这个引擎必须允许Servlet释放正在使用的资源并存储有关资料。为了完成以上工作,引擎会调用Servlet的destroy()方法。 
      在卸载一个Servlet之前,Servlet引擎必须等待所有的service()方法完成或超时结束(Servlet引擎会对超时作出定义)。当一个Servlet被卸载时,引擎将不能给Servlet发送任何请求。引擎必须释放Servlet并完成无用存储单元的收集

      Servlet映射技术\r
      作为一个Servlet引擎的开发者,你必须对于如何映射客户端的请求到Servlet有大量的适应性。这份说明文档不规定映射如何发生。但是,你必须能够自由地运用下面的所有技术:

      映射一个Servlet到一个URL
      例如,你可以指定一个特殊的Servlet它仅被来自/feedback/index.html的请求调用。

      映射一个Servlet到以一个指定的目录名开始的所有URL
      例如,你可以映射一个Servlet到/catalog,这样来自/catalog/、 /catalog/garden和/catalog/housewares/index.html的请求都会被映射到这个Servlet。但是来自/catalogtwo 或/catalog.html的请求没被映射。

      映射一个Servlet到所有以一个特定的字段结尾的所有URL
      例如,你可以映射一个来自于所有以in.thtml结尾的请求到一个特定的Servlet。

      映射一个Servlet到一个特殊的URL /servlet/servlet_name。
      例如,如果你建立了一个名叫listattributes的Servlet,你可以通过使用/servlet/listattributes来访问这个Servlet。

      通过类名调用Servlet
      例如,如果Servlet引擎接收了来自/servlet/com.foo.servlet.MailServlet的请求,Servlet引擎会载入这个com.foo.servlet.MailServlet类,建立实例,并通过这个Servlet来处理请求。

      Servlet环境
      ServletContext接口定义了一个Servlet环境对象,这个对象定义了一个在Servlet引擎上的Servlet的视图。通过使用这个对象,Servlet可以记录事件、得到资源并得到来自Servlet引擎的类(例如RequestDispatcher对象)。一个Servlet只能运行在一个Servlet环境中,但是不同的Servlet可以在Servlet引擎上有不同的视图。
      如果Servlet引擎支持虚拟主机,每个虚拟主机有一个Servlet环境。一个Servlet环境不能在虚拟主机之间共享。
      Servlet引擎能够允许一个Servlet环境有它自己的活动范围。
      例如,一个Servlet环境是属于bank应用的,它将被映射到/bank目录下。在这种情况下,一个对getContext方法的调用会返回/bank的Servlet环境。

      HTTP会话
      HTTP是一个没有状态的协议。要建立一个有效的Web服务应用,你必须能够识别一个连续的来自远端的客户机的唯一的请求。随着时间的过去,发展了许多会话跟踪的技术,但是使用起来都比较麻烦。
      Java Servlet API提供了一个简单的接口,通过这个接口,Servlet引擎可以有效地跟踪用户的会话。

      建立Session
      因为HTTP是一个请求-响应协议,一个会话在客户机加入之前会被认为是一个新的会话。加入的意思是返回会话跟踪信息到服务器中,指出会话已被建立。在客户端加入之前,我们不能判断下一个客户端请求是目前会话的一部分。
      在下面的情况下,Session会被认为是新的Session。
      客户端的Session在此之前还不知道
      客户端选择不加入Session,例如,如果客户端拒绝接收来自服务器的cookie
作为一个Servlet的开发者,你必须决定你的Web应用是否处理客户机不加入或不能加入Session。服务器会在Web服务器或Servlet规定的时间内维持一个Session对象。当Session终止时,服务器会释放Session对象以及所有绑定在Session上的对象。
绑定对象到Session中
      如果有助于你处理应用的数据需求,你也许需要绑定对象到Session中,你可以通过一个唯一的名字绑定任何的对象到Session中,这时,你需要使用HttpSession对象。任何绑定到Session上的对象都可以被处理同一会话的Servlet调用。
      有些对象可能需要你知道什么时候会被放置到Session中或从Session中移开。你可以通过使用HttpSessionBindingListener接口获得这些信息。当你的应用存储数据到Session中,或从Session中清除数据,Servlet都会通过HttpSessionBindingListener检杳什么类被绑定或被取消绑定。这个接口的方法会通报被绑定或被取消绑定的对象。

分享到:
评论

相关推荐

    Java Servlet API说明文档.doc

    Java Servlet API是Java...这份Java Servlet API说明文档详细描述了这些接口和类的使用方法,是开发Servlet应用程序的重要参考。通过阅读文档和Javadoc,开发者可以了解如何有效地利用API来构建高效、可维护的Web服务。

    Java Servlet API说明文档

    Java Servlet API是Java ...综上所述,Java Servlet API说明文档涵盖了Servlet技术的各个方面,对于理解和使用Servlet进行Web开发至关重要。通过深入学习这些内容,开发者可以有效地构建出高效、可扩展的Web应用程序。

    Java Servlet API说明文档.pdf

    ### Java Servlet API 2.1 版说明文档关键知识点总结 #### 一、Java Servlet API 概述 - **版本信息**:此文档为 Java Servlet API 的 2.1 版本,发布于 1998 年 11 月。 - **目标受众**:适用于 Servlet 开发者及 ...

    Java Servlet Api文档

    这个API文档是开发者理解和使用Servlet技术的重要参考资料。在Java Servlet API 2.5版本中,包含了对Servlet、Filter、Listener等关键概念的详细描述,以及它们在Web应用程序中的应用方式。 1. **Servlet接口**:...

    JAVA servlet API说明文档

    Java Servlet API 说明文档是一份关于Java Servlet技术的权威文档,涵盖了servlet容器中各个接口及其方法的详细解释。Servlet API是Java EE(Java Platform, Enterprise Edition)规范的一部分,主要用于开发基于...

    Java Servlet API说明文档doc版

    本文档旨在对 Java Servlet API 的各个方面进行详细介绍,帮助开发者更好地理解和运用这一强大的工具。 #### 二、Servlet 的概念 Servlet 是 Java EE 平台的一个核心组件,它是一种小型的 Java 程序,可以运行在...

    Java Servlet API2.1中文文档

    Java Servlet API 2.1是Java Web开发中的一个重要组成部分,它是Java服务器端应用程序与HTTP客户端交互的核心接口。这个API提供了一系列的类和接口,用于构建动态、可扩展的Web应用程序。下面将详细介绍Java Servlet...

    J2EE4 Java Servlet2.4 API帮助文档chm英文版

    Servlet 2.4 API帮助文档 chm英文版 是本人根据sun官方j2eeri-1_4-doc-api制作而成!欢迎各位下载使用.如有任何意见和建议请联系我... Java Servlet Development Kit 2.4 DocumenTation by Cn.zwj186.chm

    Java Servlet API中文说明文档

    #### 二、Java Servlet API文档版本信息 文档标题为“Java Servlet API中文说明文档”,该文档是对Java Servlet API的一个中文版说明文档。文档的版本为2.1a,发布日期为1998年11月。该文档主要介绍了Java Servlet ...

    servlet api说明文档

    在这个API说明文档中,我们将深入探讨Servlet API的主要组件、功能以及如何在实际开发中应用它们。 1. **Servlet接口**:Servlet接口是所有Servlet类的基础,它定义了服务器调用Servlet时需要实现的方法,如`init()...

    Java_Servlet_API中文版帮助文档

    ### Java Servlet API中文版帮助文档知识点详解 #### 一、Java Servlet API简介 **Java Servlet API** 是一种标准的应用程序接口(API),主要用于构建能够处理客户端请求并生成动态Web内容的服务器端应用程序。该...

Global site tag (gtag.js) - Google Analytics