前言
凡是有JSP編寫經驗的人都有JSP調試困難的體會。由於自動化調試工具的缺乏使得在調試JSP時不得不在文件中大量的使用打印語句。這種做法對於定位JSP範圍內的錯誤是一個簡單有效的手段,但如何快速有效的定位在JSP中調用的對象的內部錯誤就顯得有點力不從心了。因為這樣將不得不頻繁地編譯、發布、啟動停止伺服器,造成調試極大的不便。
傳說中所見即所得的JSP調試工具,就筆者目前掌握的情況來看,並不存在。如果讀者有這方面訊息的希望告知,呵呵。但是JSP的調試工具卻的確存在,而且它是免費的! It's lomboz。下載網址:http: //www.objectlearn.com/products/download.jsp
本文從一個簡單的例子出發來描述如何使用lomboz來調試JSP。本範例的開發環境如下:
-JDK版本:1.4.1;
-JAVA IDE:Eclipse 2.1;
-lomboz:適用於Eclipse2.1的插件;
-JSP/Servlet容器:Tomcat 4.1.18。
lomboz簡介
嚴格的說lomboz是Eclipse的一個J2EE的插件,它將很多Java應用伺服器、J2EE元件和Web應用開發整合到Eclipse中,可以幫助Java開發者使用Eclipse建立、測試、部署J2EE應用。對於本文的重點,JSP的調試,它也有相關的支援:
-支援JSP編寫,包括:語法著色和語法檢查;
-支援JSP的調試。
對於JSP的調試,lomboz的原理是對要調試的JSP頁面所產生的java程式碼來進行調試。整個調試過程與java應用程式的調試過程一樣,這樣不論是JSP本身的調試還是被JSP調用的對象的調試本無縫地聯結到了一塊。
在開始本文的例子之前,讓我們先來看看lomboz的安裝,以及為能正常的使用其JSP調試功能而進行的配置。
安裝和配置
lomboz的安裝過程非常簡單,Eclipse的插件安裝過程大多都非常的簡單,主要步驟如下:
1.從lomboz的下載地址( http://www.objectlearn.com/products/download.jsp )下載支援Eclipse2. 1(或Eclipse的其他版本)的插件。
2.如果Eclipse已運行,那麼請先關閉它。
3.把下載的檔案解壓縮到Eclipse安裝目錄下的plugins目錄下。
4.重新啟動Eclipse,開啟「About Eclipse Platform Plug-ins」(Help -> About Eclipse Platform ->Plug-in Details),如果lomboz安裝成功將會出現有關它的資訊。如下圖:
註:如果想卸掉lomboz,你只需要把plugins目錄下對應lomboz的目錄刪除即可。
5.設定Lomboz J2EE View,開啟Window -> Customize Perspective,如圖設定:
1.設定JDK,選擇“Windows -> Preferences”,選擇Lomboz,進行JDK的設定。如圖例:
2. 定義伺服器,如果你的伺服器已經包含在Lomboz預設的伺服器清單中,這一步可以跳過。 Lomboz預設伺服器清單可以透過在上一個步驟的介面中展開Lomboz,然後選擇其中的「Server Definitions」來獲得。以下以新增Tomcat4.1.18為例說明如何增加一個伺服器。相關步驟如下:
a)進入Lomboz安裝目錄的servers子目錄,複製一個.server檔案(如tomcat410.server),並將其改名為tomcat418.server。
b)開啟這個檔案分別改變這個檔案的以下位置:
- <serverDefinition …/>,將其中的name的值改為你想要的一個名字(如Apache Tomcat v4.1.8),這個名字用來顯示在“Server Definitions”介面的伺服器清單部分;
- <property id="serverRootDirectory" ….../>,其中default的值改為你機器上Tomcat所在的目錄,如D:/Program Files/Java/tomcat- 4.1.18;
- <property id="classPathVariableName" …/>,其中default的值改為任意名字(如TOMCAT418),這個名字用來代表Lomboz工程的預設的ClassPath的變數名稱;
- <property id ="classPath" …/>,其中default的值改為你機器上Tomcat所在的目錄,如D:/Program Files/Java/tomcat-4.1.18;
c) 加入jasper-runtime.jar。在預設情況下TomcatX.server檔案中只包含2個jar檔:servlet.jar和bootstrap.jar,但缺少jasper-runtime.jar。而這個jar檔在JSP的調試過程中起到了非常重要的作用,因此請加上它。
在一個server上新增jar有兩種做法:
方法1:
在剛才編輯的.server檔案中的<serverClassPath>部分加入一行:<jar type="variable">${classPathVariableName}/common/lib/jasper-runtime. jar</jar>;
方法2:使用「Server Definitions」介面,在此不再贅述。
配置好的伺服器會在「Server Definitions」窗體中顯示,如下圖:
注意:對於Tomcat4.x的伺服器需要打上補丁才能使Lomboz正常工作,補丁的下載地址:
至此,Lomboz的安裝和配置已經全部完畢,那麼讓我們來創建一個“ Hello World!」的範例來體會一下Lomboz調試JSP的過程吧。
調試JSP
創建工程要使用Lomboz調試JSP,首先必須創建一個Lomboz工程。步驟如下:
1. 開啟File->New->Lomboz J2EE Project,建立一個名為debugJsp的專案;
2. 選擇「Next」進入Lomboz工程屬性選擇頁面,新增Web模組和所使用的伺服器。由於我們的主要任務是調試JSP,因此EJB模組可以為空。如下圖:
3.選擇Finish,Lomboz工程即創建完畢。此時,Lomboz產生的文件結構如下圖:
接下來,我們就可以建立自己所需要的JSP檔案了。在這個例子中我直接使用預設的index.jsp,將它的內容改為:
<!-- Copyright (c) 2002 by ObjectLearn. All Rights Reserved. -->
<html>
<head>
<title>Welcome</title>
</head>
<body>
<center><%= "Hello World!"%></center>
</body>
</html>
目前為止,我們調試JSP的準備工作大致都完成了,但是對使用Tomcat4.x的人員還需要多餘的步驟(這些步驟主要也是由tomcat4.x本身引起的):
1.在Tomcat的config目錄下的server.xml檔案中加入以下行(具體位置請參考server.xml相關的文獻):
<Context path="/TestJsp" docBase="D:DebugJspdebugJsp" workDir="D: DebugJspj2srcorgapachejsp">
其中,path表示Web應用的URL名字;docBase表示web應用的物理位置;workDir表示jsp所對應的java檔案產生的位置,必須創建orgapachejsp這樣的目錄結構和名稱。
2.根據orgapachejsp在對應的j2src目錄下建立相對應的子目錄結構,同時把j2src設定為工程的source目錄。
語法檢查現在,讓我們開始享受調試JSP的過程。在調試之前,JSP應該是沒有語法錯誤的。 Lomboz提供了JSP語法檢查的功能,具體操作是:
1.選擇要進行語法檢查的JSP文件,按一下滑鼠右鍵;
2. 選擇Lomboz j2ee… -> Check Jsp Syntax
調試解決完語法錯誤之後,接下來就是解決邏輯錯誤的時候了。對於這種錯誤就只能透過調試來解決了。使用Lomboz調試JSP的過程與普通JAVA應用程式的調試非常類似,因為它的原理就是先利用伺服器產生JSP對應的JAVA文件,然後再對他們進行調試。
偵錯JSP的步驟如下:
1.開啟Lomboz J2EE View,選擇伺服器,按滑鼠右鍵選擇「debug server」。如圖:
如果.server檔案定義正確,Tomcat將會啟動。如果沒有像預想的那樣啟動Tomcat,那麼請從這兩個方面排錯:Tomcat環境變數和Lomboz的server檔。
2. 開啟瀏覽器,如IE,在網址列輸入:http: //127.0.0.1 :8080/debugJsp/index.jsp 。如果JSP檔案語法沒有錯誤,將會在工程的j2srcorgapachejsp目錄下產生這個JSP檔案對應的JAVA檔案。重新刷新工程,即可看到這些文件。如圖:
這一步主要是觸發伺服器根據jsp產生可供調試的java文件,不必太在意結果是否正確。因為一旦java檔案生成,那麼這些錯誤都可透過偵錯排除。
3.開啟這個java文件,在其中設定斷點,然後在IE的網址列再次輸入這個URL,此時Eclipse的調試功能即被啟動。至此就可有針對性地對JSP進行調試了,這時的情形如圖:
至於JSP所呼叫物件的調試,在完成上述步驟後,然後在物件對應的java
文件中設定斷點即可。
結論雖然目前JSP的調試尚未方便到如同普通的java檔案調試般方便,但是Lomboz這類工具的出現至少結束了手動調試JSP的階段。從此java的web應用開發者不必因為一些錯誤而時不時地停下程序來手工添加打印語句來觀察變量的值,相反他們完全可以如調試普通JAVA應用一樣在程序運行的同時來觀察這些值的變化。這大大方便了基於WEB應用的開發,減少了以前為調試所浪費的時間。