如何调试JSP?


26

我正在尝试为项目编辑JSP,并且在从服务器请求JSP时,我在NSP的某个位置获取了NullPointerException。

我的Web服务器(JBoss)报告了异常,但它给了我一个虚假的行号。据报告,异常发生在第702行,但是我的JSP只有146行长,因此我无法确定哪个行阻塞了。

有什么好的技术可以调试JSP中的错误?我正在使用IntelliJ 9 Ultimate作为我的IDE。

谢谢


1
可能在Stackoverflow.com上被问到
Abimaran Kugathasan 2011年

1
好。抱歉,我对StackOverflow.com和Programmers.StackExchange.com之间的区别尚不完全清楚。我不确定哪个问题属于哪里。.我已经阅读了针对程序员的FAQ。stackexchange,但这有点含糊。
&”符号

3
实际上,我不确定在堆栈溢出时是否可以。虽然很具体,但是没有足够的具体细节(由于问题的性质)。您所需要的是调试技术,该技术应该是本网站的主题。
克里斯·弗雷德

您在jsp中是否包含任何jsps?这样行数可能会增加。问题需要移到stackoverflow
零下

一种技术是查看编译文件:codeinventions.blogspot.com/2014/08/…–
Suresh Atta

Answers:


29

有几种选项可以帮助您:

  1. 这个答案实际上说明了如何专门调试JSP:https : //stackoverflow.com/questions/33739/jsp-debugging-in-intellij-idea。我从来没有尝试过,所以在使用JSP,JBoss和IntelliJ时遵循了以下三个建议。

  2. 请记住,JSP被编译为类。说到第702行时,表示在已编译的类中。如果您有test.jsp,则类名可能是test_jsp,因此打开JBoss工作目录并搜索test_jsp.java(找到正确的目录后,您将看到该目录结构与您的JSP目录结构匹配)。每当遇到JSP异常时,我都可以很容易地找到该行,并且通常将其与JSP中的相应行匹配。

  3. 断点在从JSP 调用的 Java类中正常工作。因此,也许您可​​以将JSP中的Java脚本代码移到一个类中,然后从入口点进行调试。将来,您还可以养成重新安排逻辑的习惯,以使大多数逻辑都位于从JSP调用的类中,并且JSP简单,直接并且希望不会引发任何异常。无论如何,这是个好习惯。

  4. 更好的是,将所有(或几乎所有)Java逻辑删除到Java类中,而将JSP保留为HTML和JSP标签。我知道这是不可行的,但是再次避免长期出现这样的问题是一个好主意。


2
+1用于从JSP中删除逻辑。有关更多信息,请参见具有模型2(MVC)体系结构的JSP / Servlet最佳实践:oracle.com/technetwork/articles/javase/servlets-jsp-140445.html
bunglestink 2011年

谢谢!我同意,选项4是理想的选择,但在此项目中,视图/控制器之间没有很大的分离。
&”符号

1
同样为项目#2 +1。我不知道在哪里找到*_jsp.java课程。
scottyseus

2
从具有数千个JSP的项目中删除所有JSP的逻辑,每个项目包含数千行scriptlet ...不,谢谢,只想调试Hashtables和Vector。FML :-( </ rant>一个不错的答案
PeterPerháč16年

-1

您可以像调试Java代码一样轻松调试JSP页面:
“ JSP文件与调试Java类相同,但是大多数功能(监视,检查等)均未实现。获取变量值的唯一方法是“变量”视图。”
请参阅下面的链接:https :
//www.laliluna.de/articles/posts/debugging-jsp-java-tutorial.html


4
在回答已经得到良好答复的较旧问题时,请在答案中添加更多详细信息,以便解决未涵盖的问题。
gna
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.