----经 常 在Internet上 冲 浪 的 网 友 恐 怕 很 少 有 人 没 有 去 过 聊 天 室 神 侃 胡 吹 过。 你 只 要 稍 微 留 意 一 下 就 会 发 现 这 些 聊 天 室 大 多 是 用CGI程 序 或 者 用JAVA开 发 的Applet维 护 的。 开 发 过 这 类CGI或Applet的 程 序 员 都 知 道, 这 种 开 发 工 作 是 费 时 费 力 的。 那 么 有 没 有 一 种 更 简 单、 省 力 的 开 发 方 式 呢 ? 答 案 是 肯 定 的。 笔 者 利 用ASP很 快 就 开 发 了 一 个 聊 天 室, 该 聊 天 室 不 光 速 度 快, 维 护 也 特 方 便。 在 这 里 笔 者 想 把 开 发 过 程 中 的 技 术、 技 巧 和 心 得 介 绍 给 大 家。
----关 于ASP在《 计 算 机 世 界 报》 上 有 很 多 文 章 都 有 介 绍, 这 里 不 再 赘 述。 笔 者 工 作 的 单 位 里 有 一 个 由Windows NT4.0组 织 的LAN。NT服 务 器 上 安 装 了IIS3.0, 设 置 了 若 干 各WEB站 点, 其 中 一 个 取 名 为fyb.cam.gov.cn。 本 单 位 的WEB站 点 并 没 有 接 入Internet, 由 于 有 聊 天 室 却 也 吸 引 了 不 少 本 单 位 的 员 工。 如 果 您 的 工 作 环 境 与 我 们 的 相 同, 不 妨 也 在 自 己 的LAN里 面 如 法 炮 制 一 个 聊 天 室。
一、 聊 天 室 的 规 划:---- 1、 谈 话 内 容 储 存 方 式 的 选 择: 在 客 户 机 上 显 示 即 时 谈 话 的 内 容 应 以 什 么 方 式 储 存 在 服 务 器 呢 ?ASP有 两 种 选 择, 一 种 是 以 文 本 文 件 方 式, 一 种 是 以 数 据 库 方 式。 但 笔 者 感 觉ASP对 文 本 文 件 操 作 的 指 令 远 不 如ADO(ActiveDataObject)提 供 的 对 数 据 库 操 作 的 指 令 多。 所 以 利 用ADO,ASP能 对 数 据 库 灵 活 地 操 作, 比 如 插 入、 删 除、 更 新、 查 询 等 等。 笔 者 选 择Access数 据 库 来 储 存 谈 话 的 内 容。 该 数 据 库 内 容 只 保 留 一 天( 可 根 据LAN的 实 际 情 况 确 定 时 间 长 短) 的 谈 话 内 容。
---- 2、 聊 天 室 界 面 的 设 计: 为 了 客 户 能 够 方 便 地 浏 览 站 点 的 内 容, 又 能 尽 可 能 地 显 示 聊 天 室 的 内 容, 笔 者 在 一 幅 主 页 里 设 计 了 三 帧。 左 边 一 帧 显 示 的 是 站 点 的Index。 右 边 一 帧 又 分 成 上 下 两 帧。 上 帧 占70%, 用 来 显 示 当 前 聊 天 室 的 内 容; 下 帧 占30%, 用 来 提 供 一 个 文 本 输 入 框 和 供 用 户 反 馈 的 按 钮
---- 3、 进 入 聊 天 室 的 步 骤: 象 大 多 数 聊 天 室 一 样, 首 先 应 该 提 供 给 用 户 一 个 登 录 界 面, 由 用 户 输 入 自 己 的 名 字 或 别 名 和 自 己 随 意 给 定 的 密 码。 如 果 输 入 的 用 户 名 与 在 线 的 用 户 名 相 同, 则 提 示 用 户 重 新 选 择 用 户 名 或 重 新 输 入 密 码, 以 保 证 在 线 的 所 有 用 户 名 都 是 唯 一 的。 登 陆 成 功 后 进 入 聊 天 室, 内 容 显 示 帧 显 示“欢 迎 加 入”的 欢 迎 信 息。 用 户 就 可 以 在 文 本 输 入 区 内 输 入 谈 话 内 容 了。
二、 设 计 过 程 和 开 发 技 巧:---- 1、 设 计ODBC系 统 数 据 源: 如 前 所 述, 本 开 发 采 用ASP对ADO进 行 操 作, 因 此 必 须 先 对 数 据 源 进 行 设 置。 在NT服 务 器 的 控 制 面 板 里 双 击ODBC图 标, 在 系 统DSN页 添 加 系 统DSN, 选 择Microsoft Access Driver,Data Source Name为‘fybchat’, Database选 择Chat目 录 下 的chat.mdb.该 数 据 库 包 括 下 面 几 个 字 段:name, content,password,chattime,chatdate,分 别 以 来 存 储 姓 名、 谈 话 内 容、 密 码、 谈 话 时 间 和 谈 话 日 期。
---- 2、 登 录 界 面 设 计: 登 录 界 面 为 一html页, 包 含 一 些 警 告 信 息 和 一 个Form。 该Form以 来 获 取 用 户 名 和 密 码, 如 下 所 示:
姓 名:密 码:< /center >< br >< br >< center >< /center >< /form >----通 过 提 交 按 钮 来 激 发receivedata.asp。 该ASP文 件 主 要 来 保 证 在 聊 天 室 里 没 有 两 个 用 户 是 同 名 的。 用 户 提 交 信 息 后, 该 文 件 打 开chat.mdb检 查 是 否 已 经 有 该 用 户 名, 如 果 有 但 密 码 不 对 就 提 醒 用 户 重 新 输 入 密 码, 如 果 没 有 那 么 用 户 就 顺 利 进 入 了 聊 天 室。 进 入 聊 天 室 界 面 的 功 能 由 下 列 语 句 完 成: " NAME="footnotes"MARGINWIDTH="1"MARGINHEIGHT="1" Noresize >< /FRAMESET >----注 意 这 里 有 一 个 技 巧, 通 过 参 数kname将 用 户 的 姓 名 隐 藏 在 客 户 的 浏 览 器 里 面 了, 这 样 一 来, 用 户 每 次 提 交 谈 话 内 容 的 同 时 也 把 他 的 姓 名 提 交 了。 ---- 3、 文 本 输 入 区 的 设 计: 文 本 输 入 区 是 由frft.asp产 生 的。 如 上 所 述, 用 户 每 次 提 交 谈 话 内 容 的 同 时 也 把 他 的 姓 名 提 交 了, 用 户 提 交 谈 话 内 容 的 动 作 是 激 活forum.asp。forum.asp的 作 用 是 刷 新 聊 天 室 的 内 容。Frft.asp内 容 如 下:
< html >< head >< title >< /title >< /head >< body ><%kname=request.QueryString("kname")% >< /p >< /p > >< /form >< !--Sub IeTimer1_Timer()if fm1.content.value="" thenfm1.content.value=""fm1.submitelseend ifend sub
sub b1_onclick()fm1.submitfm1.content.value=""end sub-- >< /SCRIPT >< PARAM NAME="_ExtentX"VALUE="1005" >< PARAMNAME="_ExtentY"VALUE="1005" >< PARAM NAME="Interval"VALUE="7000" >< /OBJECT >< /body >< /html >----这 时 又 出 现 了 一 个 问 题, 用 户 必 须 不 停 提 交 才 能 看 到 最 新 的 聊 天 室 内 容, 这 显 然 给 用 户 带 来 了 不 便。 于 是 考 虑 用 一 个timer的ActiveX控 件 来 控 制 聊 天 室 的 内 容 岂 不 更 好 ? 于 是 选 用 了Ietimer, 如 上< object > … …< /object >所 引 用, 每 隔7秒 钟 聊 天 室 内 容 自 动 更 新 一 次。 这 样 即 使 用 户 不 想 参 加 聊 天 也 可 以 坐 在 机 器 边 看 别 人 聊 天 了。
三、 总 结----由 上 述 开 发 过 程 我 们 可 以 知 道, 利 用ASP程 序 可 以 很 灵 活 地 传 递 参 数, 并 且 可 以 很 灵 活 地 将 程 序 流 程 分 割 成 几 个 单 独 的ASP程 序, 非 常 利 于 程 序 的 调 试, 对ActiveX控 件 的 支 持 和 对DAO的 强 大 操 作 能 力 使 得 利 用ASP能 够 开 发 功 能 非 常 强 大 的 程 序。