ASP組件和對象
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 語言編寫的 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 的例子生成了 JavaDate對象的實例。
<% Dim dateSet date = GetObject("java:java.util.Date")%><p> The date is <%= date.toString() %>
通過調用GetObject而不是Server.CreateObject生成的對象不能訪問 ASP 內建對象也不能參與事務處理。
內建對象
ASP 提供執行任務的內建圖像。例如,Request對象存儲從 HTML 表格參考。調用 Object
方法是可以在對象上所執行或使用對象執行的活動。調用方法的一般語法為:Object.Methodparameters
參數隨著方法的不同而不同。
例如,可以按照下列的指令,使用Response內建對象的Write方法將信息傳送到瀏覽器:
<% Response.Write "Hello World" %>
注意一些腳本語言不支持Object.Method語法。如果使用的語言不支持該語法,那么為了將該語言作為主腳本語言,就必須在註冊表中加入條目。
設定對象屬性
屬性是描繪對象的特徵值。屬性定義對象的特徵(如對象類型)或對象的狀態(如啟用或禁用)。常規語法為:Object.Property
可以讀取並設定屬性值。對某些對象,還可以添加新屬性。
例如,Ad Rotator 組件有Border屬性,該屬性指定廣告是否有框線及框線的粗細。下面的表達式指明沒有框線:
<% MyAds.Border = 0 %>
可以使用 ASP 輸出指令顯示某些屬性的當前值。例如,如果瀏覽器仍然與伺服器連線,下面的命令將返回 TRUE:
<%= Response.IsClientConnected %>