转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Web Application 開 發 利 器 - WebSnap(二)         ★★★★

Web Application 開 發 利 器 - WebSnap(二)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2174 更新时间:2009/4/23 18:41:05


Web Application 開 發 利 器 - WebSnap!

第 二 章 、 第 一 個 WebSnap 程 式

 

2-1 、 起 步 走

 

 前 面 談 了 許 多 理 論 , 這 一 章 我 們 就 開 始 來 撰 寫 我 們 的 第 一 個 WebSnap Application , 首 先 讓 我 們 開 啟 New Items Dialog , 接 著 切 換 到 WebSnap 頁 後 , 你 會 看 到 以 下 的 畫 面 :  


DELPHI 6 提 供 了 三 個 WebSnap Wizard 來 加 快 我 們 開 發 程 式 的 速 度 , 這 裡 請 你 選 擇 WebSnap Application 來 建 立 一 個 新 的 WebSnap Application Project 。

 

 

從 左 邊 的 畫 面 上 我 們 可 以 看 到 Server Type 這 個 選 項 , 為 了 方 便 以 後 除 錯 , 請 你 選 擇 WebAppDebuger 並 輸 入 一 個 CoClassName 。 接 著 讓 我 們 看 看 第 二 區 段 的 選 項 , 在 這 裡 我 們 可 以 看 到 有 Page Module 及 Data Module 兩 種 Module 可 以 選 擇 , 這 些 就 是 我 們 在 上 一 節 中 所 討 論 過 的 Application Module 。 這 個 範 例 中 我 們 的 Application Module 必 須 要 能 輸 出 一 個 網 頁 , 因 此 請 你 選 擇 Page Module , 這 會 使 DELPHI 產 生 出 一 個 Application Page Module , 這 就 是 我 們 的 首 頁 。 同 時 在 右 下 角 處 你 也 可 以 看 到 一 個 Components 按 紐 , 執 行 她 後 就 會 開 出 右 邊 的 視 窗 , 在 這 個 視 窗 中 可 以 讓 我 們 選 擇 將 放 在 Module 中 的 元 件 。 這 裡 讓 我 簡 單 的 解 釋 一 下 這 些 元 件 所 代 表 的 意 義 :   

 

Application Adapter 

    這 個 元 件 中 封 裝 了 Application 資 訊 , 例 如 Title 資 訊 等 。 由 於 Application Module  會 在 每 一 次 的 Client Request 到 達 後 被 活 化 , 所 以 我 們 也 可 以 利 用 TApplicationAdapter  的 Data 、 Actions 特 性 值 來 存 放 一 些 全 域 型 的 資 料 或 是 Action 操 作 。

 

End User Adapter

    這 個 元 件 是 封 裝 了 使 用 者 管 理 及 權 限 控 制 的 Adapter , 負 責 使 用 者 的 Login/Logout 及 權 限 控 制 。 當 Dispatcher 在 將 Client Request 交 給 任 何 一 個 Module 之 前 , 必 須 利 用 她 來 確 認 該 使 用 者 是 否 有 權 利 進 入 這 個 Module 。 WebSnap 中 提 供 了 兩 個 這 類 型 的 Adapter , 一 個 是 TEndUserAdapter 另 一 個 則 是 會 將 使 用 者 資 料 存 放 在 Session 中 的 TEndUserSessionAdapter 。

 

Page Dispatcher  

    這 個 元 件 負 責 解 析 Client Request 中 的 Page Request 資 訊 , 接 著 找 到 正 確 的 Page Module 後 將 要 求 導 向 至 正 確 的 Page Module 中 。

 

Adapter Dispatcher

    Adapter Dispatcher 負 責 解 析 Client Request 中 的 Action 資 訊 , 並 找 到 Action 所 在 的  Module 及 Action 元 件 後 執 行 該 Action 。 例 如 使 用 者 按 下 了 某 一 個 Button , 而 該 Button 連 結 到 某 一 個 Action , 那 這 個 要 求 就 會 被 送 往 Adapter Dispatcher 。

 

Dispatch Actions

 

  這 個 元 件 屬 於 WebBroker 時 代 就 有 的 元 件 , 本 文 中 我 們 不 會 討 論 這 個 元 件 , 你 可 以 在 李 老 師 的 書 中 找 到 使 用 的 方 法 。

 

Locate File Service

    這 個 元 件 提 供 了 檔 案 管 理 功 能 , 如 Script 中 的 Include File 命 令 , 或 是 取 得 HTML Template File 動 作 , 都 會 經 由 這 個 元 件 來 運 作 。

 

Sessions Service

     主 要 是 提 供 Session 的 支 援 , 當 你 的 Application Module 含 有 此 元 件 時 , 就 代 表 你 的  Application Module 擁 有 處 理 Session 的 能 力 。

 

User List Service

    這 個 元 件 中 儲 存 了 使 用 者 資 料 並 提 供 確 認 使 用 者 資 料 的 功 能 函 式 , TLoginAdapterForm 元 件 會 先 利 用 這 個 元 件 來 確 認 使 用 者 資 料 , 之 後 再 使 用 TEndUserAdapter 元 件 來 完 成 整 個 Login 的 動 作 。

 

這 個 範 例 中 我 們 只 需 要 勾 選 三 個 元 件 :ApplicationAdapter 、 Page Dispatcher 以 及 Adapter Dispatcher 。 選 定 後 按 下 OK 按 紐 後 就 會 回 到 左 邊 的 視 窗 中 , 接 著 請 你 點 選 Page Options 按 紐 , 開 出 下 面 這 個 視 窗 :

 

 

 這 個 視 窗 中 的 選 項 可 以 讓 我 們 設 定 Page Module 的 資 訊 以 及 輸 出 網 頁 用 的 PageProducer 元 件 , 在 這 個 範 例 中 我 選 擇 了 TPageProducer 以 及 使 用 JScript 語 言 。 接 下 來 的 HTML 區 段 可 以 讓 我 們 設 定 是 否 要 產 生 一 個 新 的 HTML File 及 HTML Template 的 樣 式 , 請 你 在 Template 部 份 選 擇 Standard Template , 這 可 以 令 DELPHI 產 生 出 標 準 的 HTML Template File 。 另 外 在 Page 區 段 中 我 們 還 可 以 設 定 Page 的 Name 及 Title 這 兩 個 特 性 值 , Name 是 Module 的 名 稱 , Title 則 是 顯 示 於 網 頁 上 的 標 題 字 串 。 這 個 區 段 的 下 方 還 有 Published 及 Login Required  兩 個 選 項 , Published 是 用 來 控 制 這 個 Page 是 否 是 公 開 的 , 當 Published 被 Disable 時 , 這 個 Page 就 會 被 隱 藏 起 來 , 使 用 者 也 就 不 能 以 URL 來 訪 問 這 個 Page 了 。 在 某 些 情 況 下 我 們 可 以 利 用 一 些 技 巧 將 這 個 Page 輸 出 至 使 用 者 的 瀏 覽 器 , 這 通 常 使 用 於 動 態 產 生 的 網 頁 或 是 保 密 型 的 網 頁 中 。 Login Required 則 是 代 表 進 入 這 個 Page 之 前 , 使 用 者 是 否 需 要 先 經 過 Login 的 動 作 , 如 果 你 將 Application Module 標 示 為 需 要 先 Login 後 才 能 進 入 的 Page Module 時 , 使 用 者 一 定 要 先 Login 後 才 能 進 入 你 的 網 站 , 這 個 範 例 中 我 們 使 用 預 設 值 就 可 以 了 (Login Required = False) 。 按 下 OK 後 就 會 回 到 最 初 的 視 窗 中 , 我 們 再 看 到 Caching 這 個 選 項 部 份 , 這 個 選 項 控 制 Module 執 行 完 畢 後 是 要 存 留 在 記 憶 體 中 或 是 立 刻 釋 放 。 如 果 你 使 用 的 Server Type 是 CGI 的 話 , 因 為 CGI 程 式 的 特 性 是 在 執 行 後 立 刻 釋 放 記 憶 體 , 所 以 這 個 選 項 對 你 就 沒 有 意 義 了 。 但 如 果 你 使 用 的 是 ISAPI 亦 或 是 Apache Share Module 時 , 你 就 得 小 心 調 整 這 個 選 項 , 選 擇 Cache Instance 雖 然 可 以 加 快 下 次 載 入 此 Module 的 速 度 , 但 是 會 耗 費 一 些 記 憶 體 , 因 此 請 小 心 的 調 整 這 個 選 項 。 我 們 通 常 都 會 將 Application Module 存 放 於 Cache 中 , 因 為 她 是 最 常 用 的 Module , 這 也 是 預 設 的 選 項 。 最 後 按 下 OK 按 紐 後 , 我 們 就 完 成 這 個 WebSanp Application 的 第 一 步 建 立 工 作 了 :

 

 

DELPHI 6 的 IDE 環 境 中 提 供 了 編 輯 以 及 預 覽 HTML 的 能 力 , 當 你 切 換 到 Home Unit 時 , 你 應 該 可 以 在 Code Editor 下 方 看 到 5 個 Tab Page , 請 你 切 換 到 .html 頁 , 你 會 看 到 以 下 的 畫 面 :

 

 

除 了 可 以 在 IDE 中 顯 示 及 編 輯 HTML 外 , 我 們 還 可 以 看 到 HTML 檔 案 中 有 類 似 ASP 的 Script 程 式 , 這 就 是 WebSnap 的 主 要 功 能 之 一 , 她 允 許 我 們 使 用 JScript 或 是 VBScript 來 撰 寫 網 頁 程 式 , 而 且 可 以 在 裡 面 使 用 WebSnap 所 提 供 的 元 件 。 例 如 Page 與 Application 這 兩 個 元 件 就 是 對 應 到 TWebPageInfo 及 TApplicationAdapter , 這 代 表 著 你 對 Page 及 Application 這 兩 個 Script Object 的 操 作 都 會 被 導 向 程 式 中 的 TWebPageInfo 及 TApplicationAdapter 之 中 , 下 面 的 圖 是 WebSnap 產 生 HTML 文 件 的 流 程 :

 

( 圖 :4)

 

圖 4 中 我 們 可 以 看 到 PageProducer 在 取 得 Script Document 後 就 會 由 Scriptable-Object 產 生 出 Wrapper Object 後 , 接 著 將 整 個 Script Document 交 由 Active Script Engine 解 譯 。 但 是 重 點 是 那 些 元 件 是 Scriptable-Object , 那 些 又 不 是 呢 ? 就 技 術 上 來 說 , 只 要 該 元 件 實 作 了 IGetScriptObject 這 個 介 面 並 輸 出 一 個 正 確 的 Wrapper 物 件 , 那 這 個 元 件 就 算 是 Scriptable-Object 了 。 我 們 在 第 一 章 中 所 提 到 的 八 大 類 型 元 件 中 , 除 了 Adapter 類 中 的 Adapter Control 不 是 之 外 , 其 它 都 算 是 Scriptable Object 。 其 實 在 Script 中 我 們 操 作 的 真 正 對 象 是 由 Scriptable-Object 所 產 生 出 來 的 Wrapper 物 件 , 她 會 將 Script 程 式 對 她 的 操 作 轉 交 給 真 正 的 物 件 :

 

( 圖 :5)

 

圖 5 中 你 可 以 發 現 到 , TAdapterWrapper( 實 際 上 是 TWebApplicationWrapper , 她 繼 承 至 TAdapterWrapper)  包 裝 了 TApplicationAdapter 元 件 , 而 TAdapterFieldWrapper 則 包 裝 了 TAdapterField 元 件 。 以 Application.Today.Value 這 段 Script 程 式 來 解 釋 的 話 : Application 是 TApplicationAdapter 的 Wrapper 物 件 , 而 TApplicationAdapter 擁 有 Today 這 個 TAdapterField 。 所 以 當 我 們 下 達 Application.Today 這 個 命 令 時 , Application 這 個 Wrapper 物 件 呼 叫 了 TApplicationAdapter 來 取 得 Today 這 個 TAdapterField 並 且 建 立 一 個 TAdapterFieldWrapper 後 , 傳 入 這 個 TAdapterField 物 件 , 接 著 返 回 Script Engine 。 那 麼 Script Engine 就 可 以 經 由 TAdapterFieldWrapper.Value 取 得 TAdapterField.Value 值 了 , 這 就 是 Scriptable-Object 的 運 作 方 式 。 讓 我 們 回 到 範 例 中 , 到 這 裡 為 止 , 我 們 已 經 完 成 了 一 個 簡 單 的 網 頁 , 你 可 以 先 執 行 程 式 後 再 啟 動 WebAppDebuger , 接 著 開 啟 IE/Netscape 來 瀏 覽 我 們 的 網 頁 。 啟 動 WebAppDebuger 的 詳 細 步 驟 可 以 在 我 的 前 幾 篇 文 章 中 找 到 說 明 , 成 功 的 話 你 會 在 IE/Netscape 中 看 到 以 下 的 畫 面 :

 

 

在 DELPHI 的 IDE 中 我 們 也 可 以 設 定 編 輯 網 頁 的 外 部 程 式 , 例 如 FrontPage 或 是 Dreamwaver 等 專 業 的 網 頁 編 輯 程 式 , 這 很 方 便 。 要 擁 有 這 個 功 能 , 我 們 必 須 調 整 開 發 環 境 的 一 些 設 定 , 請 你 開 啟 Tools-Enviroment Options 並 選 擇 Internet 頁 , 你 可 以 看 到 裡 面 有 兩 種 檔 案 格 式 :

HTML 與 XML , 請 選 擇 HTML 後 按 下 Edit 按 紐 :

 

 

 如 果 你 的 電 腦 上 有 安 裝 FrontPage 或 是 Dreamwaver 的 話 , 你 應 該 可 以 在 Edit Action 列 表 中 看 到 她 們 。 請 選 擇 一 個 網 頁 編 輯 程 式 後 按 下 OK 後 回 到 IDE 中 , 如 果 你 之 前 有 將 Internet Toolbar 顯 示 於 IDE 上 的 話 , 你 就 可 以 馬 上 切 到 .html 頁 , 點 選 External Edit 來 啟 動 網 頁 編 輯 程 式 。 如 果 沒 有 的 話 , 請 你 在 Toolbar 上 按 右 鍵 選 擇 Inte

[1] [2] [3]  下一页


[聊天工具]Gmail推出新功能:Web Clip__天极Yesky  [聊天工具]Web MSN你玩了吗__天极Yesky
[系统软件]Web Browser Express 概述  [系统软件]对Internet Explorer Web 控件做一点修改
[常用软件]小技巧:三步实现Web迅雷录制PPLive节目  [常用软件]天网防火墙:打开WEB和FTP服务
[VB.NET程序]使用VB.Net做一个配置web.config功能的WinForm(原…  [VB.NET程序]vb.net控件、web service简述
[VB.NET程序]使用vbscript脚本调用web服务  [VB.NET程序]*** Web 存储系统窗体:窗体注册表 (new)***
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台