從今天開始我們將正式學(xué)習 ASP 的精華部分 --ActiveX 組件。事實上,當你用 ASP 編寫服務(wù)器端應(yīng)用程序時,必須依靠 ActiveX 組件來強大 Web 應(yīng)用程序的功能,譬如:你需要連接數(shù)據(jù)庫,對數(shù)據(jù)庫進行在線操作或者對 WEB 服務(wù)器上的文件系統(tǒng)進行操作,亦或你需要一個 WEB 廣告交換程序,所有這一切你都必須通過調(diào)用 ASP 內(nèi)建的 ActiveX 組件或自己編寫所需的組件來完成。
那么,究竟什么是 ActiveX 組件呢?它又是如何運作的呢?其實 ActiveX 組件是一個存在于 WEB 服務(wù)器上的文件,該文件包含執(zhí)行某項或一組任務(wù)的代碼,組件可以執(zhí)行公用任務(wù),這樣就不必自己去創(chuàng)建執(zhí)行這些任務(wù)的代碼。例如,股票行情收報機組件可以在 Web 頁上顯示最新的股票報價。當你在 WEB 服務(wù)器上安裝完 ASP 環(huán)境后,就可以直接使用它自帶的幾個常用組件,如 Database Access 組件。當然你也可以從第三方開發(fā)者處獲得可選的組件 , 也可以編寫自己的組件。你可以利用組件作為腳本和基于 Web 應(yīng)用程序的基本構(gòu)造塊,只要知道如何訪問組件提供的對象,即使你是位編寫腳本的新手,也可以在不了解組件運作方式的情況下編寫 ASP 程序??偠灾?ActiveX 組件使您不用學(xué)習復(fù)雜的編程就能夠?qū)懗鰪姶蟮?WEB 服務(wù)器端腳本。如果您是位 Web 應(yīng)用程序的開發(fā)者,可以使用任何支持組件對象模型(COM)的語言來編寫組件,如, C、 C++、 Java 或 Visual Basic。如果你熟悉 COM 編程, ActiveX 組件就是 Automation 服務(wù)器。但是要在 Web 服務(wù)器上運行, ActiveX 組件不能有圖形用戶接口元素,如 Visual Basic 的 MsgBox 函數(shù)。組件是可以重復(fù)使用的。在 Web 服務(wù)器上安裝了組件后,就可以從 ASP 腳本、 ISAPI 應(yīng)用程序、服務(wù)器上的其他組件或由另一種 COM 兼容語言編寫的程序中調(diào)用該組件。
那么我們在 ASP 中應(yīng)該如何調(diào)用組件呢?如前所述,組件是包含在動態(tài)鏈接庫 (.dll) 或可執(zhí)行文件 (.exe) 中的可執(zhí)行代碼。組件可以提供一個或多個對象以及對象的方法和屬性。要使用組件提供的對象,我們首先要創(chuàng)建對象的實例并將這個新的實例分配變量名。使用 ASP 的 Server.CreateObject 方法可以創(chuàng)建對象的實例。接著,使用腳本語言的變量分配指令為對象實例命名。創(chuàng)建對象實例時,必須提供實例的注冊名稱“PROGID”。如下要創(chuàng)建一個 Ad Rotator 對象的實例 :
< % Set MyAds = Server.CreateObject("MSWC.AdRotator") %>
我們必須使用 ASP 的 Server.CreateObject 方法來創(chuàng)建對象實例,否者 ASP 無法跟蹤腳本語言中對象的使用。
使用 HTML< OBJECT> 標簽同樣可以創(chuàng)建對象實例,但必須為 RUNAT 屬性提供服務(wù)器值,同時也要為將在腳本語言中使用的變量名提供 ID 屬性組。使用注冊名 (PROGID) 或注冊號碼 (CLSID) 可以識別該對象。下面的例子使用注冊名 (PROGID) 創(chuàng)建 Ad Rotator 對象的實例:
< OBJECT RUNAT=Server ID=MyAd PROGID="MSWC.AdRotator">< /OBJECT>
下面列出了 ASP 可安裝的常用組件。
Ad Rotator 創(chuàng)建一個 AdRotator 對象,該對象可按指定計劃在同一頁上自動輪換顯示廣告。
Browser Capabilities 創(chuàng)建一個 BrowserType 對象,該對象決定訪問 Web 站點的每個瀏覽器的性能、類型及版本。
Database Access 提供用 ActiveX Data Objects (ADO) 對數(shù)據(jù)庫的訪問。
Content Linking 創(chuàng)建一個 NextLink 對象,該對象可生成 Web 頁內(nèi)容列表,并象書一樣將各頁順續(xù)連接。
File Access 組件 提供文件的輸入輸出訪問。
Collaboration Data Objects for NTS 組件 可以快速、簡便的在 Web 頁上添加收發(fā)郵件功能。該組件只適用于 Internet Information Server for Windows NT? Server 。
MyInfo 創(chuàng)建一個 MyInfo 對象,該對象追蹤個人信息,例如站點管理員的姓名、地址及顯示選擇。
Counters 創(chuàng)建一個 Counters 對象,該對象可以創(chuàng)建、保存、增加或檢索任意數(shù)量的獨立計數(shù)器。
Content Rotator 自動翻轉(zhuǎn) Web 主頁上的 HTML 內(nèi)容字符串。
Page Counter 記錄并顯示 Web 頁被打開的次數(shù)。
現(xiàn)在 WEB 廣告幾乎充斥了整個網(wǎng)絡(luò),那么究竟如何在你自己的網(wǎng)站上建立一個符合廣告領(lǐng)域標準功能的廣告系統(tǒng)呢?答案是利用 ASP AD Rotator 組件 ! 它允許在每次訪問 ASP 頁面時在頁面上顯示新的廣告,并且提供了很強的功能,例如 : 旋轉(zhuǎn)顯示在頁面上的廣告圖象的能力、跟蹤特定廣告顯示次數(shù)的能力以及跟蹤客戶端在廣告上單擊次數(shù)的能力。 AD Rotator 組件的工作是通過讀取 AD Rotator 計劃文件來完成的,該文件包括與要顯示的圖象文件的地點有關(guān)的信息以及每個圖象的不同屬性,下面就是一個標準的 AD Rotator 計劃文件 :
---ADROT.TXT---
REDIRECT /scripts/adredir.asp
WIDTH 440
HEIGHT 60
BORDER 1
>
ads/homepage/chinabyte.gif
http://www.chinabyte.com/
Check out the IT site
2
ads/homepage/gamichlg.gif
-
Sponsored by Flyteworks
3
ads/homepage/asp.gif
http:// www.aspallian.com/
Good ASP site on net
3
ads/homepage/spranklg.gif
http://www.clocktower.com/
The #1 Sports site on the net
2
該段代碼的前四行包含廣告的全局設(shè)置。 Redirect 行指出廣告將成為其熱連接的 URL, 注意這里不是為廣告本身指定的 URL,而是將調(diào)用的中間頁面的 URL,這樣我們就可以通過這個中間頁面跟蹤單擊廣告的次數(shù)。該 Redirect URL 將與包含兩個參數(shù)的查詢字符串一起調(diào)用 : 特定廣告主頁的 URL 和圖象文件的 URL。星號上面的其余三行簡單說明如何顯示廣告。前兩行以像素為單位指定網(wǎng)頁上廣告的寬度和高度,默認值是 440 和 60 個像素。后一行,同樣是以像素為單位指定廣告四周超鏈接的邊框?qū)挾?, 默認值是 1 個像素。如果將該參數(shù)設(shè)置為 0,則將沒有邊框。
星號下面的行以每四行為一個單位描述每個廣告的細節(jié)。在此例中共有 16 行,描述四個廣告。每個廣告的描述包含圖象文件的 URL、廣告的主頁 URL(如果廣告客戶沒有主頁,請在該行寫上一個連字符“-”,指出該廣告沒有鏈接)和圖象的替代文字以及指定該頁與其他頁交替顯示頻率的數(shù)值。
圖象是重定向頁面的熱連接,它在查詢字符串中設(shè)置了兩個值, url=/scripts/adredir.asp 以及 image=/ads/homepage/asp.gif。要確定廣告顯示的頻率,可以將計劃文件中所有廣告的權(quán)值相加,在該例中總數(shù)是 10,那么 aspallian 的廣告權(quán)值為 3,這意味著 AdRotator 組件每調(diào)用十次,它則顯示 3 次。
重定向文件是用戶創(chuàng)建的文件。它通常包含用來解析由 AdRotator 對象發(fā)送的查詢字符串的腳本并將用戶重定向到與用戶所單擊的廣告所相關(guān)的 URL。用戶也可以將腳本包含進重定向文件中,以便統(tǒng)計單擊某一特定廣告的用戶的數(shù)目并將這一信息保存到服務(wù)器上的某一文件中。增加計數(shù)器和重定向用戶是通過下面兩行 ASP 腳本來實現(xiàn)的 :
< %
Counter.Increment(request.querystring("url"))
response.redirect(request.querystring("url"))
%>
現(xiàn)在我們看一下 Ad Rotator 組件是如何在頁面中使用的,首先必須使用 Server.CreateObject 方法實例化 Ad Rotator 對象。 Ad Rotator 組件的 PROGID 屬性是 MSWC.AdRotator。完整的代碼如下 :
< % Set ad = Server.CreateObject("MSWC.AdRotator") %>
< %= ad.GetAdvertisement("/ads/adrot.txt") %>
Ad Rotator 組件支持的唯一方法是 GetAdvertisement,它只有一個參數(shù) :AdRotator 計劃文件的名稱。注意指向文件的路徑是從當前虛擬目錄的相對路徑,物理路徑是不允許的。 GetAdvertisement 方法從 Rotator 計劃文件中獲取下一個計劃廣告的詳細說明并將其格式化為 HTML 格式。下面的 HTML 由 GetAdvertisement 方法生成且被添加到網(wǎng)頁的輸出中,以便顯示 Rotator 計劃文件中的下一個廣告。
< A >< IMG
SRC="http://www.chinabyte.com/ads/homepage/asp.gif" ALT="Good ASP site on net" WIDTH=440 HEIGHT=60 BORDER=1>< /A>
使用 AdRotator 組件我們可以直接通過對象屬性而不是計劃文件中的設(shè)置來直接控制某些廣告特性,其可用屬性如下 :
Border 指定廣告邊框的大小。
Clickable 指定廣告是否為超鏈接。
TargetFrame 指定顯示廣告的框架的名稱。
< %
Set ad = Server.CreateObject("MSWC.AdRotator")
ad.Border = 0
ad.Clickable = true
ad.TargetFrame = AdFrame
ad.GetAdvertisement("/ads/adrot.txt")
%>
通過上面的學(xué)習,相信你已經(jīng)能夠熟練運用 ASP 的內(nèi)建 AdRotator 組件為自己的網(wǎng)站建立一個標準的廣告顯示程序了。你是否難以相信一切竟是如此的簡單?其實真正能令你震驚的還在后頭呢,敬請關(guān)注下一篇 ASP ActiveX 組件大揭密!