ActiveX 組件是建立強大的 Web 應用程序的關鍵。組件提供了用在腳本中執行任務的對象。ASP 同樣提供了可在腳本中使用的內建對象。本主題將討論如何使用組件提供的對象以及由 Active Server Pages 直接提供的內建對象。
關於組件
ActiveX 組件是一個文件,該文件包含執行某項或一組任務的代碼。組件可以執行公用任務,這樣就不必自己去創建執行這些任務的代碼。例如,股票行情收報機組件可以在 Web 頁上顯示最新的股票報價。ASP 帶有可以直接使用的組件,如 Database Access 組件。從第三方開發者處獲得可以可選的組件。或者也可以編寫自己的組件。
可以利用組件作為腳本和基於 Web 應用程序的基本構造塊。只要知道如何訪問組件提供的對象。即使是位編寫腳本的新手,也可以在不了解組件運作方式的情況下編寫腳本。總之,組件使您不用學習編程就能夠編寫強大的腳本。
如果您是位 Web 應用程序的開發者,可以通過編寫組件封裝商務邏輯。例如,可以編寫組件來計算產品的銷售稅。然後可以在處理銷售訂單的腳本中調用這個組件。在訂單的處理過程中獨立計算稅率可以在某地銷售稅改變的時候只更新組件,而無須更改整個處理過程。可以使用任何支持組件對象模型 (COM) 的語言來編寫組件,如,C、C++、Java 或 Visual Basic。如果熟悉 COM 編程,ActiveX 組件就是 Automation 服務器。要在 Web 服務器上運行,ActiveX 組件不能有圖形用戶接口元素,如 Visual Basic 的 MsgBox 函數。
組件是可以重復使用的。在 Web 服務器上安裝了組件後,就可以從 ASP 腳本、ISAPI 應用程序、服務器上的其他組件或由另一種 COM 兼容語言編寫的程序中調用該組件。
生成組件對象的實例
組件是包含在動態鏈接庫 (.dll) 或可執行文件 (.exe) 中的可執行代碼。組件可以提供一個或多個對象以及對象的方法和屬性。要使用組件提供的對象,請創建對象的實例並將這個新的實例分配變量名。使用 ASP 的 Server.CreateObject 方法可以創建對象的實例。接著,使用腳本語言的變量分配指令為對象實例命名。創建對象實例時,必須提供實例的注冊名稱 (PROGID)。對於由 ASP 提供的基本組件,可以從參考頁中獲得對象的 PROGID。
例如,ASP 的 Ad Rotator 組件在圖形廣告中任意循環。Ad Rotator 組件提供了一個被稱為 Ad Rotator 對象,該對象的 PROGID 是 "MSWC.AdRotator"。要創建一個 Ad Rotator 對象的實例,請使用下列指令:
VBScript:
<% Set MyAds = Server.CreateObject("MSWC.AdRotator") %>
JScript:
<% var MyAds = Server.CreateObject("MSWC.AdRotator") %>
如果您已經非常熟悉 VBScript 或者 JScript ,將會注意到沒有使用創建新對象實例的腳本語言函數,如 VBScript 中的 CreateObject 或 JScript 中的 New。您必須使用 ASP 的 Server.CreateObject 方法,否者 ASP 無法跟蹤腳本語言中對象的使用。
使用 Html <OBJECT> 標簽同樣可以創建對象實例。您必須為 RUNAT 屬性提供服務器值,同時也要為將在腳本語言中使用的變量名提供 ID 屬性組。使用注冊名 (PROGID) 或注冊號碼 (CLSID) 可以識別該對象。下面的例子使用注冊名 (PROGID) 創建 Ad Rotator 對象的實例:
<OBJECT RUNAT=Server ID=MyAd PROGID="MSWC.AdRotator"></OBJECT>
下面的例子使用注冊號碼 (CLSID) 創建 Ad Rotator 對象的實例:
<OBJECT RUNAT=Server ID=MyAd
CLASSID="Clsid:1621F7C0-60AC-11CF-9427-444553540000"></OBJECT>
從 Java 類中創建一個對象
使用 Java 語言編寫的 ActiveX 組件可作為 Java 類而不是 DLL 提交。要使用 Server.CreateObject 創建 Java 類對象的實例,必須使用 Javareg 程序將該類注冊為 COM 組件。然後就能夠以 PROGID 或 CLSID 使用 Server.CreateObject 了。
如果對象實例不需要訪問 ASP 內建對象和參與事務,就可以使用由 Java 監視程序提供的更為簡單的機制直接調用 Java 類。必須用 Microsoft virtual Machine for Java 2.0(由該 Internet Information Server 和 Personal Web Server 的發布版提供)使用 Java 監視程序。
如果要使用監視程序實例化對象,就必須使用 VBScript 或者 JScript 的 GetObject 指令並以 java:classname 的形式提供 java 類的全名。下面這個關於 VBScript 的例子生成了 Java Date 對象的實例。
<%
Dim date
Set date = GetObject("java:Java.util.Date")
%>
<p> The date is <%= date.toString() %>
通過調用 GetObject 而不是 Server.CreateObject 生成的對象不能訪問 ASP 內建對象也不能參與事務處理。
使用 ASP 內建對象
ASP 提供執行任務的內建對象。例如,Request 對象存儲從 Html 表格參考。
調用 Object 方法
方法是可以在對象上所執行或使用對象執行的活動。調用方法的一般語法為:
Object.Method parameters
參數隨著方法的不同而不同。
例如,可以按照下列的指令,使用 Response 內建對象的 Write 方法將信息發送到浏覽器:
<% Response.Write "Hello World" %>
注意 一些腳本語言不支持 Object.Method語法。如果使用的語言不支持該語法,那麼為了將該語言作為主腳本語言,就必須在注冊表中加入條目。
設置對象屬性
屬性是描繪對象的特征值。屬性定義對象的特征(如對象類型)或對象的狀態(如啟用或禁用)。常規語法為:
Object.Property
可以讀取並設置屬性值。對某些對象,還可以添加新屬性。
例如,Ad Rotator 組件有 Border 屬性,該屬性指定廣告是否有邊框及邊框的粗細。下面的表達式指明沒有邊框:
<% MyAds.Border = 0 %>
可以使用 ASP 輸出指令顯示某些屬性的當前值。例如,如果浏覽器仍然與服務器連接,下面的命令將返回 TRUE:
<%= Response.IsClIEntConnected %>