在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

ASP 3.0高級編程(二13)

ASP 3.0高級編程(二13)

更新時間:2022-05-10 文章作者:未知 信息來源:網絡 閱讀次數:

第6章          活動服務器組件
在前幾章中,我們已經研究了兩類不同的對象:一類是ASP對象模型的內置部分,另一類是腳本運行期庫提供的對象。本章將介紹第三類能用于ASP的對象,取名為活動服務器組件(或者就稱為服務器組件)。
這些組件在很多場合下就如同在瀏覽器或在像Visual Basic編程環境中用于客戶端腳本中的傳統ActiveX控件一樣,但是這些組件可在服務器上運行,而不是一個只能運行在客戶機上的對象。
現在的問題是:這些組件來自哪里?其中一部分是由常規的ASP/IIS安裝程序提供的,而另一部分可以從Web上免費或有償獲得。本章討論ASP的各種組件的主要用途,然后介紹可得到的其他組件的幾個范例。一旦感覺到使用這些活動服務器組件得心應手,你就會毫不費力將其他供應商產品嵌入到自己的ASP頁面中。本章后面有一個第三方組件的列表,本書后面還將介紹如何創建自己的組件。
還有一些用于ASP的組件,但本章不準備討論。動態Web網站技術的基本用途之一是發布直接從數據庫管理系統和其他類型的數據存儲獲得的信息,這一用途和從數據庫或其他數據存儲中收集數據和存入數據的需求,促使程序員開發服務器端編程。為了使用ASP完成這些任務,我們可以充分利用稱為ActiveX數據對象(ActiveX Data Objects,ADO)庫的組件集。由于它涉及的內容很多,很難在本章中闡述清楚,還要考慮的其他的組件,本書從第8章開始講述相關的內容。
本章要討論的內容有:
· 服務器組件與在ASP中使用的其他對象的區別。
· 簡要說明如何實例化對象,并得到服務器組件的引用。
· ASP 3.0和IIS提供的可安裝組件,例如AD Rotator、Content Linking、Page Counter和Tools等組件。
· 一些第三方提供的組件。

6.1 腳本對象與服務器組件的比較
       前一章已說明了各種腳本對象,這些對象對于ASP/IIS來說都是從腳本運行庫(scrrun.dll)中得到的,重要的是不要把這些對象與服務器組件(即本章的主題)混淆一起。
       服務器組件通常在其自己的DLL或可執行文件中實現,例如本章將要討論的“Content Linking”組件,就是由nextlink.dll實現的。一旦在服務器安裝和注冊這個DLL文件,那么其提供的對象就可以在ASP所支持的任何腳本語言中使用。組件與系統環境的關系如圖6-1所示:
圖6-1  組件與系統環境的關系

使用組件服務器組件
       前一章已經介紹了對象和組件在頁面中通用的實例化方法,使用服務器組件和使用腳本運行期庫對象的方法完全一致,唯一的區別是,不像腳本對象,服務器組件通常作為單獨的DLL文件實現,而且可能要求在使用前先運行一個安裝程序,或者手工注冊該組件(如果這些組件在ASP缺省安裝時未注冊)。
1.  CreateObject方法
一般說來,可以在一個ASP頁面中使用ASP內置的Server對象的CreateObject方法創建一個對象,例如:
Set objThis = Server.CreateObject("this.object")                ' in VBScript
或:
var objThis = Server.CreateObject('this.object');                // in JScript
這樣就在變量objThis中創建了該對象的引用,然后可以在腳本中使用該對象;換句話說,可以在代碼中根據需要控制其屬性及調用其方法。
2.  使用<OBJECT>元素
同樣可以使用常規的<OBJECT>元素創建一個對象該方法同樣適用于在Web瀏覽器頁面中創建對象。ASP支持HTML<OBJECT>元素的特殊實現,而且我們可以使用這一方法在頁面中放置一個對象。要在普通的.asp文件中定義一個組件或腳本對象的實例,使用下面語句:
<OBJECT RUNAT="SERVER" SCOPE="PAGE" ID="objThis"
              CLASSID="CLSID:OACE4881-8305-11CF-9427-444553540000">
</OBJECT>
我們使用SCOPE屬性來設定對象的范圍,選項是“SESSION”、“APPLICATION”和“PAGE”。如果在普通的.asp文件中使用<OBJECT>元素,那么必須同時使用“PAGE”屬性,并忽略SCOPE屬性,因為創建的對象只能在它被實例化的頁面中使用。如果在global.asa文件中使用<OBJECT>元素,則所創建的對象可在當前會話或整個應用程序中使用,因此SCOPE屬性可設置為“SESSION”和“APPLICATION”。
3.  檢測對象實例的存在
經常出現的錯誤是企圖創建一個未安裝(或未注冊)的對象的實例,或者在CreateObject方法或<OBJECT>元素中使用錯誤的對象ProgID。缺省狀態下,ASP會出現錯誤并停止頁面的執行。
給頁面添加一些程序代碼,在訪問對象之前進行檢測是必要的。在VBScript中,可以做到這一點,方法是:關閉缺省的錯誤處理,然后使用IsObject函數查看對象是否真的引用了一個對象:
' in VBScript:

On Error Resume Next                                     'turn off default error handling
Set objThis = Server.CreateObject("this.object")

If IsObject(objThis) Then
       'the CreateObject method succeeded
       On Error Goto 0                                        'turn the default error handling back on
       …
       'rest of the script goes here
       …
Else
       Response.Write "Sorry, this page cannot be accessed at present"
       Response.Flush
       Response.End
End If

在JScript語言中,可以使用JScript 5.0腳本引擎中新的錯誤處理特性,這在第1章中介紹過。
// in JScript:

try {
       var objThis = Server.CreateObject('this.object');
       …
       // rest of the script goes here
}

catch (exception) {
       Response.Write ('Sorry, this page cannot be accessed at present');
       Response.Flush();
       Response.End();
}


6.2 ASP/IIS可安裝組件
       ASP/IIS的標準安裝包括一系列服務器組件,這些組件在IIS文檔中被描述為可安裝組件(installable component),盡管缺省狀態下它們是安全安裝。但也有可能這個名稱僅僅是沿用ASP的前幾個版本中的名字。在以前版本中,這些組件需要人工安裝。現在,如果要給它們起個合適的名稱,可稱為“可實例化的組件”。
       需要注意的是,在第8章將介紹一個特定的可安裝組件,即ADO組件。后面的章節中使用的其他組件都是作為特定的服務或服務器應用程序的一部分而安裝的。例如協作數據對象(Collaborative Date Objects,簡稱CDO和CDONTS)組件,用于郵件服務器和電子郵件消息。本章的其余部分將討論,如何使用其他通用性較強的組件為Web網站或Intranet提供增強功能。
       在Windows 2000中的WinNT\System32\intesrv\目錄下可找到這些ASP可安裝組件,該目錄也放置一些組件要求的配置文件。下面按字母順序列出了一些組件。
       · Ad Rotator組件用于控制可點擊圖像的出現,如廣告或標題。使用存儲在配置文件中的信息,Ad Rotator能夠依據配置文件規定的比率顯示不同的圖像,同時也具備把可點擊的廣告重新定位到相應的URL以及記錄圖像點擊次數的特性。
       · Browser Capabilities組件使用UserAgent字符串,該字符串由瀏覽器發往服務器,用來識別相應的瀏覽器。它提供了反映特定瀏覽器功能的一系列屬性,例如是否支持腳本、cookie或Java小程序。
       · Content Linking組件用于提供一系列方便導航的頁面,這些頁面可被改變或更新而不必編輯各個頁面。該組件采用一個文本文件(含有頁面URL和顯示順序),使創建按指定順序鏈接起來的一些頁面很容易。
       · Content Rotator組件采用一種配置文件來指定插入到其他頁面中的HTML、文本或程序代碼,根據配置文件指定的情況,顯示內容的任何部分。
       · Counters組件能夠創建、遞增和永久地存儲各個在腳本代碼中使用的整數計數器的數值。
       · Logging Utility組件提供對Web服務器日志文件的訪問,并且允許在一個ASP頁面內讀取和更新這些數據。這是Windows 2000中隨IIS 5.0和ASP 3.0新增的特性。
       · MyInfo組件為可在整個網站內訪問的名稱/值對的存儲提供了一個存儲空間,這些數據在服務器上以XML格式的文本文件存儲(不同于應用程序作用域,這些數據在Web網站范圍之外仍然保留)。
       · Page Counter組件記錄訪問一個頁面的次數,可以用于跟蹤頁面的點擊次數。
       · Permission Checker組件有助于防止當一個用戶試圖訪問沒有正確的權限設置的資源時引起的腳本錯誤。
       · Tools組件提供了一些在頁面中可以采用的方法,這些方法用于檢驗一個文件是否存在、處理HTML窗體、生成一個隨機整數。另外還有一些用在Macintosh蘋果計算機上的方法,可以檢查是否存在某個服務器插件程序,檢查當前用戶是否為網站擁有者。
       另外一個由IIS/ASP提供的組件,即Status組件,只能用于Macintosh計算機的個人Web服務器上。本書沒有涉及該組件,若要詳細了解該組件,可通過HTTP://localhost/iis/htm/asp/complqt0.htm查閱ASP/IIS提供的IIS 5.0文檔。

6.2.1 使用示例頁面
       本書已經提供了一系列的示例頁面來說明所有這些組件的用法。
       可以從Wrox Web網站上下載這些實例頁面,并在自己的計算機上運行。在下載的文件的Chapter06子目錄中會找到本章所用的程序代碼。
       在運行示例頁面之前,確保MyInfo和Counter組件的“全局”實例化代碼已包含在缺省Web站點的global.asa文件中。在示例文件中提供了global.asa文件中所需要的代碼,可以將這些代碼加到現有的global.asa文件中,不需要更換整個文件。
<!-- declare instance of the ASP Counters component with application-level scope
-->
<OBJECT ID="objCounters" RUNAT="Server" SCOPE="Application"
PROGID="MSWC.Counters">
</OBJECT>

<!-- declare instance of the ASP MyInfo component with application-level scope
-->
<OBJECT ID="objMyInfo" RUNAT="Server" SCOPE="Application" PROGID="MSWC.MyInfo">
</OBJECT>
示例文件的主菜單頁面(Default.asp)使用Content Linking組件創建到每一個頁面示例的鏈接。因此,我們將首先研究這個組件,也涉及了Ad Rotator和Counters組件的有關問題。

6.2.2 Content Linking組件
       Content Linking組件對網站是非常有用的工具,它提供了內容頁面,或者包含對同一站點上其他頁面的鏈接列表的頁面。它自動把當前顯示頁面的URL與存儲在服務器里的文本文件的頁面列表匹配起來并且能允許用戶通過頁面列表按正反順序進行瀏覽。也就是說,即使訪問者已經在內容頁面中點擊了一個鏈接并且正在查看列表中的某一個頁面,該組件仍然會辨認出所訪問的頁面在列表中的位置。
       因為所有詳細資料均在一個文本文件中,維護網站以及頁面的鏈接僅僅需要編輯這個文本文件。例如可以通過在內容鏈接列表文件中重新排列頁面的順序,來改變它們的顯示順序。
1.  內容鏈接列表的文件
內容鏈接列表文件包括一個簡單的按顯示順序排列的URL列表,同時也提供了相應的描述,用于在內容頁面中顯示鏈接文本。如果需要,還可以增加對每個頁面的注釋,注釋可以幫助識別鏈接,但對訪問者來說注釋是不可見的。
列表文件對于每個頁面包含一個文本行。每一行由URL、描述和注釋所組成,各部分由Tab字符(不是空格,否則文件將不能工作)分隔,最后有回車結束。例如:
newpages.htm        New additions to our site              we update this weekly
offers.htm            Special Offers for this week         we only update this monthly
register.htm           Registration for new users
main.htm               The main forum and chat area      must be registered first
index.htm              Back to the contents page
請注意目標URL必須由一個相對的虛擬或物理的路徑來說明,諸如forum\enter.htm。URL不能使用“http:”、“//”或者“\\”作為開頭,如果要創建上述這樣含有絕對URL的菜單,可以使用ASP建立一個重新定向頁面,而且在內容鏈接列表文件中對其進行指定,例如,建立一個名為redirect.asp的頁面,包含如下代碼:
<%
'redirect the request to the site specified in the query string
Response.Clear
Response.Redirect Request.QueryString("url")
%>
可以在內容鏈接列表文件中按下述方式使用redirect.asp文件:
redirect.asp?url=http://www.cyscape.com/         CyScape BrowserHawk Web Pages
redirect.asp?url=http://www.softartisans.com/     SA fileUp Component Pages
redirect.asp?url=http://www.stonebroom.com/swindex.htm              Stonebroom RegEx Pages
2.  Content Linking組件的成員
Content Linking組件提供了八種方法,如表6-1所示。這些方法能夠檢索來自內容鏈接列表文件的條目,既能相對于當前頁面檢索條目,也可以使用索引號檢索絕對條目。第一個條目的索引號是1。
表6-1  Content Linking組件的方法及說明
方 法
說 明

GetListCount(links_file)
返回文件links_file中條目的數量

GetListIndex(links_file)
返回文件links_file中當前頁面的索引號

GetNextURL(links_file)
返回文件links_file中下個頁面的URL

GetNextDescription(links_file)
返回文件links_file中下個頁面的描述

GetPreviousURL(links_file)
返回文件links_file中前一個頁面的URL

GetPreviousDescription(links_file)
返回文件links_file中前一個頁面的描述

GetNthURL(links_file,n)
返回文件links_file中第n個頁面的URL

GetNthDescription(links_file,n)
返回文件links_file中第n個頁面的描述

       如果當前頁面不在內容鏈接列表文件中,則:
       · GetListIndex返回0。
       · GetNextURL和GetNextDescription返回列表文件中最后一個頁面的URL和描述。
       · GetPreviousURL和GetPreviousDescription返回列表文件中第一個頁面的URL和描述。
3.  使用Content Linking組件
一旦創建了自己的內容鏈接文件,就可以把該組件添加到頁面中。這里有一個典型的示例,它遍歷內容鏈接文件中的所有條目,并且創建一個頁面列表(以超鏈接表示頁面)。
<% ' in VBScript:
Set objNextLink = Server.CreateObject("MSWC.Nextlink")
%>

<UL>
<%
'get the number of entries in the menu file
intCount = objNextLink.GetListCount("contlink.txt")
'loop through the entries
For intLoop = 1 To intCount %>
       <LI>
       <A HREF="<% = objNextLink.GetNthURL("contlink.txt", intLoop) %>">
       <% = objNextLink.GetNthDescription("contlink.txt", intLoop) %>
       </A>
<%
Next
%>
</UL>
這段代碼首先創建了一個Content Linking對象。在普通的<UL>和</UL>標記之間,使用Content Linking對象的GetListCount方法查找在內容鏈接列表文件有多少條目。然后再遍歷這些條目,對于每一個條目在頁面中放入一個<LI>標記,后面跟著一個<A>標記。HREF屬性的值從列表文件中使用GetNthURL方法檢索得到,用作鏈接文本的描述使用GetNthDescription方法得到。
注意,內容列表文件和使用它的ASP頁面應處在同一文件夾中。否則,應提供一個相對物理路徑或一個完整的虛擬路徑,如下所示:
inCount = objNextLink.GetListCount("links\contlink.txt")           'physical path
inCount = objNextLink.GetListCount("/demo/contlink.txt")        'virtual path


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 男人添女人下面高潮视频| 久久精品亚洲天堂| 亚洲欧美一二三| 亚洲精品视频导航| 国产一线二线三线在线观看| 国产二级片在线观看| 免费人成自慰网站| 成年人午夜免费视频| 婷婷无套内射影院| 日本不卡在线观看视频| 97成人在线观看视频| 人妻内射一区二区在线视频| 国产自偷自偷免费一区| 99热这里只有精品在线播放| 欧美婷婷精品激情| 国产传媒免费观看| 91精品国产吴梦梦| 午夜免费福利小电影| 国产精品无码专区av在线播放 | 国产二区视频在线播放| 国产精品亚洲a| 日韩av卡一卡二| 中文字幕综合在线观看| 日韩欧美精品免费| 亚洲免费av一区二区三区| 午夜剧场在线免费观看| 成年人视频大全| 黑人糟蹋人妻hd中文字幕| 亚洲美女性囗交| 国产一二三在线视频| 97公开免费视频| 性生活免费观看视频| 精品一区二区中文字幕| 日韩视频在线免费播放| 欧美成人高潮一二区在线看| 亚洲成人福利在线| 日本手机在线视频| 99精品视频国产| 高清在线观看免费| 成人性生交视频免费观看| 欧美三级一级片| 黑人巨茎大战欧美白妇| 国产精品拍拍拍| 成人免费播放器| 老司机av福利| 一区中文字幕在线观看| 欧美黄网站在线观看| 免费看av软件| www.com黄色片| 久久免费视频3| 欧美精品一区二区性色a+v| 久久久久久久激情| 久久99中文字幕| 欧美美女黄色网| 国产精欧美一区二区三区白种人| www在线观看免费| 日韩亚洲欧美一区二区| 超碰在线超碰在线| av在线免费看片| 天天插天天操天天射| av天堂永久资源网| 国产 福利 在线| 国产人妻777人伦精品hd| 青青视频免费在线| 偷拍盗摄高潮叫床对白清晰| 国产乱女淫av麻豆国产| 国产嫩草在线观看| 9久久婷婷国产综合精品性色 | 欧美xxxxx在线视频| 亚洲熟妇国产熟妇肥婆| 一女被多男玩喷潮视频| 欧美深夜福利视频| 九色在线视频观看| 免费在线激情视频| 蜜桃免费在线视频| 性chinese极品按摩| 亚洲va在线va天堂va偷拍| 黄大色黄女片18第一次| av噜噜在线观看| 成年人黄色在线观看| 国产成人精品免费看在线播放| 网站在线你懂的| 97中文字幕在线| 欧美xxxxx在线视频| 中文字幕亚洲乱码| 6080国产精品| 国产玉足脚交久久欧美| 国产一区二区四区| 国产成人综合一区| 想看黄色一级片| 少妇高潮毛片色欲ava片| 不卡影院一区二区| a级黄色片网站| 国产aaa一级片| 最新国产黄色网址| 精品人妻少妇一区二区| 日韩大片一区二区| 免费视频爱爱太爽了| 国产精品第12页| 久久久久久久久久久久久国产| 国产免费观看高清视频| 中文字幕在线观看日 | 91国在线高清视频| 看欧美ab黄色大片视频免费| 国产在线视频三区| 中文字幕无码不卡免费视频| 最新免费av网址| 国内性生活视频| 国产成人免费高清视频| 日韩免费高清在线| 丁香色欲久久久久久综合网| 黄色片一级视频| 妺妺窝人体色www看人体| 777视频在线| 97国产精东麻豆人妻电影 | 天天干天天操天天做| 国产精品后入内射日本在线观看| 自拍一级黄色片| 亚洲污视频在线观看| 亚洲欧洲日产国码无码久久99| 国产高清免费在线| 亚洲精品永久视频| 五月婷婷之综合激情| 日本十八禁视频无遮挡| 999久久欧美人妻一区二区| 毛片毛片毛片毛| 少妇网站在线观看| 五月天国产视频| 久久亚洲国产成人精品无码区| 男人的天堂狠狠干| 日韩精品一区二区三区电影| 亚洲一区二区福利视频| 久久久精品三级| 91网址在线播放| 18岁视频在线观看| 亚洲欧洲日产国码无码久久99| 成年人看的毛片| 国产精品久久久久9999爆乳| 日韩一级性生活片| r级无码视频在线观看| 国产午夜福利100集发布| 欧美一区二区三区爽大粗免费| 99精品视频国产| 看全色黄大色大片| 人妻激情另类乱人伦人妻| 日本一区午夜艳熟免费| 九九爱精品视频| 成人黄色片视频| 免费涩涩18网站入口| 色婷婷综合在线观看| 樱空桃在线播放| 激情深爱综合网| 亚洲福利精品视频| 亚洲一级片免费观看| 日本福利视频网站| 国产主播在线看| 久久久久久久久久一区二区| 国产黑丝在线视频| 欧美乱大交xxxxx潮喷l头像| 无码人妻丰满熟妇区毛片| 一本色道久久亚洲综合精品蜜桃 | 鲁一鲁一鲁一鲁一av| 污污的视频免费观看| 成年人三级视频| 日韩视频在线免费看| 亚洲免费一级视频| av免费看网址| 中文字幕 欧美日韩| 久久亚洲中文字幕无码| 无限资源日本好片| 天天夜碰日日摸日日澡性色av| 狠狠热免费视频| 一卡二卡三卡视频| 91高清国产视频| 波多野结衣家庭教师视频| 6080国产精品| 国产精品igao| 可以看毛片的网址| 天天看片天天操| 丝袜制服一区二区三区| 久久久亚洲国产精品| 青青草原播放器| 最近中文字幕一区二区| 动漫av网站免费观看| 草草草视频在线观看| 中文国产在线观看| 天堂中文视频在线| 国产综合免费视频| 国产精品999视频| 男人天堂成人网| 最新黄色av网站| www.久久av.com| 一区二区xxx| 狠狠躁狠狠躁视频专区| 337p粉嫩大胆噜噜噜鲁| 黄色一级片在线看| 黄网站色视频免费观看| 中文字幕の友人北条麻妃| 天天综合成人网| 麻豆中文字幕在线观看|