ASP 包 含 五 个 内 置 的ActiveX 服 务 器 组 件, 即: 文 件 访 问 组 件(File Access Component)、 广 告 轮 播 器 组 件(Ad Rotator Component)、 浏 览 器 信 息 组 件(Browser Capabilities Component)、 内容 链 接 组 件 (Content Linking Component)、 数 据 库 访 问 组 件Database Access Component)。 这 五 个 内 置 组 件 在 制 作 网 页 过 程中 非 常 有 用, 下 面 分 别 举 例 说 明 如 何 使 用 这 几 个 内 置 组件 解 决 网 页 开 发 过 程 中 经 常 遇 到 的 一 些 问 题。
1. 文 件 访 问 组 件
文 件 访 问 组 件 提 供 了 读 写 服 务 器 文 件 的 功 能, 使 用 这一 组 件 可 以 轻 松 实 现 页 面 中 一 些 常 见 应 用, 如 访 客 计 数器 和 每 次 装 入 主 页 时 给 出 一 个 不 同 的 提 示 或 座 右 铭 等 应用 都 可 以 用 此ActiveX 服 务 器 组 件 设 计 出 来。
访 客 计 数 器 几 乎 是 每 个 站 点 的 主 页 都 要 实 现 的 一 个 应 用, 它 可 以 记 录 页 面 被 访 问 的 次 数。 每 当 有 人 浏 览 此 页, 它 将 自 动 把 计 数 器 加 一 并 显 示 于 页 面 上。Internet 站 点上 大 部 分 的 访 客 计 数 器 都 是 用CGI 程 序 所 实 现 的, 现 在 我们 采 用 文 件 访 问 组 件 来 实 现 它。
实 现 此 应 用 的 源 代 码 如 下:
< %
CounterFile=Server.MapPath(“counter.txt")
Set FileObj=Server.CreateObject(“Scripting.FileSystemObject")
Set Out=FileObj.OpenTextFile(CounterFile,1,False,False)
Counter=Out.ReadLine
Set Out=FileObj.CreateTextFile(CounterFile,True,False)
Application.lock
Counter=Counter +1
Out.Write(Counter)
Application.unlock
Out.Close
% >
欢 迎 ! 您 是 访 问 本 站 点 的
第< %= Counter % > 位 客 人 !
页 面 开 发 人 员 首 先 需 要 建 立 一 个 counter.txt 的 文 本 文 件, 并 赋 予 初 值 为0, 此 文 件 负 责 保 存 访 问 页 面 的 次 数。 在ASP 脚 本 代 码 中 生 成FileSystemObject 对 象, 以 实 现 对 服务 器 文 件 的 操 作。 通 过 此 对 象 读 取counter.txt 文 件 保 存 的 数 值 并 加1, 使 用“Application.lock” 方 法 禁 止 别 人 同 时 改 写记 数 文 件, 写 回 文 件 后 用“Application.unlock” 方 法 解 除, 最后 显 示 新 值 于 页 面 中。
这 种 纯 数 字 形 式 显 示 在 页 面 上 并 不 很 美 观, 开 发 人 员可 以 制 作 代 表0 ~9 数 字 的 图 片 来 美 化 页 面, 通 过 再 添 加 一 些ASP 脚 本 把 纯 数 字 用 相 应 的 图 片 来 代 替, 这 样 就 可 以开 发 出 各 具 特 色 的 计 数 器。
在Internet 某 些 站 点 上, 网 友 每 次 访 问 同 一 页 面 时, 此 页 面 会 提 供 给 访 问 者 不 同 的 提 示 或 座 右 铭, 使 回 头 客 不会 有 枯 燥 的 感 觉, 使 页 面 变 得 更 加 生 动 和 吸 引 人。 巧 妙 使 用 文 件 访 问 组 件 也 可 以 实 现 此 功 能。 源 代 码 如 下:
< %
Randomize
TipNo=Int(10 Rnd)
TipsFile=Server.MapPath(“tips.txt")
Set FileObj=Server.CreateObject
(“Scripting. FileSystemObject")
Set Out=FileObj.OpenTextFile(TipsFile,1,False,False)
While TipNo>0
Out.SkipLine()
TipNo=TipNo -1
wend
TipDay=Out.ReadLine
Response.Write“ 今 日 座 右 铭:" &TipDay
Out.Close
% >
在ASP 程 序 中 使 用“Int(10 Rnd)” 产 生 一 个 0 ~9 的 随 机 数, 以 随 机 读 取 保 存 于tips.txt 文 件 中 的 十 个 不 同 的 座 右 铭, 就 可 以 实 现 不 同 时 间 访 问 此 页 面 会 显 示 不 同 的 座 右 铭。
2. 广 告 轮 播 器 组 件
广 告 轮 播 器 组 件 提 供 了 广 告 轮 流 播 放 的 功 能, 它 可 以 使 广 告 图 片 轮 流 显 示 于 页 面 上, 并 可 设 定 各 广 告 图 片 出现 的 频 率 及 相 应 的 超 链 接。 实 现 此 功 能 的ad.asp 文 件 的 源代 码 如 下:
< %set ad=Server.CreateObject
(“MSWC. Adrotator") % >
< %=ad.GetAdvertisement(“show. txt") % >
广 告 轮 播 器 的 功 能 实 现 比 较 简 单, 完 成 此 复 杂 的 应 用只 要 两 行 程 序 即 可。 首 先 定 义 一 个Adrotator 的 对 象, 再 把 此 对 象 添 加 到 需 要 显 示 的 地 方。 实 现 此 应 用 还 需 要 两 个辅 助 文 件, 一 个 是 记 录 广 告 轮 播 相 关 信 息 的show.txt 文 件;另 一 个 是 用 于 处 理 链 接 到 相 应 页 面 的redirect.asp 文 件。
show.txt 文 件 的 内 容 为:
redirect redirect.asp
width 200
height 100
border 0
microsoft.gif
microsoft.htm
microsoft
50
sun.gif
sun.htm
sun
50
此 文 件 中 的 前 一 部 分 为 基 本 信 息, 包 括 指 向 处 理 文 件的 文 件 名, 设 定 图 片 的 宽 度、 高 度、 边 框 的 默 认 值。 后 一部 分 为 记 录 轮 流 显 示 图 片 的 文 件 名、 图 片 超 链 接 的HTML 页面 地 址、 代 替 的 文 字 和 广 告 图 片 出 现 的 概 率( 百 分 率)。
两 部 分 之 间 用“ ” 分 离。redirect.asp 文 件 的ASP 脚 本 代 码 为
< %Response.Redirect
(Request.QueryString(“url")) % >
它 获 得 图 片 超 链 接 的URL 地 址 并 链 接 到 不 同 的 网 址。 在此 文 件 中 也 可 以 添 加 更 多 的 脚 本 实 现 更 丰 富 的 功 能, 以满 足 用 户 的 不 同 需 要。
3. 浏 览 器 信 息 组 件
浏 览 器 信 息 组 件 提 供 获 取 浏 览 器 相 关 信 息 的 功 能。 开发 者 可 以 通 过 这 一 组 件 获 知 客 户 端 使 用 浏 览 器 的 版 本 及其 他 信 息, 根 据 用 户 使 用 不 同 的 浏 览 器, 提 供 给 他 们 不 同 的 页 面。
实 现 此 功 能 的 源 代 码 如 下:
< %
Set Type1=Server.CreateObject(“MSWC.BrowserType")
If Type1.Browser=“IE" Then
Response.Redirect(“IEversion.htm")
Else
Response.Redirect(“Others.htm")
End If
% >
客 户 端 的 脚 本 同 样 可 以 获 取 浏 览 器 的 相 关 信 息, 但 它与 用ASP 服 务 器 端 脚 本 所 实 现 的 功 能 有 所 不 同, 用ASP 编 写的 程 序 由Web 服 务 器 判 断 用 户 浏 览 器 的 类 型, 然 后 就 可 以直 接 提 交 给 用 户 不 同 的 页 面。
4 . 内 容 链 接 组 件
内 容 链 接 组 件 可 以 很 方 便 地 使 用 一 个 文 本 文 件 来 管 理 超 链 接、 上 一 页、 下 一 页 等 链 接 功 能。 几 行ASP 代 码 加 上一 个URL 表 的 文 本 文 件 即 可 管 理 链 接。 若 页 面 中 的 超 链 接有 所 变 动, 页 面 维 护 人 员 只 需 改 变 文 本 文 件 中URL 表 的 内容 即 可, 无 须 更 改 页 面 的 源 代 码。 这 对 站 点 的 内 容 及 超链 接 经 常 发 生 变 化 的 页 面 维 护 人 员 来 说 无 疑 是 一 个 福 音 它 能 大 大 减 少 页 面 维 护 人 员 的 工 作 量 和 出 错 概 率。
实 现 此 管 理 链 接 功 能 的 源 代 码 如 下:
< %
Set Link=Server.CreateObject(“MSWC.NextLink")
Count=Link.GetListCount(“link.txt")
I=1
% >
今 日 通 知:< br >
< ol >< ul >
< %Do While (I<=Count) % >
< li >< a href=“< %=Link.GetNthURL
(“link.txt",I) % >" >
< %=Link.GetNthDescription
(“link.txt",I) % >< /a >
< %I=I +1
Loop % >
< /ul >< /ol >
link.txt 文 本 文 件 的 内 容 为:
movie.asp 1. 今 日 影 讯
security. asp 2. 安 全 通 知
newyear. asp 3. 春 节 放 假 通 知
在 此 实 例 中 用“GetListCount” 获 得link.txt 文 件 中 记 录 的 条 目 个 数, 分 别 用“GetNthURL” 及“GetNthDescription” 方 法 取 得URL 地 址 和 说 明 并 在 页 面 上 显 示 出 全 部 内 容 和 超 链 接 的 信 息。 只 要 改 变link.txt 文 件 的 内 容 和 超 链 接, 页 面 显 示 的信 息 也 将 随 之 发 生 变 化。
实 现 上 一 页、 下 一 页 功 能 的 源 代 码 如 下:
< %Set Link=Server.CreateObject
(“MSWC.NextLink") % >
本 页 是:< %=Link.GetNthDescription
(“link.txt",Link.GetListIndex
(“link.txt")) % >< br >
上 一 页:< a href=“< %=Link.GetPreviousURL
(“link.txt") % >" >
< %=Link.GetPreviousDescription
(“link.txt") % >< /a >< br >
下 一 页:< a href=“< %=
Link.GetNextURL
(“link.txt") % >" >
< %=Link.GetNextDescription
(“link.txt") % >< /a >< br >
在 此 应 用 中, 使 用“GetPreviousURL” 和 “GetPreviousDescription” 取 得 上 一 页 的URL 地 址 和 说 明; 使 用 “GetNextURL” 和“GetNextDescription” 取 得 上 一 页 的URL 地 址 和 说明。 在 用 户 浏 览 此 网 页 时,ASP 脚 本 执 行 的 结 果 为: 上 一 页、 下 一 页 的 超 链 接 会 根 据link.txt 文 件 内 容 的 顺 序 链 接 到相 应 的 上、 下 页 面, 网 页 制 作 人 员 只 要 维 护 好link.txt 文 件中 页 面 的 地 址 和 说 明 以 及 前 后 顺 序 即 可。 这 个 组 件 的 实例 使 制 作 人 员 从 众 多 的 超 链 接 关 系 中 解 脱 出 来, 这 种 应用 无 疑 是 解 决 维 护 页 面 链 接 的 一 种 较 佳 方 案。
5. 数 据 库 访 问 组 件
使 用 数 据 库 访 问 组 件 中 的ADO(ActiveX Data Objects) 组 件 可以 提 供 访 问 数 据 库 的 功 能, 并 能 设 计 出 功 能 完 善 的Web 数据 库 的 应 用。 由 于 介 绍 和 使 用ADO 组 件 开 发 相 关 的 应 用 所占 的 篇 幅 较 多, 这 里 就 不 再 举 例 说 明 了。
以 上 作 者 所 提 供 的 实 例 都 经 过 实 际 的 运 行, 读 者 可 以直 接 移 植 到 页 面 中 使 用。 这 些 实 例 实 现 起 来 虽 很 简 单, 但 较 好 地 解 决 了 广 大 页 面 制 作 人 员 经 常 遇 到 的 一 些 问 题