VisualAge for Java開發Servlets
Servlets是Java編程環境中一個非常有生命力的新鮮事物,本文描述了Servlets,并介紹如何用VisualAge for Java迅速開發Servlets。Servlets開發中應用到的VisualAgeforJava的關鍵技術是VisualAgeforJava的模擬多種虛擬機環境的能力,以及代碼增加編輯并連接到運行中的程序中的能力。
背景
在WWW的初期,程序員們很快就意識到,通過使用公共網關界面(CGI),WWW可以成為一個引人注目的應用開發平臺。事實上,一個CGI程序就是把各種能力擴展到Web服務器中的一個插入模塊。然而,CGI的最初設計要求為每一個請求服務創建一個單獨的進程,從而增加了性能和資源的消耗。為改進CGI的性能和可擴展性,Web服務器廠商引進了專有的APIs,例如網景公司的NSAPI、微軟公司的ISAPI和IBM的GWAPI,同時,網景公司還為Navigator引人了一個Web瀏覽器插入API。這樣一來,Web客戶機和服務器都可以通過插入而加以擴展。不幸的是,這一插入要求使用專用的APIs,對于不同的操作系統版本也不同。
Sun公司推出的Java和定義的AppletAPI帶來了WWW的第二次進步,AppletAPI為開發者提供了一個擴展Web瀏覽器的標準和與平臺無關的方式。現在,Sun公司使Java成為建立N層企業級應用軟件又推出了ServletAPI,為Web服務器帶來了同樣的優點。熱心者可以通過訪問http://java.sun.com了解Servlet,還可以從這里下載文檔和JavaServlet開發工具包(JSDK)。在下面的討論中,我們將會提到JSDK1.0.1。
運行Servlet
運行Servlet的最好開端是下載JSDK和運行范例,并在Web服務器上配置Servlet。使用者可以用ServletRunner(srun)測試Servlet,ServletRunner是一個包含在JSDK中的小程序,是一個簡化的Web服務器,與AppletViewer相似,只要Applet一連接上,它就能夠成為一個簡化的Web瀏覽器。
假設使用者正在WindowsNT平臺上工作,并已安裝了JSDK1.1.x或JSDK1.0.1,打開一個命令提示符,并轉到JSDK目錄,例如,E:\JSDK。在這個目錄中,bin子目錄中包含了ServletRunner,servlet子目錄中包含了servlet范例。然后進入servlet子目錄,鍵入下面命令:
E:\JSDK\servlet>..\bin\srun-v
現在,就有了一個監聽8080端口的Web服務器,"-v"選項向命令提示符窗口產生詳細的輸出。下面,打開任意一個Web瀏覽器,例如網景的Navigator,并打開http://127.0.0.1:8080/servlet/HelloWorldServlet。ServletRunner加載了HelloWorldServlet類,為它構造一個環境,調用其init()方法,然后調用它的service()方法,service()方法有一個請求參數和響應參數。HelloWorldServlet對象簡單地給響應對象寫一個HTML主頁,該響應對象被返回到Web瀏覽器并顯示。在第一次服務請求之后,該servlet保持激活狀態,并處于待命狀態,可以處理進一步的請求。servlet的構造必須能夠處理多個并發服務請求,因為每一請求都是從自己的線程開始的。當ServletRunner終止時,它調用servlet的destroy()方法。
在Servlet生命周期的最后階段,使用者必須停止并重新啟動ServletRunner(或Web服務器),以得到一個更新的servlet類文件。在開發過程中,使用者會經常改變servlet代碼,所以使用ServletRunner可能會很單調乏味,特別是在servlet開始運行了一段時間以后,不得不調試一個問題的時候。幸運的是,來自IBM的VisualAgeforJava提供了一個效率更高的開發Servlet軟件的方式。
要停止ServletRunner,在命令提示符窗口中鍵入Ctrl-C即可。
VisualAge for Java有兩個關鍵技術,使開發servlet非常方便:一個是多種虛擬機環境模擬,另一個是代碼增加編輯并連接到運行中的程序。
JSDK包含了ServletRunner源代碼(srun.c),如果仔細考察一下,就會看到ServletRunner只是簡單地運行sun.servlet.http.HttpServer類。由于ServletRunner是一個Java程序,可以在VisualAgeforJava中把它當作一個模擬虛擬機環境來運行。啟動VisualAgeforJava,并創建一個叫做JSDK的新項目。下面,解壓縮E:\JSDK\lib\classes.zip文件,輸出到一個temp目錄(或簡單地拷貝到classes.jar),并把類文件(或jar文件)輸入到JSDK項目下。這時會產生幾個問題,因為classes.zip文件丟失了某些用于NetscapeWeb服務器支持的類。刪除sun.servlet.netscape軟件包來清除這些問題,選擇sun.servlet.http.HttpServer類并運行它(提供-v參數來把詳細結果輸出到控制臺窗口)。現在,開發環境就是一個Web服務器!
下一步,對于范例sevlets,把這些源代碼從E:\JSDK\servlrts目錄輸入到JSDK項目,在Workbench窗口中的項目制表符中擴展HelloWorldServlets類,并選擇doGetO方法。在源窗格中,在該行的起始處放入一個插入點,內容如下:out.printin(HelloWorld);插入一個斷點,在Web瀏覽器中重新載入HelloWorldServletsURL。將命令改成:out.print("Hello VisualAge");然后,存儲這一變更。VisualAgeforJava僅僅編輯這個修改的類方法,并將其連接到運行程序中。其重要之處在于:認識到增加編輯只是事情的一半,真正的效率在于不必重新啟動正在調試的程序,也不必重新創建引起問題的程序執行狀態,正是這種程序執行狀態產生了這些問題,而使用者正在設法處理。
通過幾行程序代碼,檢測任何感興趣的變量,單擊Resume按鈕來完成服務請求,修改后的HTML頁將在Web瀏覽器中出現。
使用VisualAgeforJava,可以修改運行中的servlet,因此沒有必要重復性地停止和啟動Web服務器。此外,當服務器運行時,使用者仍會擁有所有希望的開發環境。
結論
Servlet是Web應用開發中的一個重要進步。VisualAgeforJava通過ServletRunner對開發Servlet、增加編輯和連接到運行中的程序有很好的支持。將來,IBM還會通過將Web連接技術擴展到Smalltalk和C++對Java的連接,進一步來加強對Servlet的支持。在IBM軟件技術的幫助下,使用者將能夠從HTMLJavaBean中使用VisualAgeforJavaCompositionEditor,進而可視化地創建Servlets。
原文鏈接:http://www.cnblogs.com/cy163/archive/2009/02/08/1386134.html