发信人: 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]
  | 
 
 
 |