[摘要]— — 构 造 数 据 库 接 口 网 页 的 捷 径 北 京 信 息 技 术 应 用 研 究 所 蒋 晓 京 ---------------------------------------------------------------------------- ---- ----随 着Inte...
— — 构 造 数 据 库 接 口 网 页 的 捷 径 北 京 信 息 技 术 应 用 研 究 所 蒋 晓 京
----------------------------------------------------------------------------
---- ----随 着Internet/Intranet 和Web 技 术 的 迅 猛 发 展, 上 网 用 户 已 不 仅
仅 满 足 于 浏 览 静 态 的 网 页 内 容, 而 更 希 望 通 过 人 机 对 话 的 动
态 交 互 方 式 获 取 所 需 信 息; 而 对 于Web 开 发 者 来 说, 静 态 网 页
也 存 在 占 用 磁 盘 空 间 多、 信 息 内 容 分 散、 维 护 更 新 困 难 等 问
题。 因 此, 在Web 上 使 用 动 态 交 互 网 页 发 布 信 息 已 是 众 望 所 归 。
----传 统 的 生 成 动 态 网 页 的 方 式 — — 如CGI、 ISAPI 等 存 在 开 销 大
、 效 率 低、 开 发 困 难、 无 法 与HTML 语 言 紧 密 结 合 等 缺 陷。ASP(Ac
tive Server Pages, 中 文 译 作“ 动 态 服 务 器 网 页") 作 为 微 软 公 司
推 出 的 新 一 代 动 态 网 页 开 发 技 术, 正 好 弥 补 了 这 些 缺 陷, 它
具 有 易 于 生 成、 面 向 对 象、 可 扩 充、 安 全 性 好、 适 用 范 围 广 且
与HTML 完 全 融 合 等 特 点。 关 于 它 的 工 作 原 理 和 技 术 特 点,《 计
算 机 世 界》 已 作 过 深 入 详 细 的 专 题 报 道, 本 文 不 再 重 复。
----由 于 开 发ASP 需 要 编 程, 往 往 使 初 学 者 望 而 却 步。FrontPage98
作 为 时 下 最 流 行 的 网 站 开 发 工 具, 具 有 使 用 简 便, 可 视 化 等
特 点。 有 人 以 为FrontPage98 只 能 起 组 织、 管 理 网 站 和 修 饰 页 面 的
作 用, 对 开 发ASP 帮 不 上 什 么 忙。 其 实 不 然,FrontPage98 内 部 提 供
了 对ASP 的 支 持, 使 得 开 发 者 不 须 编 程, 只 要 写 几 句SQL 语 句,
就 能 快 速 生 成 与 后 台 数 据 库 接 口 的ASP 页, 是 开 发ASP 很 好 的 入
门 工 具。 本 文 就 将 介 绍 这 一 技 术, 并 对 这 一 技 术 的 优 缺 点、
与 手 工 编 写 方 式 的 结 合 等 加 以 阐 述。 用FrontPage98 生 成ASP 页 的 方 法
----一、 首 先 确 保 你 的 系 统 满 足 运 行ASP 的 条 件, 即: 你 的Web 服 务 器 是 以 下 几 种 中 的 一 种:
----Microsoft Internet Information Server 3.0/4.0 for Windows NT ;
---- Microsoft Peer Web Services for Windows NT ;
---- Microsoft Personal Web Server for Windows 95/98 。
你 的 服 务 器 装 有 你 所 使 用 的 数 据 库 的32 位ODBC 驱 动 程 序( 包 括A
ccess、SQL Server、Oracle、Foxpro 等, 总 之 是 所 有 支 持ODBC 的 数 据 库)
, 如 果 没 有, 在 服 务 器 上 安 装 该 数 据 库 的 客 户 端 软 件 即 可。
你 的 服 务 器 上 安 装 了FrontPage 98 Server Extensions(FrontPage 98 服 务
器 扩 展, 安 装FP98 时 会 自 动 装 入)。
你 的 服 务 器 上 安 装 了ASP 引 擎( 运 行 一 下IIS 安 装 盘 或FP98 盘 中 的
ASP.EXE 文 件 即 可 安 装, 也 可 到 以 下 网 址 下 载: www.microsoft.com/m
sdownload/iis3/Download2.asp?Prod=1 )。
对 于IIS4 或PWS for WIN98, 上 述“3”、“4” 步 在 安 装 时 就 已 设 好, 不
用 另 装。 另 外,“1”、“3”、“4” 安 装 的 顺 序 不 能 打 乱。
----二、 在 控 制 面 板 ODBC 中 定 义 好 你 要 使 用 的 数 据 库 的DSN 数 据
源, 注 意 要 定 义 成“ 系 统 数 据 源"。
----三、 建 立 数 据 库 查 询 页, 在FrontPage 98 的 Explorer 中 新 建 一 个
普 通HTML 网 页, 在 上 面 插 入 一 个Form 对 象, 比 如 一 个 单 行 文 本
框, 并 命 名 为“T1", 在Form 所 在 区 域 单 击 鼠 标 右 键, 在 弹 出 的 菜
单 中 点“Form Properties", 再 选 择“Send to other : " 项, 在 下 拉 列 表
中 选 择“Custom ISAPI , NSAPI , CGI , or ASP Script" 项, 并 单 击Options,
在 弹 出 对 话 框 的Action 中 指 明 目 标ASP 页 的 相 对 路 径 和 文 件 名,
如 “asp/list.asp", 这 样, 只 要 用 户 在 浏 览 器 中 一 按“ 提 交", 页 面 就 会 自 动 转 到 该ASP 页。
----四、 建 立 数 据 库 查 询 结 果 显 示 页。
用FrontPage 98 的Explorer 在 网 站 中 新 建 一 个 目 录, 命 名 为“ASP" (
也 可 以 是 其 他 名 字), 赋 予 该 目 录 允 许 执 行 程 序 的 属 性, 并 取
消 该 目 录 的 可 读 属 性, 在 此 目 录 下 新 建 一 个 网 页, 并 命 名 为
list.asp。ASP 网 页 的 文 件 名 后 缀 必 须 为“.asp", 这 是 规 定 的。 最
好 把 所 有ASP 文 件 放 在 同 一 目 录 下。
用FrontPage Editor 打 开 此 页, 通 过 选 取 菜 单Insert Database Databa
se Region Wizard, 进 入Wizard。
在“ODBC Data Source Name(DSN)" 中 输 入DSN 数 据 源 名( 即 前 面 第 “ 二
” 步 在ODBC 中 定 义 好 的), 如 果 数 据 库 有 用 户 名 和 密 码, 请 选
中“Username" 和“Password" 复 选 框 并 输 入 内 容。 输 完 后 点“NEXT "。
在“Enter the SQL string for the Query" 中 输 入SQL 查 询 语 句, 如“SELECT
* FROM table WHERE Name = ‘ % %T1 % %'”(table 为 数 据 库 中 的 表
名, Name 为 字 段 名), 如 果 语 句 中 有 从Form 中 提 交 的 数 据, 请 在
其 前 后 都 加 上“ % %", 如“T1" 应 改 为“ % %T1 % %"。 如 果 你 点
击“Insert Form Field Parameter" 来 加 入Form 提 交 的 数 据,“ % %" 会
被 自 动 加 上。 你 也 可 以 用“Paste SQL From Clipboard" 从 剪 贴 板 贴 入
SQL 语 句。 输 完 后 点 “NEXT "。
点“Add field", 输 入 字 段 名, 在“Enter the query field names" 中 加 入
要 在 结 果 中 显 示 的 字 段( 至 少 要 输 入 一 个)。 如 果 想 以 表 格 方
式 输 出 结 果, 请 选 中“Show the query in a table" 复 选 框。 最 后 单 击
“Finish", 这 样, 一 个ASP 页 就 生 成 了。
进 一 步 调 整 输 出 结 果 的 外 观, 直 到 满 意 为 止。 注 意, 表 头 的 文
字 可 随 意 修 改, 但 有 机 器 人 控 制 的“Database : xxxx" 部 分 不 能 修 改, 不 过 可 移 动 或 删 除。
如 果 你 需 要 修 改 前 面 输 入 的DSN 数 据 源、SQL 语 句 或 增 减 在 结 果
中 显 示 的 字 段, 把 鼠 标 移 到Wizard 生 成 的 部 分, 当 鼠 标 变 成 一
个 小 机 器 人 时 单 击 右 键, 在 弹 出 的 菜 单 中 选 中“Database Region
Properties" 或“Database Column Value Properties" 来 进 行 修 改。
用FrontPage98 生 成ASP 页 的 优 缺 点
----根 据 笔 者 的 使 用 经 验, 用Database Region Wizard 生 成ASP 页, 具 有 以 下 优 点:
----一、 不 用 编 写 代 码, 快 速 高 效, 简 便 易 行, 适 合 于 初 学 者 和
非 专 业 人 员。 你 只 须 构 造 好 你 的SQL 查 询 语 句, 其 他 的 事 大 可
放 心 地 交 给Wizard 去 做, 比 自 己 手 工 编 写 快。
----二、 程 序 对 输 入 控 制 严 格, 有 效 避 免 非 法 字 符 入 侵。 用Data
base Region Wizard 生 成 的 程 序, 通 过 对 表 单 提 交 的 数 据 前 后 加“
% %" 并 在 执 行 过 程 中 检 验, 以 及 对 所 提 交 数 据 中 的 “ " ”、
“ ' ”( 即 单 双 引 号) 等 符 号 进 行 层 层 过 滤 的 做 法, 避 免 了 表
单 提 交 非 法 数 据 引 起 的 程 序 运 行 错 误。 而 手 工 编 写ASP 页 时 这 些 都 要 自 己 处 理。
----三、 可 以 通 过FrontPage Editor 对 输 出 结 果 的 格 式 进 行 直 观 的
调 整, 使 输 出 结 果 更 为 美 观。 通 常, 由 于ASP 页 是 动 态 生 成 的,
手 工 编 写 的ASP 页, 在FrontPage Editor 中 由 于 未 经 运 行, 所 以 看 不
到 输 出 结 果 的 样 式, 也 就 无 法 调 整; 而Wizard 生 成 的ASP 页, 通
过FrontPage WebBot( 机 器 人) 对 输 出 结 果 提 供 了 预 览, 你 可 以 像
调 整 任 何 静 态 文 字、 表 格 一 样 调 整 输 出 结 果 的 外 观。
----但 是, 过 于 自 动 化 的 处 理 有 时 也 往 往 意 味 着 灵 活 性 的 丧 失
。Wizard 为 我 们 带 来 方 便 的 同 时, 也 削 弱 了ASP 程 序 运 行 的 自 由
度, 为 我 们 细 致 入 微 地 控 制 程 序 带 来 了 一 些 麻 烦。 如 果 你 用
Wizard 生 成 了 一 个ASP 页, 然 后 又 在FrontPage Editor 中 点 击“HTML" 卡
片, 在HTML 编 辑 方 式 下 插 入 了 一 些 自 己 的ASP 代 码, 比 如 自 动 分
页 的 代 码, 然 后 存 盘 退 出,FrontPage Editor 会 弹 出 一 个 “The cont
ents of a FrontPage component have been modified . These contents will be ov
erwritten when you save this page " 的 提 示, 并 且 只 有 一 个“ 确 定" 按
钮, 这 样, 你 在 HTML 方 式 下 插 入 的ASP 代 码 大 部 分 都 不 会 被 保
存。 笔 者 就 曾 犯 过 这 样 的 错 误, 结 果 辛 辛 苦 苦 编 写 的 大 段 代 码 都 付 诸 东 流。
与 手 工 编 写 的ASP 代 码 相 结 合
----怎 样 才 能 使Wizard 生 成 的 代 码 与 手 工 编 写 的ASP 代 码 在 同 一A
SP 页 中 和 平 共 处 呢 ? 方 法 是: 先 用FrontPage Editor 打 开ASP 页, 调
整 好 用Wizard 自 动 处 理 的 部 分, 以 及 所 有 想 用 FrontPage Editor 处
理 的 部 分, 如 页 面 外 观 的 调 整 等, 存 盘 退 出。 在 FrontPage Explo
rer 的Folders 视 图 右 击 该ASP 页 的 图 标, 在 弹 出 的 菜 单 中 选“Open
With …", 在 随 后 出 现 的 选 项 中 选“Text Editor(notepad.exe)", ASP
页 将 以 记 事 本 方 式 打 开。 输 入 自 己 的ASP 代 码, 请 注 意 以 下 诸 点:
----一、 在“" 中 的 部 分 是FrontPage 机 器 人 自 动 处 理 的 部 分, 最 好
不 要 改 动, 但 你 可 以 改 动 下 面 这 一 句:“No Record Found!" , 把 凡
是 出 现 这 一 句 的 地 方 双 引 号 内 的 部 分 改 为:“ 对 不 起 ! 没 有
符 合 要 求 的 记 录。" 或 干 脆 连 双 引 号 一 起 删 掉, 这 样, 当 没 有
记 录 返 回 时, 就 不 会 显 示 英 文 “No Record Found!" 了。
----二、< % … … %> 中 的 部 分 即 是ASP 的 代 码 部 分。 你 既 可 以 在
已 有 的< % … … %> 部 分 中 插 入 自 己 的ASP 代 码, 也 可 以 在HTML 语
句 中 通 过 插 入< % … … %> 来 开 辟 自 己 的ASP 代 码 区 域。 当 然,
你 首 先 应 读 懂 自 动 生 成 的ASP 代 码, 理 解 它 的 流 程 控 制 和 主 要
变 量 的 含 义, 再 加 入 自 己 的 代 码, 比 如 分 页 控 制 等。 由 于 自
动 生 成 的ASP 代 码 中 的 变 量 使 用 的 都 是 描 述 性 的 短 语, 应 该 不 难 理 解。
----三、 对 于 已 存 在 的HTML 和Wizard 生 成 的ASP 代 码, 也 可 以 根 据 需
要 稍 加 调 整。 比 如 运 行 由Wizard 生 成 的ASP 页 时, 如 果 你 是 以 表
格 方 式 输 出 结 果, 当 没 有 任 何 记 录 返 回 时, 页 面 上 也 会 出 现
一 行 孤 零 零 的 表 头, 很 不 美 观, 原 因 是Wizard 把 生 成 表 头 的 那
几 行HTML 语 句 放 在 了 判 断 是 否 有 记 录 返 回 的ASP 语 句 之 前, 你
可 以 把 它 挪 到 后 面, 使 表 头 只 在 有 记 录 返 回 时 才 显 示 出 来。
----四、 存 盘 退 出 后, 记 住 以 后 最 好 不 要 再 用 FrontPage Editor 打
开 此 页 了, 即 使 打 开 也 不 要 存 盘, 否 则 大 部 分 手 工 加 入 的ASP
代 码 都 会 被 清 除。 如 果 要 编 辑, 用notepad( 记 事 本) 打 开。
----笔 者 曾 用 上 述 方 法 开 发 了 诸 如 用 户 意 见 反 馈、 图 书 资 料 库
查 询 等ASP 应 用。 一 般 都 是 先 用Database Region Wizard 生 成ASP 程 序
框 架, 再 用FrontPage Editor 进 行 外 观 润 色, 最 后 用 Text Editor(note
pad) 加 入 自 己 的 个 性 化 控 制, 如 输 出 结 果 的 分 页 控 制 等。 在
时 间 有 限, 并 且 要 求 不 很 复 杂 的 情 况 下, 这 种 方 法 的 确 能 起
到 事 半 功 倍 的 效 果。 当 然, 如 果 你 有 更 多 的 时 间 和 精 力, 想 进
一 步 优 化 你 的ASP 网 页, 建 议 你 最 好 使 用ASP 的 专 用 开 发 工 具,
如InterDev 等。 顺 便 提 醒 一 句 — — 它 可 是 很 占 地 儿 的。(出处:热点网络)
……