没有合适的资源?快使用搜索试试~ 我知道了~
Servlet中文API文档
3星 · 超过75%的资源 需积分: 10 47 下载量 79 浏览量
2009-08-07
17:59:11
上传
评论 1
收藏 132KB DOC 举报
温馨提示
试读
28页
谁需要读这份文档 这份文档描述了Java Servlet API的最新版本2.1版。所以,这本书对于Servlet的开发者及servlet引擎的开发者同样适用。 Java Servlet API的组成 Java Servlet API由两个软件包组成:一个是对应HTTP的软件包,另一个是不对应HTTP的通用的软件包。这两个软件包的同时存在使得Java Servlet API能够适应将来的其他请求-响应的协议。 这份文档以及刚才提及的Javadoc格式的文档都描述了这两个软件包,Javadoc格式的文档还描述了你应该如何使用这两个软件包中的所有方法。
资源推荐
资源详情
资源评论
译者前言:
近来在整理有关 Servlet 资料时发现,在网上竟然找不到一份中文的 Java Servlet API 的
说明文档,而在 有一本有关 JSP 的书后面附的 Java Servlet API 说明竟然不全,而这份文档
的 2.1a 版在 1998 年的 11 月份就已定稿。所以我决定翻译一 份中文的文档(其中一些与技
术 关 系 不 大 的 部 分 已 被 略 去 ) , 有 兴 趣 的 读 者 可 以 从 http:
//java.sun.com/products/servlet/2.1/servletspec-2.1.zip 下载原文阅读。
Java Servlet API 说明文档(2.1a 版)
1998 年 11 月
绪言
这是一份关于 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 的解析和载入
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 处理请求
Servlet 被初始化之后,它已经可以处理来自客户端的请求,每一个来自客户端的请求
都被描述成一个 ServletRequest 对象,Servlet 的响应被描述成一个 ServletResponse 对象。
当客户 端发出 请求时 , Servlet 引擎 传递给 Servlet 一个 ServletRequest 对象和一个
ServletResponse 对象,这两个对象作为参数传递到 service()方法中。
Servlet 也可以执行 ServletRequest 接口和 ServletResponse 接口。ServletRequest 接口使
得 Servlet 有权使用客户端 发出的请求。Servlet 可以通过 ServletInputStream 对象读取请求
信息。
ServletResponse 接口允许 Servlet 建立响应头和状态代码。通过执行这个接口,Servlet
有权使用 ServletOutputStream 类来向客户端返回数据。
多线程和映射
在多线程的环境下,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 映射技术
作为一个 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 检 杳什么类被绑定或
被取消绑定。这个接口的方法会通报被绑定或被取消绑定的对象。
API 对象的说明
这一部分包含了对 Java Servlet API 的全部类和接口的详细说明。这个说明与 Javadoc
API 差不多,但是这份文档提供了更多的信息。
API 包含了两个软件包,十二个接口和九个类。
软件包:javax.servlet
所 包 含 的 接 口 : RequestDispatcher ; Servlet ; ServletConfig ; ServletContext ;
ServletRequest;ServletResponse;SingleThreadModel。
所包含的类:GenericServlet;ServletInputStream;ServletOutputStream;ServletException;
UnavailableException。
一、 接口:
定义:
定义一个对象,从客户端接收请求,然后将它发给服务器的可用资源(例
如 、、 文件、 文件)。 引擎创建
对象,用于封装由一个特定的 ! 定义的服务器资源。
这个接口是专用于封装 的,但是一个 引擎可以创建
对象用于封装任何类型的资源。
对象是由 引擎建立的,而不是由
开发者建立的。
方法
"、#$
# #$ %&#
#'
#$()#&*()#
被用来从这个 向其它服务器资源传递请求。当一个 对响
应作了初步的处理,并要求其它的对象对此作出响应时,可以使用这个方法。
当 对象被传递到目标对象时,请求的 ! 路径和其他路径参数
会被调整为反映目标对象的目标 ! 路径。
如果已经通过响应返回了一个 *+ 对象或
剩余27页未读,继续阅读
资源评论
- 快乐小熊熊2013-04-20里面内容还可以 不过不是api文档。。始终有些失望 希望再附带个api 不然光看分析 无法解释为什么
- GeorgeGUOJUN2011-10-19假的!根本不是api文档
- 我是xxxx2014-01-21里面内容还可以 不过不是api文档。。
ljqjijiji
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功