精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● ASP>>组件应用>>巧用ASP的内置组件

主题:巧用ASP的内置组件
发信人: williamlong()
整理人: i_am_trueman(2003-10-22 17:09:08), 站内信件


    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 组 件 开 发 相 关 的 应 用 所
 

占 的 篇 幅 较 多, 这 里 就 不 再 举 例 说 明 了。 

    以 上 作 者 所 提 供 的 实 例 都 经 过 实 际 的 运 行, 读 者 可 以
 

直 接 移 植 到 页 面 中 使 用。 这 些 实 例 实 现 起 来 虽 很 简 单, 


但 较 好 地 解 决 了 广 大 页 面 制 作 人 员 经 常 遇 到 的 一 些 问 题


。 这 些 实 例 权 作 笔 者 抛 砖 引 玉, 希 望 读 者 们 在 此 基 础 上
 

开 发 出 更 精 彩 的 应 用。( 作 者Email:[email protected]) 

--
                                            
  
  ☆ 蓝色月光 ☆ [email protected]  
  
                                          

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.142.60]

[关闭][返回]