ASP系列講座(七)使用組件和對象
作者:Eve Cole
更新時間:2009-05-30 19:59:15
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 %>