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

Web Application 開 發 利 器 - WebSnap(十三)

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

Web Application 開 發 利 器 - WebSnap!

第 十 三 章 、 Adapter 與 Wrapper

   我 們 在 前 面 幾 節 都 稍 稍 的 提 到 Adapter 及 Wrapper 之 間 的 關 係 , 我 們 都 知 道 , WebSnap 利 用 Adapters 加 上 Wrapper 來 串 接 Code 與 Script , 但 是 我 們 一 直 沒 有 真 正 詳 細 的 檢 視 她 們 是 如 何 合 作 , 特 定 的 Adapter 又 提 供 了 那 一 個 Wrapper , 這 裡 我 們 就 詳 細 的 討 論 她 們 吧 ! 

13-1 Wrapper Object 與 Adapter Component

 ( 圖 :9)

 

上 圖 中 我 們 可 以 了 解 , 當 我 們 在 Script 中 下 達 Application.Today.Value 這 個 Script 命 令 時 , 其 實 我 們 正 在 操 作 一 個 Adapter Wrapper Object , 藉 由 這 個 Adapter Wrapper Object , 我 們 可 以 操 作 到 位 於 DELPHI 程 式 中 的 Adapter Component , 當 Application 這 個 Adapter Wrapper Object 接 到 .Today 這 個 屬 性 要 求 時 , 她 會 將 動 作 轉 向 至 位 於 DELPHI 程 式 中 的 Adapter Component , 找 到 Today 這 個 Adapter Field Component , 然 後 建 立 一 個 Adapter Field Wrapper Object 傳 回 給 Active Script , 我 們 也 就 可 以 在 Active Script 使 用 這 個 Adapter Field Wrapper Object 來 操 作 位 於 DELPHI 程 式 中 的 Adapter Field Component 取 得 Value 值 了 , 其 實 所 謂 的 Wrapper Object 就 是 我 們 熟 悉 的 COM 物 件 , 所 以 我 們 才 能 在 Active Script 中 操 作 她 們 , 因 此 當 你 完 成 了 一 個 WebSnap 程 式 後 , 你 要 將 這 些 COM 物 件 安 裝 在 Web-Server 的 電 腦 上 , 這 樣 才 能 正 常 執 行 WebSnap 程 式 , DELPHI 6 附 了 一 個 簡 易 的 Windows Installer: InstallShield Express 3.5 , 你 可 以 在 Delphi6\MergeModules 中 找 到 相 關 的 安 裝 檔 案 。

  

13-2 Modules(Global)

   這 是 全 域 型 的 Wrapper , 基 本 上 她 是 橋 接 WebContext 中 的 WebModules , 讓 我 們 可 以 列 出 目 前 程 式 所 有 已 建 立 的 Module , 或 是 利 用 她 來 取 得 特 定 的 Module , 當 然 ! 這 個 Module 必 需 是 已 建 立 的 , 以 下 是 列 出 所 有 已 建 立 的 Modules Script 程 式 :  

<%

  mdlist=new Enumerator(Modules)

  s = ''''''''

  for (; !mdlist.atEnd(); mdlist.moveNext())

   {

     s+=''''<h3>''''+mdlist.item().Name_+''''</h3>''''

   }

  Response.Write(s)

%>

 

Response 是 另 一 個 全 域 型 Wrapper , 我 們 會 在 下 面 談 到 , 她 的 功 能 就 與 ASP 內 的 Response 一 樣 , 輸 出 字 串 到 目 的 HTML 文 件 中 。 我 們 也 可 以 利 用 Modules 來 取 得 特 定 的 Module: 

<% var M  = Modules.Home %>

 並 經 由 這 個 Module Wrapper 取 得 她 裡 面 所 包 含 的 Wrapper 物 件 :

<%= M.Adapter1.TestField.Value%>

  

13-3 Application(Global)

   她 是 ApplicationAdapter 的 Wrapper 物 件 , 你 可 以 經 由 她 取 得 Application.Title 這 個 值 : 

<%= Application.Title %>

 或 是 你 在 on-line help 中 所 看 到 的 完 整 路 徑 範 例 : 

<%

     function PathInfoToRelativePath(S)

     {

       var R = '''''''';

       var L = S.length

       I = 0

       while (I < L)

       {

         if (S.charAt(I) == ''''/'''')

           R = R + ''''../''''

         I++

       }

       return R

     }

     function QualifyImage(S)

     {

       if (Application.Designing)

          return Application.QualifyFileName("..\\images\\" + S);   // relative directory

       else

        return PathInfoToRelativePath(Request.PathInfo) + ''''../images/'''' + S;  // virtual directory

}

%>

   這 個 程 式 是 用 來 取 得 程 式 的 絕 對 路 徑 或 是 虛 擬 站 台 的 URL , 由 於 我 們 在 Visual Page Designer 的 Preview 功 能 中 需 要 的 是 絕 對 路 徑 , 但 在 實 際 網 站 中 需 要 的 是 URL , 因 此 她 提 供 了 Designing 特 性 值 讓 我 們 判 別 目 前 是 處 於 Visual Page Designer 還 是 實 際 站 台 中 , 在 這 個 程 式 中 QualifyFileName 就 是 取 得 絕 對 路 徑 的 函 式 , 其 中 的 ..\\ 會 往 上 移 一 層 , 假 設 絕 對 路 徑 是 c:\temp\examples1\ , 那 結 果 就 是 c:\temp\images\ + S 。

 由 於 ApplicationAdapter 也 是 Adapter 其 中 的 一 員 , 因 此 我 們 也 可 以 像 操 作 Adapter 一 樣 操 作 她 :  

<%=Application.Today.Value%>

 也 可 以 利 用 Adapter 的 Fields 來 取 出 所 有 的 AdapterField 

<%

  adlist=new Enumerator(Application.Fields)

  s = ''''''''

  for (; !adlist.atEnd(); adlist.moveNext())

   { 

     s+=''''<h3>''''+adlist.item().Name+''''</h3>''''

   }

  Response.Write(s)

%>

 或 是 Actions 物 件 

<%

  adlist=new Enumerator(Application.Actions)

  s = ''''''''

  for (; !adlist.atEnd(); adlist.moveNext())

   {

     s+=''''<h3>''''+adlist.item().Name+''''</h3>''''

   } 

  Response.Write(s)

%> 

 其 它 的 部 份 你 可 以 參 考 下 面 的 Adapter Wrapper 。 

 

13-4 Request(Global) 

與 ASP 中 的 Request 物 件 意 義 一 樣 , 用 來 取 得 HTTP Request 的 一 些 資 訊 , 你 可 以 在 Script 中 加 入 以 下 的 Script 碼 就 明 白 了 : 

<h3><%=Request.PathInfo%></h3>

<h3><%=Request.ScriptName%></h3>

<h3><%=Request.Host%></h3>

 

13-5 Response(Global)

 等 同 ASP 中 的 Response 物 件 , 我 想 你 應 該 很 清 楚 用 途 才 是 !

 

13-6 EndUser(Global)

 她 是 EndUserAdapter 的 Wrapper , 技 術 上 來 說 , 不 管 你 有 沒 有 放 至 EndUserAdapter 到 AppModule 上 , 她 都 會 被 建 立 出 來 , 只 是 實 體 物 件 有 沒 有 被 建 立 而 已 , 因 此 你 可 以 安 全 的 在 Script 使 用 她 , 而 不 在 意 EndUserAdapter 存 不 存 在 :

 

<% if (EndUser.Logout != null) { %>

<%   if (EndUser.DisplayName != '''''''') { %>

<h1> 歡 迎 <%=EndUser.DisplayName %> 你 今 年 是 <%=EndUser.AdaptAge.Value%> 歲 </h1><%   } %>

<%   if (EndUser.Logout.Enabled) { %>

  <a href="<%=EndUser.Logout.AsHREF%>">Logout</a>

<%   } %>

<%   if (EndUser.LoginForm.Enabled) { %>

  <a href=<%=EndUser.LoginForm.AsHREF%>>Login</a>

<%   } %>

<% } %> 

 

她 與 ApplicationAdapter 一 樣 , 都 屬 於 Adapter 類 , 因 此 你 也 可 以 像 使 用 一 般 的 Adapter 一 樣 使 用 她 , 上 面 的 程 式 有 展 示 這 一 點 , Logout 及 LoginForm 都 是 AdapterAction , 下 面 會 談 到 這 個 Wrapper 。

13-7 Session(Global)

她 與 ASP 中 的 Session 物 件 大 致 相 同 , 她 Wrapper 了 TWebSession 物 件 , 與 EndUser 相 同 , 不 管 你 有 沒 有 放 至 SessionsService 她 都 會 被 建 立 出 來 , 只 是 有 沒 有 實 體 物 件 而 已 , 你 可 以 利 用 Session.SessionID.Value 來 取 得 SessionID 的 值 , 也 可 以 利 用 Session.Value (名 稱) 來  取 得 Session 中 的 值 。

 

<%=Session.SessionID.Value%>

<%=Session.Values(''''Age'''')%>

 

13-8 Page

 她 Wrapper 了 WebPageInfo , 也 就 是 你 在 Page Module 最 後 一 行 中 的 設 定 值 : 

<h3><%=Page.Title%></h3>

<h3><%=Page.Name%></h3>

<h3><%=Page.HREF%></h3>

<h3><%=Page.Description%></h3>

<h3><%=Page.LoginRequired%></h3>

<h3><%=Page.CanView%></h3>

<h3><%=Page.DefaultAction.Name%></h3>

紅 色 的 部 份 在 使 用 時 要 特 別 小 心 , 因 為 Page 中 不 一 定 要 有 DefautlAction , 因 此 她 有 可 能  是 空 值 , 而 且 取 得 DefaultAction 會 引 發 Page Module 的 自 動 建 立 動 作 , CanView 及 LoginRequired 是 用 來 管 理 使 用 者 及 權 限 控 制 用 。

 

13-9 Producer

技 術 上 她 與 Response 大 致 相 同 , 只 是 它 可 以 寫 入 HTML Tag: 

[1] [2]  下一页


[聊天工具]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……
    咸宁网络警察报警平台