前言
凡是有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应用的开发,减少了以前为调试所浪费的时间。