— — 構(gòu) 造 數(shù) 據(jù) 庫(kù) 接 口 網(wǎng) 頁(yè) 的 捷 徑 北 京 信 息 技 術(shù) 應(yīng) 用 研 究 所 蔣 曉 京 ---------------------------------------------------------------------------- ---- ----隨 著Internet/Intranet 和Web 技 術(shù) 的 迅 猛 發(fā) 展, 上 網(wǎng) 用 戶 已 不 僅 僅 滿 足 于 瀏 覽 靜 態(tài) 的 網(wǎng) 頁(yè) 內(nèi) 容, 而 更 希 望 通 過(guò) 人 機(jī) 對(duì) 話 的 動(dòng) 態(tài) 交 互 方 式 獲 取 所 需 信 息; 而 對(duì) 于Web 開(kāi) 發(fā) 者 來(lái) 說(shuō), 靜 態(tài) 網(wǎng) 頁(yè) 也 存 在 占 用 磁 盤 空 間 多、 信 息 內(nèi) 容 分 散、 維 護(hù) 更 新 困 難 等 問(wèn) 題。 因 此, 在Web 上 使 用 動(dòng) 態(tài) 交 互 網(wǎng) 頁(yè) 發(fā) 布 信 息 已 是 眾 望 所 歸 。 ----傳 統(tǒng) 的 生 成 動(dòng) 態(tài) 網(wǎng) 頁(yè) 的 方 式 — — 如CGI、 ISAPI 等 存 在 開(kāi) 銷 大 、 效 率 低、 開(kāi) 發(fā) 困 難、 無(wú) 法 與HTML 語(yǔ) 言 緊 密 結(jié) 合 等 缺 陷。ASP(Ac tive Server Pages, 中 文 譯 作“ 動(dòng) 態(tài) 服 務(wù) 器 網(wǎng) 頁(yè)") 作 為 微 軟 公 司 推 出 的 新 一 代 動(dòng) 態(tài) 網(wǎng) 頁(yè) 開(kāi) 發(fā) 技 術(shù), 正 好 彌 補(bǔ) 了 這 些 缺 陷, 它 具 有 易 于 生 成、 面 向 對(duì) 象、 可 擴(kuò) 充、 安 全 性 好、 適 用 范 圍 廣 且 與HTML 完 全 融 合 等 特 點(diǎn)。 關(guān) 于 它 的 工 作 原 理 和 技 術(shù) 特 點(diǎn),《 計(jì) 算 機(jī) 世 界》 已 作 過(guò) 深 入 詳 細(xì) 的 專 題 報(bào) 道, 本 文 不 再 重 復(fù)。 ----由 于 開(kāi) 發(fā)ASP 需 要 編 程, 往 往 使 初 學(xué) 者 望 而 卻 步。FrontPage98 作 為 時(shí) 下 最 流 行 的 網(wǎng) 站 開(kāi) 發(fā) 工 具, 具 有 使 用 簡(jiǎn) 便, 可 視 化 等 特 點(diǎn)。 有 人 以 為FrontPage98 只 能 起 組 織、 管 理 網(wǎng) 站 和 修 飾 頁(yè) 面 的 作 用, 對(duì) 開(kāi) 發(fā)ASP 幫 不 上 什 么 忙。 其 實(shí) 不 然,F(xiàn)rontPage98 內(nèi) 部 提 供 了 對(duì)ASP 的 支 持, 使 得 開(kāi) 發(fā) 者 不 須 編 程, 只 要 寫 幾 句SQL 語(yǔ) 句, 就 能 快 速 生 成 與 后 臺(tái) 數(shù) 據(jù) 庫(kù) 接 口 的ASP 頁(yè), 是 開(kāi) 發(fā)ASP 很 好 的 入 門 工 具。 本 文 就 將 介 紹 這 一 技 術(shù), 并 對(duì) 這 一 技 術(shù) 的 優(yōu) 缺 點(diǎn)、 與 手 工 編 寫 方 式 的 結(jié) 合 等 加 以 闡 述。 用FrontPage98 生 成ASP 頁(yè) 的 方 法 ----一、 首 先 確 保 你 的 系 統(tǒng) 滿 足 運(yùn) 行ASP 的 條 件, 即: 你 的Web 服 務(wù) 器 是 以 下 幾 種 中 的 一 種: ----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 。 你 的 服 務(wù) 器 裝 有 你 所 使 用 的 數(shù) 據(jù) 庫(kù) 的32 位ODBC 驅(qū) 動(dòng) 程 序( 包 括A ccess、SQL Server、Oracle、Foxpro 等, 總 之 是 所 有 支 持ODBC 的 數(shù) 據(jù) 庫(kù)) , 如 果 沒(méi) 有, 在 服 務(wù) 器 上 安 裝 該 數(shù) 據(jù) 庫(kù) 的 客 戶 端 軟 件 即 可。 你 的 服 務(wù) 器 上 安 裝 了FrontPage 98 Server Extensions(FrontPage 98 服 務(wù) 器 擴(kuò) 展, 安 裝FP98 時(shí) 會(huì) 自 動(dòng) 裝 入)。 你 的 服 務(wù) 器 上 安 裝 了ASP 引 擎( 運(yùn) 行 一 下IIS 安 裝 盤 或FP98 盤 中 的 ASP.EXE 文 件 即 可 安 裝, 也 可 到 以 下 網(wǎng) 址 下 載: www.microsoft.com/m sdownload/iis3/Download2.asp?Prod=1 )。 對(duì) 于IIS4 或PWS for WIN98, 上 述“3”、“4” 步 在 安 裝 時(shí) 就 已 設(shè) 好, 不 用 另 裝。 另 外,“1”、“3”、“4” 安 裝 的 順 序 不 能 打 亂。 ----二、 在 控 制 面 板|ODBC 中 定 義 好 你 要 使 用 的 數(shù) 據(jù) 庫(kù) 的DSN 數(shù) 據(jù) 源, 注 意 要 定 義 成“ 系 統(tǒng) 數(shù) 據(jù) 源"。 ----三、 建 立 數(shù) 據(jù) 庫(kù) 查 詢 頁(yè), 在FrontPage 98 的 Explorer 中 新 建 一 個(gè) 普 通HTML 網(wǎng) 頁(yè), 在 上 面 插 入 一 個(gè)Form 對(duì) 象, 比 如 一 個(gè) 單 行 文 本 框, 并 命 名 為“T1", 在Form 所 在 區(qū) 域 單 擊 鼠 標(biāo) 右 鍵, 在 彈 出 的 菜 單 中 點(diǎn)“Form Properties", 再 選 擇“Send to other : " 項(xiàng), 在 下 拉 列 表 中 選 擇“Custom ISAPI , NSAPI , CGI , or ASP Script" 項(xiàng), 并 單 擊Options, 在 彈 出 對(duì) 話 框 的Action 中 指 明 目 標(biāo)ASP 頁(yè) 的 相 對(duì) 路 徑 和 文 件 名, 如 “asp/list.asp", 這 樣, 只 要 用 戶 在 瀏 覽 器 中 一 按“ 提 交", 頁(yè) 面 就 會(huì) 自 動(dòng) 轉(zhuǎn) 到 該ASP 頁(yè)。 ----四、 建 立 數(shù) 據(jù) 庫(kù) 查 詢 結(jié) 果 顯 示 頁(yè)。 用FrontPage 98 的Explorer 在 網(wǎng) 站 中 新 建 一 個(gè) 目 錄, 命 名 為“ASP" ( 也 可 以 是 其 他 名 字), 賦 予 該 目 錄 允 許 執(zhí) 行 程 序 的 屬 性, 并 取 消 該 目 錄 的 可 讀 屬 性, 在 此 目 錄 下 新 建 一 個(gè) 網(wǎng) 頁(yè), 并 命 名 為 list.asp。ASP 網(wǎng) 頁(yè) 的 文 件 名 后 綴 必 須 為“.asp", 這 是 規(guī) 定 的。 最 好 把 所 有ASP 文 件 放 在 同 一 目 錄 下。 用FrontPage Editor 打 開(kāi) 此 頁(yè), 通 過(guò) 選 取 菜 單Insert | Database | Databa se Region Wizard, 進(jìn) 入Wizard。 在“ODBC Data Source Name(DSN)" 中 輸 入DSN 數(shù) 據(jù) 源 名( 即 前 面 第 “ 二 ” 步 在ODBC 中 定 義 好 的), 如 果 數(shù) 據(jù) 庫(kù) 有 用 戶 名 和 密 碼, 請(qǐng) 選 中“Username" 和“Password" 復(fù) 選 框 并 輸 入 內(nèi) 容。 輸 完 后 點(diǎn)“NEXT "。 在“Enter the SQL string for the Query" 中 輸 入SQL 查 詢 語(yǔ) 句, 如“SELECT * FROM table WHERE Name = ‘ % %T1 % %'”(table 為 數(shù) 據(jù) 庫(kù) 中 的 表 名, Name 為 字 段 名), 如 果 語(yǔ) 句 中 有 從Form 中 提 交 的 數(shù) 據(jù), 請(qǐng) 在 其 前 后 都 加 上“ % %", 如“T1" 應(yīng) 改 為“ % %T1 % %"。 如 果 你 點(diǎn) 擊“Insert Form Field Parameter" 來(lái) 加 入Form 提 交 的 數(shù) 據(jù),“ % %" 會(huì) 被 自 動(dòng) 加 上。 你 也 可 以 用“Paste SQL From Clipboard" 從 剪 貼 板 貼 入 SQL 語(yǔ) 句。 輸 完 后 點(diǎn) “NEXT "。 點(diǎn)“Add field", 輸 入 字 段 名, 在“Enter the query field names" 中 加 入 要 在 結(jié) 果 中 顯 示 的 字 段( 至 少 要 輸 入 一 個(gè))。 如 果 想 以 表 格 方 式 輸 出 結(jié) 果, 請(qǐng) 選 中“Show the query in a table" 復(fù) 選 框。 最 后 單 擊 “Finish", 這 樣, 一 個(gè)ASP 頁(yè) 就 生 成 了。 進(jìn) 一 步 調(diào) 整 輸 出 結(jié) 果 的 外 觀, 直 到 滿 意 為 止。 注 意, 表 頭 的 文 字 可 隨 意 修 改, 但 有 機(jī) 器 人 控 制 的“Database : xxxx" 部 分 不 能 修 改, 不 過(guò) 可 移 動(dòng) 或 刪 除。 如 果 你 需 要 修 改 前 面 輸 入 的DSN 數(shù) 據(jù) 源、SQL 語(yǔ) 句 或 增 減 在 結(jié) 果 中 顯 示 的 字 段, 把 鼠 標(biāo) 移 到Wizard 生 成 的 部 分, 當(dāng) 鼠 標(biāo) 變 成 一 個(gè) 小 機(jī) 器 人 時(shí) 單 擊 右 鍵, 在 彈 出 的 菜 單 中 選 中“Database Region Properties" 或“Database Column Value Properties" 來(lái) 進(jìn) 行 修 改。 用FrontPage98 生 成ASP 頁(yè) 的 優(yōu) 缺 點(diǎn) ----根 據(jù) 筆 者 的 使 用 經(jīng) 驗(yàn), 用Database Region Wizard 生 成ASP 頁(yè), 具 有 以 下 優(yōu) 點(diǎn): ----一、 不 用 編 寫 代 碼, 快 速 高 效, 簡(jiǎn) 便 易 行, 適 合 于 初 學(xué) 者 和 非 專 業(yè) 人 員。 你 只 須 構(gòu) 造 好 你 的SQL 查 詢 語(yǔ) 句, 其 他 的 事 大 可 放 心 地 交 給Wizard 去 做, 比 自 己 手 工 編 寫 快。 ----二、 程 序 對(duì) 輸 入 控 制 嚴(yán) 格, 有 效 避 免 非 法 字 符 入 侵。 用Data base Region Wizard 生 成 的 程 序, 通 過(guò) 對(duì) 表 單 提 交 的 數(shù) 據(jù) 前 后 加“ % %" 并 在 執(zhí) 行 過(guò) 程 中 檢 驗(yàn), 以 及 對(duì) 所 提 交 數(shù) 據(jù) 中 的 “ " ”、 “ ' ”( 即 單 雙 引 號(hào)) 等 符 號(hào) 進(jìn) 行 層 層 過(guò) 濾 的 做 法, 避 免 了 表 單 提 交 非 法 數(shù) 據(jù) 引 起 的 程 序 運(yùn) 行 錯(cuò) 誤。 而 手 工 編 寫ASP 頁(yè) 時(shí) 這 些 都 要 自 己 處 理。 ----三、 可 以 通 過(guò)FrontPage Editor 對(duì) 輸 出 結(jié) 果 的 格 式 進(jìn) 行 直 觀 的 調(diào) 整, 使 輸 出 結(jié) 果 更 為 美 觀。 通 常, 由 于ASP 頁(yè) 是 動(dòng) 態(tài) 生 成 的, 手 工 編 寫 的ASP 頁(yè), 在FrontPage Editor 中 由 于 未 經(jīng) 運(yùn) 行, 所 以 看 不 到 輸 出 結(jié) 果 的 樣 式, 也 就 無(wú) 法 調(diào) 整; 而Wizard 生 成 的ASP 頁(yè), 通 過(guò)FrontPage WebBot( 機(jī) 器 人) 對(duì) 輸 出 結(jié) 果 提 供 了 預(yù) 覽, 你 可 以 像 調(diào) 整 任 何 靜 態(tài) 文 字、 表 格 一 樣 調(diào) 整 輸 出 結(jié) 果 的 外 觀。 ----但 是, 過(guò) 于 自 動(dòng) 化 的 處 理 有 時(shí) 也 往 往 意 味 著 靈 活 性 的 喪 失 。Wizard 為 我 們 帶 來(lái) 方 便 的 同 時(shí), 也 削 弱 了ASP 程 序 運(yùn) 行 的 自 由 度, 為 我 們 細(xì) 致 入 微 地 控 制 程 序 帶 來(lái) 了 一 些 麻 煩。 如 果 你 用 Wizard 生 成 了 一 個(gè)ASP 頁(yè), 然 后 又 在FrontPage Editor 中 點(diǎn) 擊“HTML" 卡 片, 在HTML 編 輯 方 式 下 插 入 了 一 些 自 己 的ASP 代 碼, 比 如 自 動(dòng) 分 頁(yè) 的 代 碼, 然 后 存 盤 退 出,F(xiàn)rontPage Editor 會(huì) 彈 出 一 個(gè) “The cont ents of a FrontPage component have been modified . These contents will be ov erwritten when you save this page " 的 提 示, 并 且 只 有 一 個(gè)“ 確 定" 按 鈕, 這 樣, 你 在 HTML 方 式 下 插 入 的ASP 代 碼 大 部 分 都 不 會(huì) 被 保 存。 筆 者 就 曾 犯 過(guò) 這 樣 的 錯(cuò) 誤, 結(jié) 果 辛 辛 苦 苦 編 寫 的 大 段 代 碼 都 付 諸 東 流。 與 手 工 編 寫 的ASP 代 碼 相 結(jié) 合 ----怎 樣 才 能 使Wizard 生 成 的 代 碼 與 手 工 編 寫 的ASP 代 碼 在 同 一A SP 頁(yè) 中 和 平 共 處 呢 ? 方 法 是: 先 用FrontPage Editor 打 開(kāi)ASP 頁(yè), 調(diào) 整 好 用Wizard 自 動(dòng) 處 理 的 部 分, 以 及 所 有 想 用 FrontPage Editor 處 理 的 部 分, 如 頁(yè) 面 外 觀 的 調(diào) 整 等, 存 盤 退 出。 在 FrontPage Explo rer 的Folders 視 圖 右 擊 該ASP 頁(yè) 的 圖 標(biāo), 在 彈 出 的 菜 單 中 選“Open With …", 在 隨 后 出 現(xiàn) 的 選 項(xiàng) 中 選“Text Editor(notepad.exe)", ASP 頁(yè) 將 以 記 事 本 方 式 打 開(kāi)。 輸 入 自 己 的ASP 代 碼, 請(qǐng) 注 意 以 下 諸 點(diǎn): ----一、 在“" 中 的 部 分 是FrontPage 機(jī) 器 人 自 動(dòng) 處 理 的 部 分, 最 好 不 要 改 動(dòng), 但 你 可 以 改 動(dòng) 下 面 這 一 句:“No Record Found!" , 把 凡 是 出 現(xiàn) 這 一 句 的 地 方 雙 引 號(hào) 內(nèi) 的 部 分 改 為:“ 對(duì) 不 起 ! 沒(méi) 有 符 合 要 求 的 記 錄。" 或 干 脆 連 雙 引 號(hào) 一 起 刪 掉, 這 樣, 當(dāng) 沒(méi) 有 記 錄 返 回 時(shí), 就 不 會(huì) 顯 示 英 文 “No Record Found!" 了。 ----二、< % … … %> 中 的 部 分 即 是ASP 的 代 碼 部 分。 你 既 可 以 在 已 有 的< % … … %> 部 分 中 插 入 自 己 的ASP 代 碼, 也 可 以 在HTML 語(yǔ) 句 中 通 過(guò) 插 入< % … … %> 來(lái) 開(kāi) 辟 自 己 的ASP 代 碼 區(qū) 域。 當(dāng) 然, 你 首 先 應(yīng) 讀 懂 自 動(dòng) 生 成 的ASP 代 碼, 理 解 它 的 流 程 控 制 和 主 要 變 量 的 含 義, 再 加 入 自 己 的 代 碼, 比 如 分 頁(yè) 控 制 等。 由 于 自 動(dòng) 生 成 的ASP 代 碼 中 的 變 量 使 用 的 都 是 描 述 性 的 短 語(yǔ), 應(yīng) 該 不 難 理 解。 ----三、 對(duì) 于 已 存 在 的HTML 和Wizard 生 成 的ASP 代 碼, 也 可 以 根 據(jù) 需 要 稍 加 調(diào) 整。 比 如 運(yùn) 行 由Wizard 生 成 的ASP 頁(yè) 時(shí), 如 果 你 是 以 表 格 方 式 輸 出 結(jié) 果, 當(dāng) 沒(méi) 有 任 何 記 錄 返 回 時(shí), 頁(yè) 面 上 也 會(huì) 出 現(xiàn) 一 行 孤 零 零 的 表 頭, 很 不 美 觀, 原 因 是Wizard 把 生 成 表 頭 的 那 幾 行HTML 語(yǔ) 句 放 在 了 判 斷 是 否 有 記 錄 返 回 的ASP 語(yǔ) 句 之 前, 你 可 以 把 它 挪 到 后 面, 使 表 頭 只 在 有 記 錄 返 回 時(shí) 才 顯 示 出 來(lái)。 ----四、 存 盤 退 出 后, 記 住 以 后 最 好 不 要 再 用 FrontPage Editor 打 開(kāi) 此 頁(yè) 了, 即 使 打 開(kāi) 也 不 要 存 盤, 否 則 大 部 分 手 工 加 入 的ASP 代 碼 都 會(huì) 被 清 除。 如 果 要 編 輯, 用notepad( 記 事 本) 打 開(kāi)。 ----筆 者 曾 用 上 述 方 法 開(kāi) 發(fā) 了 諸 如 用 戶 意 見(jiàn) 反 饋、 圖 書 資 料 庫(kù) 查 詢 等ASP 應(yīng) 用。 一 般 都 是 先 用Database Region Wizard 生 成ASP 程 序 框 架, 再 用FrontPage Editor 進(jìn) 行 外 觀 潤(rùn) 色, 最 后 用 Text Editor(note pad) 加 入 自 己 的 個(gè) 性 化 控 制, 如 輸 出 結(jié) 果 的 分 頁(yè) 控 制 等。 在 時(shí) 間 有 限, 并 且 要 求 不 很 復(fù) 雜 的 情 況 下, 這 種 方 法 的 確 能 起 到 事 半 功 倍 的 效 果。 當(dāng) 然, 如 果 你 有 更 多 的 時(shí) 間 和 精 力, 想 進(jìn) 一 步 優(yōu) 化 你 的ASP 網(wǎng) 頁(yè), 建 議 你 最 好 使 用ASP 的 專 用 開(kāi) 發(fā) 工 具, 如InterDev 等。 順 便 提 醒 一 句 — — 它 可 是 很 占 地 兒 的。(出處:熱點(diǎn)網(wǎng)絡(luò))
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!