前面两篇文章已经罗嗦了很多设置问题(参考:1. Eclipse 3 + Lomboz 3 + Tomcat 5 开发网站 2.Eclipse, Lomboz and Tomcat 的 Web Project 设置),其实如果前面的设置都没问题了,调试就很简单了,水到渠成。
在写调试前要说明一点,编程序的同行都知道,所谓程序错误大致应该有两类,编译错和运行错。现在流行的IDE几乎都可以在编辑的时候查出大部分的编译错。然后给你提示。Eclipse也不例外。写Java程序的时候,编辑框边上那些红点,黄点就是了。装了Lomboz以后,JSP的编译错也能提示了。这类错就谈不上什么调试了,编译都通不过。直接改过来就是了。
另一类是运行错,这是比较麻烦的,不好找,记得在ASP时代,我们总是Response.write找错,直到visual studio .net 2003 也不能跟踪aspx地执行(当然code behind可以,但apsx页面里的代码不行),以前没有lomboz的时候,也是out.print,真是很累人。
废话一堆,开始讲正题。(今天换了台机,用的是final版的eclipse 3,屏幕拷贝的细节可能有点不一样,应该不是问题)
启动tomcat前还有一个重要的设置,为你的web project建立一个tomcat的配置文件,位置在tomcat目录下的conf\Catalina\localhost,文件可以起任意名字,但一定要用xml的扩展名(总之要符合tomcat的规矩了)。配置文件的内容很简单,比如我的project 叫blog,那配置文件(blog.xml)的内容就是:
< Context workDir="h:/project/blog/j2src" reloadable="true" debug="0" docBase="h:/project/blog/blog" path="/blog" / >
就一行字,你也可以把它放在server.xml里,这里没时间讲tomcat的配置了。
最后把tomcat启动起来,点那个齿轮按钮就可以了。
这是tomcat启动以后的提示信息:
下面的步骤很重要,tomcat启动以后,打开浏览器,输入调适的页面地址,比如:http://localhost:8080/test/index.jsp,我的测试网页index是这样的。
< html >
< jsp:useBean id="user" scope="page" class="test.User" />
< %
String template = user.get("template");
template = ((template.length()==0) ? "default":template);
% >
< head >
< meta http-eqouiv="expires" content="0" >
< link href="style/<%= template %>.css" rel="stylesheet" type="text/css" >
...
我们想看看在实际执行中,template的值到底付上了没有,就要在他后面加一个断点。怎么做呢?
回到eclipse,右键点project名,再弹出的菜单里选刷新,把整个project的文件刷新一次。这时候,magic出现了,j2src下有东西了,跟着目录一直走到 H:\project\blog\j2src\org\apache\jsp,你就可以看到你想要的东西了。index_jsp.java, index._jsp.class。打开index_jsp.java(他就是tomcat根据你的jsp文件生成servlet,调试就靠它了),设上断点。切回IE,刷新刚才的页面,任务栏的eclipse在闪呀闪,切回eclipse,他已停在断点上了。
看到template的值没有?有必要还可以改他,想不到在jsp里也可以为所欲为。
另外那些bean的调试就比较简单了,和一般的java文件一样,这里就不再罗嗦了。
这里东西有点多,总结一下:
- 注意那个只有一行的配置文件(blog.xml),它是有讲究的。
- 调试jsp文件前,先运行他,让tomcat生成他的servlet,我们要调试的其实是servlet
- 记得刷新你的project,好看到那些动态生成的servlet文件,然后设断点。