當你用ASP 編寫服務器端應用程序時,必須依靠ActiveX 組件來強大Web 應用程序的功能,譬如:你需要連接數據庫,對數據庫進行在線操作等等,本文從本篇開始將陸續給大家介紹ASP ActiveX組件的使用方法。
從今天開始我們將正式學習ASP 的精華部分--ActiveX 組件。事實上,當你用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://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
該段代碼的前四行包含廣告的全局設置。 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=http://www.chinabyte.com/scripts/adredir.asp?http://www.aspallian.com/>< IMG
SRC=http://www.bccn.net/Article/UploadFDL0024/200409/20040912194111823.gif 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 組件為自己的網站建立一個標準的廣告顯示程序了。你是否難以相信一切竟是如此的簡單?其實真正能令你震驚的還在後頭呢,敬請關注下一篇ASP ActiveX 組件大揭密!