在Visual J++中編寫ASP COM組件

來源:互聯網
上載者:User
visual Java是一種以網路為中心的程式設計語言,許多隻使用ASP指令碼難以完成的任務可以用Java輕鬆地實現。同時,擴充ASP應用最好的方法莫過於加入COM組件。那麼,可以利用Java為ASP開發組件嗎?本文通過執行個體,說明了在Visual J++環境下開發COM組件的具體過程。
一、概述

   自Java問世以來,各種開發工具、開發環境不斷出現。這些環境和工具面向不同層次的使用者,具有各自的優點。那麼,使用Visual J++作為Java開發平台又有哪些優點呢?粗略地講,這些優點包括:

熟悉的開發環境。Microsoft的許多開發工具,在風格、使用方法上都非常相似。熟悉Visual Basic和Visual C++開發環境的使用者很快可以學會Visual J++的使用。
與其他開發環境的協作。例如,Visual J++可以與Visual InterDev無縫協作,所有HTML、ASP和JavaScript代碼的編寫均可以在同樣的環境內完成。
調試器。使用整合式開發環境(IDE)最顯著的優點之一在於可以使用內建的調試器。與所有其他Microsoft開發環境一樣,Visual J++的調試器功能也非常強大。
當然,Visual J++的IDE也具有其他許多優點,比如關鍵詞彩色顯示、代碼自動格式化、應用結構全域視圖等等。
   特別地,對於那些在Java門外躍躍欲試,卻又不知從何開始的開發人員,我們認為Visual J++是一個非常好的起點。然而我們知道,Sun和Microsoft曾經因為後者對Java的“擴充”而發生爭議。不管我們是否把Java類封裝成COM對象,Java程式都是擴充ASP應用的一種好方法。但考慮到Microsoft私人的擴充不可能得到所有Java平台或環境的支援,因此,在Visual J++編程中應當謹慎考慮是否使用Microsoft的Java擴充。

   接下來我們將用Visual J++建立一個可用於ASP環境的組件。這個組件只包含一個方法,它的參數是字串URL,功能是提取並返回由URL指定的HTML文檔的內容。

   本文將逐步介紹整個組件開發過程。包括如何在Visual J++中建立工程,輸入必要的Java代碼並解釋這些Java代碼的作用,以及如何在ASP指令碼內應用這個組件。

   注意:本文將使用Visual J++ 6.0,但也可以使用更早版本的Visual J++,必要的時候我們會指出不同版本之間的差異。

   二、建立Visual J++工程

   啟動Visual J++,出現如下對話方塊:



  



                     【圖1】

   在這個對話方塊中選擇建立工程,輸入這個工程的名字FetchURL以及合適的工作目錄,然後選擇COM DLL表徵圖,最後單擊“開啟”按鈕。

   Visual J++將自動為建立工程建立一個Java檔案,名為Class1.java。在Project Explorer窗格,雙擊工程名字,按右鍵,然後將Class1.java改名為FetchURL.java。雙擊FetchURL.java檔案名稱即可看到檔案內容。FetchURL.java中由Visual J++自動加入的代碼是建立ASP組件必需的骨架代碼,內容如下:

 /**
  * This class is designed to be packaged with a COM DLL output format.
  * The class has no standard entry points, other than the constructor.
  * Public methods will be exposed as methods on the default COM interface.
  * @com.register ( clsid=600455A0-B534-11D3-A434-0080AD38C188,
  * typelib=600455A1-B534-11D3-A434-0080AD38C188 )
 */
 public class Class1
 {
  // TODO: Add additional methods and code here
 
  /**
  * NOTE: To add auto-registration code, refer to the documentation
  * on the following method
  * public static void onCOMRegister(boolean unRegister) {}
  */
 }
   首先要做的是更改類的名字,即把內容為“public class Class1”的行改為“public class FetchURL”。Java要求每一個類的名字與其對應的Java檔案名稱完全相同(大小寫敏感)。

   請注意上述代碼中的COM指令,它由“@com.register”開始(在注釋內)。該指令告訴Visual J++編譯器把當前Java類封裝成相應的COM DLL檔案。將編譯後的代碼以DLL形式封裝使得我們可以在ASP指令碼中直接使用它。

   接下來,我們要修改自動產生的初始代碼,使其具備前面提出的功能。完整的代碼工程見本文後面的連結,此處我們依次介紹所輸入代碼的含義。

 import java.io.*;
 import java.net.*;
   這兩行代碼匯入了本組件要用到的Java包。Java API由一系列的包組成,這些包提供的是直接可以使用的代碼,類似於C++中的庫。在Java程式中使用import關鍵字有點類似於在C++程式中使用#include命令。

   要查看所匯入的包定義了哪些類,可以在Class Outline窗格內擴充相應的目錄。FetchURL將利用java.io包中定義的類從開啟的網路連接讀入資料,利用java.net包提供的類建立與遠程伺服器的串連並請求文檔。

 public String Fetch(String strURL)
   FetchURL包含唯一的方法Fetch,它的參數是一個字串,該字串指向要求提取的HTML文檔的URL。

 String strInputLine = new String();
 String strResponse = new String();
 try
 {
 URL objURL = new URL(strURL);
 try
 {
 URLConnection objConnection = objURL.openConnection();
   變數strInputLine將作為程式從遠程伺服器讀取資料的緩衝區,變數strResponse將儲存目標頁面的整個文檔,Fetch方法最後返回的就是這個strResponse變數。在這幾行代碼中,程式建立了一個URL對象並嘗試用該對象建立串連。這兩行代碼都封裝在try...catch塊內以處理任何可能出現的異常。Java利用“異常”來處理任何程式遇到的例外情況(通常是錯誤)。例如,如果傳遞給Fetch方法的URL參數格式錯誤,或程式運行時未能與指定伺服器建立串連,都會引發異常,此時程式將把異常資訊返回給調用Fetch方法的應用。異常處理代碼見相應的catch關鍵字。

 BufferedReader objInReader = new BufferedReader(
 new InputStreamReader(
 objConnection.getInputStream()));
   這一行代碼有點複雜,所以在完全搞懂它的意思之前先不要著急。在這行代碼中,程式利用了象Java這樣完全物件導向程式設計語言所提供的優勢。首先,它用objConnection對象建立了一個InputStream類的對象,這實際上是一個可以從伺服器讀取資料的流;然後,又把這個InputStream類的對象傳遞給InputStreamReader,後者將負責從InputStream對象讀取資料;最後,又用這個InputStreamReader類的對象建立BufferedReader類的對象,也就是objInReader。程式將利用這個objInReader對象完成實際的資料讀取操作,並將結果儲存為一個字串。

 while ((strInputLine = objInReader.readLine()) != null)
 strResponse += strInputLine + "
";
 objInReader.close();
   在這部分代碼中,程式使用了一個while迴圈讀入所有資料,直至輸入為空白(null)。objInReader是一個BufferedReader類的對象,它將緩衝讀入的字元,整塊地返回給strInputLine變數。然後,又把這個strInputLine和一個“ ”加到strResponse的末尾。“ ”是Java的一個逸出字元,表示一個新的文本行。在讀入目的文件的所有內容後,程式調用objInReader對象的close()方法顯式地關閉輸入資料流。

   在所有代碼輸入完畢之後就可以編譯這個FetchURL工程了。Visual J++不僅將從Java源檔案產生通常的類檔案,還將產生一個DLL檔案。這個DLL檔案封裝了Java類檔案,它使得我們可以從任何COM環境(包括ASP)訪問Java類檔案所提供的功能。

   如果使用Visual J++ 6,將.java檔案編譯成.class檔案和相應的.dll檔案很簡單,只需從Build菜單選擇Build命令就可以了。如果測試FetchURL.dll的機器和編譯是同一台電腦,則不需要任何附加的工作了;如果不在同一台機器上,則還需要在測試機器上用regsvr32 FetchURL.dll命令註冊它,就像其他COM對象的註冊一樣。

   對於使用Visual J++早期版本的使用者,編譯.java檔案的方法也類似,但還需要額外的註冊步驟,即使用JavaReg /register 命令註冊該類。

   三、編寫ASP指令碼



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。