荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (少年仲永), 信区: Java
标  题: 用VisualAge for Java 开 发Servlets
发信站: BBS 荔园晨风站 (Fri Apr  9 16:06:52 1999), 转信

用VisualAge for Java 开 发Servlets
杨 旭 青

-------------------------------------------------------------------------
-------

---- Servlets 是Java 编 程 环 境 中 一 个 非 常 有 生 命 力 的 新 鲜 事
物, 本 文 描 述 了Servlets, 并 介 绍 如 何 用VisualAge for Java 迅 速 开
发Servlets。Servlets 开 发 中 应 用 到 的VisualAge for Java 的 关 键 技 术
 是VisualAge for Java 的 模 拟
多 种 虚 拟 机 环 境 的 能 力, 以 及 代 码 增 加 编 辑 并 连 接 到 运 行
 中 的 程 序 中 的 能 力。

背 景
在WWW 的 初 期, 程 序 员 们 很 快 就 意 识 到, 通 过 使 用 公 共 网 关
界 面(CGI),WWW 可 以 成 为 一 个 引 人 注 目 的 应 用 开 发 平 台。 事
实 上, 一 个CGI 程 序 就 是 把 各 种 能 力 扩 展 到Web 服 务 器 中 的 一
个 插 入 模 块。 然 而,CGI 的
最 初 设 计 要 求 为 每 一 个 请 求 服 务 创 建 一 个 单 独 的 进 程, 从
 而 增 加 了 性 能 和 资 源 的 消 耗。 为 改 进CGI 的 性 能 和 可 扩 展 性
,Web 服 务 器 厂 商 引 进 了 专 有 的APIs, 例 如 网 景 公 司 的NSAPI、
微 软 公 司 的ISAPI 和IBM
的GWAPI, 同 时, 网 景 公 司 还 为Navigator 引 人 了 一 个Web 浏 览 器
插 入API。 这 样 一 来,Web 客 户 机 和 服 务 器 都 可 以 通 过 插 入 而 加
 以 扩 展。 不 幸 的 是, 这 一 插 入 要 求 使 用 专 用 的APIs, 对 于 不
同 的 操 作 系 统 版 本 也 不
同。
---- Sun 公 司 推 出 的Java 和 定 义 的Applet API 带 来 了WWW 的 第 二 次
 进 步,Applet API 为 开 发 者 提 供 了 一 个 扩 展Web 浏 览 器 的 标 准
和 与 平 台 无 关 的 方 式。 现 在,Sun 公 司 使Java 成 为 建 立N 层 企 业
级 应 用 软 件 又 推 出
了Servlet API, 为Web 服 务 器 带 来 了 同 样 的 优 点。 热 心 者 可 以
通 过 访 问http:// java.sun.com 了 解Servlet , 还 可 以 从 这 里 下 载 文
档 和Java Servlet 开 发 工 具 包(JSDK)。 在 下 面 的 讨 论 中, 我 们 将
 会 提 到JSDK 1.0.1。

运 行Servlet
---- 运 行Servlet 的 最 好 开 端 是 下 载JSDK 和 运 行 范 例, 并 在Web
服 务 器 上 配 置Servlet。 使 用 者 可 以 用ServletRunner(srun) 测 试Serv
let,ServletRunner 是 一 个 包 含 在JSDK 中 的 小 程 序, 是 一 个 简 化
的Web 服 务 器, 与AppletViewer
相 似, 只 要Applet 一 连 接 上, 它 就 能 够 成 为 一 个 简 化 的Web 浏
览 器。
---- 假 设 使 用 者 正 在Windows NT 平 台 上 工 作, 并 已 安 装 了JSDK 1
.1.x 或 JSDK 1.0.1, 打 开 一 个 命 令 提 示 符, 并 转 到JSDK 目 录, 例
如,E:\ JSDK 。 在 这 个 目 录 中,bin 子 目 录 中 包 含 了ServletRunner,
servlet 子 目 录 中 包 含
了servlet 范 例。 然 后 进 入servlet 子 目 录, 键 入 下 面 命 令:

---- E:\ JSDK\ servlet >..\bin\srun-v

---- 现 在, 就 有 了 一 个 监 听8080 端 口 的Web 服 务 器,“-v” 选 项
向 命 令 提 示 符 窗 口 产 生 详 细 的 输 出。 下 面, 打 开 任 意 一 个We
b 浏 览 器, 例 如 网 景 的Navigator, 并 打
开http://127.0.0.1:8080/servlet/HelloWorldServlet。ServletRunner 加 载 了
HelloWorldServlet 类, 为 它 构 造 一 个 环 境, 调 用 其init() 方 法,
然 后 调 用 它 的service() 方 法,service() 方 法 有 一 个 请 求 参 数
 和 响 应 参
数。HelloWorldServlet 对 象 简 单 地 给 响 应 对 象 写 一 个HTML 主 页,
该 响 应 对 象 被 返 回 到Web 浏 览 器 并 显 示。 在 第 一 次 服 务 请 求
之 后, 该servlet 保 持 激 活 状 态, 并 处 于 待 命 状 态, 可 以 处 理
进 一 步 的 请 求。servlet 的
构 造 必 须 能 够 处 理 多 个 并 发 服 务 请 求, 因 为 每 一 请 求 都 是
 从 自 己 的 线 程 开 始 的。 当ServletRunner 终 止 时, 它 调 用servlet
的destroy() 方 法。

---- 在Servlet 生 命 周 期 的 最 后 阶 段, 使 用 者 必 须 停 止 并 重 新
 启 动ServletRunner( 或Web 服 务 器), 以 得 到 一 个 更 新 的servlet 类
 文 件。 在 开 发 过 程 中, 使 用 者 会 经 常 改 变servlet 代 码, 所 以
使 用ServletRunner 可 能 会 很
单 调 乏 味, 特 别 是 在servlet 开 始 运 行 了 一 段 时 间 以 后, 不 得
 不 调 试 一 个 问 题 的 时 候。 幸 运 的 是, 来 自IBM 的VisualAge for Ja
va 提 供 了 一 个 效 率 更 高 的 开 发Servlet 软 件 的 方 式。

---- 要 停 止ServletRunner, 在 命 令 提 示 符 窗 口 中 键 入Ctrl-C 即 可


使 用VisualAge for Java
---- VisualAge for Java 有 两 个 关 键 技 术, 使 开 发servlet 非 常 方
便: 一 个 是 多 种 虚 拟 机 环 境 模 拟, 另 一 个 是 代 码 增 加 编 辑 并
 连 接 到 运 行 中 的 程 序。
---- JSDK 包 含 了ServletRunner 源 代 码(srun.c), 如 果 仔 细 考 察 一
 下, 就 会 看 到ServletRunner 只 是 简 单 地 运 行sun.servlet.http.HttpSe
rver 类。 由 于ServletRunner 是 一 个Java 程 序, 可 以 在VisualAge for Ja
va 中 把 它 当 作 一 个 模 拟
虚 拟 机 环 境 来 运 行。 启 动VisualAge for Java, 并 创 建 一 个 叫 做J
SDK 的 新 项 目。 下 面, 解 压 缩E:\JSDK\lib\classes.zip 文 件, 输 出 到
 一 个temp 目 录( 或 简 单 地 拷 贝 到classes.jar), 并 把 类 文 件( 或
jar 文 件) 输 入 到JSDK 项 目
下。 这 时 会 产 生 几 个 问 题, 因 为classes.zip 文 件 丢 失 了 某 些
用 于Netscape Web 服 务 器 支 持 的 类。 删 除sun.servlet.netscape 软 件 包
 来 清 除 这 些 问 题, 选 择sun.servlet.http.HttpServer 类 并 运 行 它(
提 供-v 参 数 来 把 详 细 结
果 输 出 到 控 制 台 窗 口)。 现 在, 开 发 环 境 就 是 一 个Web 服 务
器 ! 下 一 步, 对 于 范 例sevlets, 把 这 些 源 代 码 从E:\JSDK\servlrts
目 录 输 入 到JSDK 项 目, 在Workbench 窗 口 中 的 项 目 制 表 符 中 扩 展
HelloWorldServlets 类, 并 选
择doGetO 方 法。 在 源 窗 格 中, 在 该 行 的 起 始 处 放 入 一 个 插 入
点, 内 容 如 下:out.printin(Hello World); 插 入 一 个 断 点, 在Web 浏
览 器 中 重 新 载 入HelloWorldServlets URL。 将 命 令 改 成:out.print(“He
llo VisualAge”); 然 后, 存
储 这 一 变 更。VisualAge for Java 仅 仅 编 辑 这 个 修 改 的 类 方 法,
并 将 其 连 接 到 运 行 程 序 中。 其 重 要 之 处 在 于: 认 识 到 增 加
编 辑 只 是 事 情 的 一 半, 真 正 的 效 率 在 于 不 必 重 新 启 动 正 在
调 试 的 程 序, 也 不 必 重 新
创 建 引 起 问 题 的 程 序 执 行 状 态, 正 是 这 种 程 序 执 行 状 态 产
 生 了 这 些 问 题, 而 使 用 者 正 在 设 法 处 理。

---- 通 过 几 行 程 序 代 码, 检 测 任 何 感 兴 趣 的 变 量, 单 击Resum
e 按 钮 来 完 成 服 务 请 求, 修 改 后 的HTML 页 将 在Web 浏 览 器 中 出
现。

---- 使 用VisualAge for Java, 可 以 修 改 运 行 中 的servlet, 因 此 没
有 必 要 重 复 性 地 停 止 和 启 动Web 服 务 器。 此 外, 当 服 务 器 运
行 时, 使 用 者 仍 会 拥 有 所 有 希 望 的 开 发 环 境。

结 论
---- Servlet 是Web 应 用 开 发 中 的 一 个 重 要 进 步。VisualAge for Jav
a 通 过ServletRunner 对 开 发Servlet、 增 加 编 辑 和 连 接 到 运 行 中 的
 程 序 有 很 好 的 支 持。 将 来,IBM 还 会 通 过 将Web 连 接 技 术 扩 展
到Smalltalk 和C++ 对Java 的 连
接, 进 一 步 来 加 强 对Servlet 的 支 持。 在IBM 软 件 技 术 的 帮 助 下
, 使 用 者 将 能 够 从HTML JavaBean 中 使 用VisualAge for Java Compositio
n Editor, 进 而 可 视 化 地 创 建Servlets。
--
日出东方,唯我不败?
?     天上地下,唯我独尊。

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.101]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店