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