?? 入門文章編寫自己的組件.txt
字號:
作者:cooljack
日期:2000-5-26 11:27:23
編寫自己的組件
您已經熟悉了 ASP 提供的組件,現在該創建自己的組件來滿足自己的特殊需要了。
假設您需要創建一個 ASP 程序,以便通過 Web 節點提供特定的財務功能。ASP 沒有直接提供這樣的功能,不過您可以通過創建自己的 Java 或 ActiveX 組件來解決問題。您將在本模塊中學會這些。
如果要學習如何創建并使用組件,首先使用下面的表格進行選擇:
要點
若要保存并查看您在本模塊中的工作結果,需要:
對 Web 服務器上的 虛擬目錄具有“寫 (Write)”和“改編 Web 服務器 (Script Web server)”權限。詳細信息,請參閱 設置 Web 服務器權限幫助iishelp。
您的 Windows NT 帳號,必須在 DriveLetter:\Winnt\Java 目錄及其子目錄上具有 Windows NT File System (NTFS) 的讀、寫和運行程序權限(此處的 DriveLetter 代表 Web 服務器上適當的驅動器號)。
DriveLetter:\Winnt\System32\Inetsrv\ 目錄及其子目錄上具有 Windows NT File System (NTFS) 的讀、寫和運行程序權限(此處的 DriveLetter 代表 Web 服務器的適當的驅動器號,如果您沒有安裝到默認目錄下,請用您的安裝目錄代替 \Winnt\System32)。
要完成本模塊,必須在 Web 服務器上安裝:
Microsoft? Visual J++? 1.1. Microsoft? Visual Basic 5.0 專業版的 32 位版本或 Visual Basic 5.0 企業版開發系統。
如果已經禁止了 Web 瀏覽器運行 Java 程序功能,請在開始教程以前啟用該功能。
第一課:創建 Java ActiveX 財務組件
組件將包含一組相關的方法(函數),用來提供腳本語言所不具有的函數。由于 不提供財務函數,所以您必須在外部創建一個財務函數。在本教程中您將學習如何創建一個函數,這個函數在固定利率及等額定期支付的方式下,計算一筆投資的未來價值(也就是年金)。
啟動 Visual J++
單擊“開始”按鈕,指向“程序”,然后指向 Microsoft Visual J++ 1.1
單擊子目錄中的“Microsoft Developer Studio”,啟動編程環境。
開始并命名一個工程
單擊“File”。
選擇“New”。
單擊“Project”選項卡。
選擇“Java Project”。
在“Project Name”框中,鍵入“Finance”,然后單擊 “OK”。
將 Finance Class 添加到工程中
選擇“Insert”菜單中的“New Class”。
在“Name”框中,鍵入“Finance”,然后單擊 “OK”。在文本編輯器中將出現下列文字:
class Finance {
}
注意 類的名稱必須與 Java 服務器組件的工程名相同。
將 CalcFV Function 添加到 Finance Class 中
選擇“ClassView”選項卡(默認)。
在樹型控件中展開“Finance Classes”工程。
右鍵單擊“Finance”類,然后選擇“Add Method”。
在“Return Type”框中,鍵入“public double”。
在“Method declaration”框中,復制并粘貼下列文字:
CalcFV(double dblRate, double dblNPer,
double dblPMT, double dblPv, boolean bType)
在這一聲明中,您定義了一個財務函數,它屬于 Finance 類,
用于計算一筆投資的未來價值。
單擊“OK”。下列文字將出現在 Visual J++ 的文本編輯器中:
class Finance {
public double CalcFV(double dblRate,
double dblNPer,
double dblPMT,
double dblPv,
boolean bType) {
}
}
在文本編輯器中,將下列 Java 代碼復制并粘貼到上面最內層的括號中:
double dblRet, dblTemp, dblTemp2, dblTemp3;
if (dblRate == 0.0) {
dblRet = -dblPv - dblPMT * dblNPer;
} else {
dblTemp = (bType ? 1.0 + dblRate : 1.0);
dblTemp3 = 1.0 + dblRate;
dblTemp2 = Math.pow(dblTemp3, dblNPer);
dblRet = -dblPv * dblTemp2
- dblPMT * dblTemp * (dblTemp2 - 1.0) / dblRate;
}
return dblRet;
不要被這些代碼所嚇倒,它們不過是定義了計算投資未來價值的數學公式而已,當然使用的是 Java 語法。如果您感興趣,可以在任何一本講解財務計算或會計知識的書本上找到這個常用公式。
注意 Java 是大小寫敏感的,所以如果您決定將上述代碼行鍵入文本編輯器,請確保鍵入的文字與顯示的內容完全一致。
構造 Finance 組件
選擇“Build”菜單中的“Build Finance”。
確保在 Build 窗口中(位于 ClassView 和文本編輯窗口之下),構造過程沒有產生任何錯誤或警告。
將 Finance 組件復制到 Trustlib 目錄中
單擊 Windows 的“開始”按鈕,指向“程序”,然后單擊“Windows 資源管理器”。
將 Finance.class 組件從 Program Files\DevStudio\MyProjects\Finance\ 目錄復制到 Web 服務器的 Winnt\Java\Trustlib 目錄中。
注冊 Finance Java 類
您必須在計算機中注冊 Finance Java 類,才能在 JScript 以及任何兼容 OLE 的語言中調用它。
打開“命令提示符”(“MS-DOS 方式”)窗口。
在命令提示符后鍵入 cd DriveLetter:\\Program Files\DevStudio\VJ\Bin\,其中,DriveLetter 是您的計算機上適當的驅動器號。(如果您沒有接受默認的安裝目錄,請用您的安裝目錄替換 \Program Files\DevStudio\VJ\Bin\。)
按下Enter 鍵。
鍵入 javareg /register /class:Finance /progid:MS.Finance.Java。
按下 Enter 鍵
當出現一個對話框顯示“Successfully Registered Java class "Finance" as CLSID”時,單擊“OK”按鈕。
關閉“命令提示符”窗口。
組件將包含一組相關的方法(函數),用來提供腳本語言所不具有的功能。由于 不提供財務函數,所以您必須通過自己的 Finance 服務器組件來提供對 Visual Basic 財務函數的使用能力。該服務器組件能提供所有的 Visual Basic 財務函數,包括 DDB 函數(雙倍余額遞減法)、FV 函數(未來值)、IPmt 函數(支付利息)、IRR 函數(內部回報率)以及其他函數。不過,在本教程中,您將只使用 FV 函數,基于固定利率及等額定期支付方式,返回一筆年金。
啟動 Visual Basic
單擊“開始”按鈕,指向“程序”,然后指向“Microsoft Visual Basic 5.0”
單擊子菜單中的“Visual Basic 5.0”,運行編程環境。
開始并命名一個工程
在“New Project”對話框中,雙擊“ActiveX DLL”。
在“Project”菜單上,單擊“Project1 Properties”。
在“General”屬性頁的“Project Name” 框中,鍵入“MS”。
選擇“Unattended Execution”。
注意 選擇該選項表明這個工程運行時不需要用戶交互,并且將不具有用戶交互的基礎。
單擊“OK”。
現在工程被命名為“MS”。以后,您將從 ASP 腳本中以 MS.Finance 的形式引用 Finance 服務器組件。
將 Finance Class 添加到工程中
在 Visual Basic 中,若要創建具有一組可以調用的函數組件,必須定義一個 類。一個類包含一組方法和屬性。在您的工程中,類就是您說明財務方法的地方。
按下 F4 鍵打開類模塊的“Properties”窗口,雙擊“Name”屬性并鍵入“Function”,然后按 Enter。
雙擊“Instancing”。
單擊箭頭,然后選擇“5 - MultiUse”。
進一步學習 Visual Basic 財務函數
Visual Basic 的幫助系統描述了可以使用的財務函數。
單擊“Help”。
選擇“Microsoft Visual Basic Help Topics”。
選擇“Index”選項卡,然后鍵入“financial functions”作為查找的文字。
雙擊“financial functions”索引條。
單擊“FV Function”,學習該函數。
學習完財務函數后,關閉“Visual Basic Help”對話框。
將 CalcFV 函數添加到 Finance 類
Finance 服務器組件需要一些代碼。這些代碼讓使用您組件的語言可以調用 Visual Basic 內建的未來值函數。
將下列行復制并粘貼到 Finance 類的代碼窗口中:
Public Function CalcFV(rate, nper, pmt, Optional pv, Optional whendue)
CalcFV = FV(rate, nper, pmt, pv, whendue)
End Function
添加組件的入口點
所有服務器組件都需要一個入口(起始)點。這是當對象第一次可用于一種語言時,將被調用的代碼。在 VBScript 中,當您使用 Server.CreateObject 時,將創建對象的一個實例。當執行 Server.CreateObject 語句時,(由 Visual Basic 創建的)服務器組件上的 Sub Main 過程將被調用。
當您的財務組件被調用時,它不需要任何特殊代碼來初始化自身。因此,需要提供一個空的(沒有 Visual Basic 語句的)Sub Main 過程。
選擇“Project”菜單中的“Add Module”。
在“Module 1”對話框中,雙擊模塊圖標。
在 Module 1 代碼窗口中,鍵入 Sub Main。
按下 Enter 鍵。
將自動進入如下代碼:
Sub Main()
End Sub
保存 Finance 工程
當保存所作的工作時,將詢問您是否保存 Visual Basic 工程的全部 3 部分。其中包括工程文件、類模塊和代碼模塊。
打開“File”菜單。
選擇“Save Project”。
在“File name”文本框中,鍵入“Finance”。選擇 Web 服務器上的如下路徑:DriveLetter:\Winnt\System32\Inetsrv\,其中 DriveLetter 是適當的驅動器號。(如果您沒有接受默認的安裝目錄,請用您的安裝目錄替換 \Winnt\System32。)
單擊“Save”按鈕。
如果在此以前,另一個用戶已經學完了教程的這一部分,將出現一條消息,提示文件已經存在。請用您的文件覆蓋舊文件。
雙擊“File name”文本框中的值 “Project1”,選中它。
為工程文件鍵入名稱“Finance” (.vbp)。
單擊“Save”按鈕保存工程。
如果在此以前,另一個用戶已經學完了教程的這一部分,將出現一條消信息,提示文件已經存在。請用您的文件覆蓋舊文件。
成為“進程內 (In-Process)”組件
Visual Basic 允許您創建進程內 ActiveX 組件(通常稱為 OLE 自動服務器)和進程外 ActiveX 組件。一個進程內 ActiveX 組件是一個動態鏈接庫(帶 .dll 后綴),由調用它的進程進行加載。一個進程外 ActiveX 組件是一個可執行文件(帶 .exe 后綴),當它被應用程序調用后,以獨立進程的狀態運行。由于進程內組件與調用它的程序在同一個進程空間,所以性能比進程外組件要佳。
使 Finance 服務器組件成為進程內 ActiveX 組件
打開“File”菜單。
選定“Make Finance.dll”。
單擊“Options”按鈕。
選定“Auto Increment”復選框。
單擊“OK”。
鍵入 DriveLetter:\\Winnt\System32\Inetsrv\Finance,其中 DriveLetter 是適當的驅動器號。(如果您沒有接受默認的安裝目錄,請用您的安裝目錄替換 \Winnt\System32。)
如果在此以前,另一個用戶已經學完了教程的這一部分,將出現一條消信息,提示文件已經存在。請用您的文件覆蓋舊文件。
退出 Visual Basic。
注冊 Finance 服務器組件
所有服務器組件都必須注冊。Windows NT 和 Windows 95 用系統注冊表來追蹤哪個服務器組件是可用的。在您的計算機上將 Finance 服務器組件注冊后,就可以在 VBScript 和所有兼容 OLE 的語言中調用它了。
打開一個命令提示符窗口。
在命令提示符后鍵入 cd Drive Letter:\\Winnt\System32\Inetsrv,其中 DriveLetter 是適當的驅動器號。(如果您沒有接受默認的安裝目錄,請用您的安裝目錄替換 \Winnt\System32。)
按下 Enter 鍵。
鍵入 regsvr32 Finance.dll。
按下 Enter 鍵。
當出現一個對話框顯示“DllRegisterServer in finance.dll succeeded”時,請單擊“OK”按鈕。
關閉命令提示符窗口。
第二課:從腳本調用 Finance 組件
要測試組件,可以從 ASP、Visual Basic、Microsoft? Office 產品的 Visual Basic for Applications 或任何 OLE 自動控件來調用組件。
要使用 從 ASP 調用 Finance 組件,可以使用一個 HTML 表格作為輸入來計算某人存款計劃的未來值。
所需的 HTML 表格
我們將使用一個 HTML 表格后,就能用 Request("APR") 的方式引用。HTML 標記 <INPUT TYPE=TEXT NAME=APR> 提供了輸入數值所需的字段。
要將表格標記的 ACTION 屬性指定的網頁。“Submit”按鈕的 HTML 標記 (<INPUT TYPE=SUBMIT VALUE=" Calculate Future Value ">) 使用 ACTION 的值,從 HTML 表格標記 (<FORM METHOD=POST ACTION="Financej.asp">) 來調用 ASP 頁 Financej.asp。
我們已經為您創建好了表格。用文本編輯器打開 Web 服務器上 Tutorial 目錄 () 中的 FVform.asp 文件即可。
腳本
我們使用 來調用您的 Finance 服務器組件。腳本首先確認來自 HTML 表格中任何沒有輸入的變量賦默認值。一個自定義的函數 IsNumeric,用于檢測 HTML 表格中每個框輸入的數據是不是合法數字。
Server.CreateObject 創建一個 Finance 組件的實例(也就是使組件可用),名為 MS.Finance.Java。為組件創建實例以后,就可以使用組件的方法和屬性了。在腳本中緊隨 Server.CreateObject
Server.CreateObject 創建一個 Finance 組件的實例(也就是使組件可用),名為 MS.Finance。為組件創建實例以后,就可以使用組件的方法和屬性了。在腳本中緊隨 Server.CreateObject 之后,使用了 CalcFV 方法來計算存款計劃的未來值。計算結果將出現在請求這個信息的瀏覽器中。
要查看腳本,請用文本編輯器打開 Tutorial 目錄 () 中的 Financej.asp Finance.asp 文件。
用瀏覽器進行測試
要運行 Financej.asp Finance.asp ASP 頁,請打開 FVform.asp 文件,該文件將繪制一個表格并調用 Financej.aspFinance.asp 腳本來計算表格中描述的存款計劃的未來值。
要打開 FVform.htm,請將瀏覽器導向 http:///iishelp/iis/htm/tutorial/FVform.asp。
在“Savings Plan”表格中輸入數值。
單擊“Calculate Future Value”按鈕。存款計劃的結果將會出現。
經過不長時間的學習,您已經創建了一個有用的 JavaActiveX 服務器 組件。如果需要使用其他財務函數,只要通過 Visual J++Visual Basic 將其他方法添加到 Finance 服務器組件中,就可以執行其他財務函數了。我們鼓勵您進行嘗試并提出創造性的方法來利用自己的 JavaActiveX 組件。您很快將會發現,用組件來開發 Web 應用程序幾乎沒有任何限制。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -