开始在IntelliJ IDEA中开始JSP调试
摘要
当使用IntelliJ IDEA调试JSP时,我看到在浏览器发出实际请求之前,该JSP被触发了两次。有人知道为什么吗?
在下面的servlet测试中 。
总览
我第一次(有效)使用(评估)IntelliJ
IDEA。在进行Web应用程序调试时,我看到一个奇怪的行为,表明我在某处配置错误:如果我在代码中设置了一个断点以响应启动页面而运行,则该代码在启动浏览器之前运行两次,然后第三次响应浏览器请求。我想知道我是否在某个地方出错了(或者如果我没出错,那是怎么回事)。
设置
A)创建一个新的Web应用程序项目
- 从头开始创建一个新项目
- 给它起一个名字并将其标识为Java模块
- 接受默认
src
目录 - 从“所需技术”列表中选择“ Web应用程序”
这给了我一个标准结构(src
,WEB-INF
等)默认index.jsp
它。
B)向JSP添加了一些简单的代码以输出日期。
C)在代码中放置一个断点。
D)在“ 配置”中配置我的Web浏览器
E)去 以及:
- 点击了
- 给它起名字
- 单击应用程序服务器下拉列表旁边的 按钮(因为我还没有),然后将其指向我的独立Tomcat6服务器(请参见下文),接受所有默认设置
- 回到调试配置中,告诉它为此配置部署“战争分解”工件
- 在默认的启动URL中添加了一个“?foo = bar”查询字符串,因此:http:// localhost:8080 /?foo = bar(您将在下面看到原因)
- 将其他所有内容保留为默认值
- 点击确定
运行
- 选择 。它很高兴地启动了Tomcat服务器。
- 它达到了断点。检查请求显示这是来自
user-agent
“ Java / 1.6.0_20” 的GET 。它具有上面配置的查询字符串。没有属性,没有参数,只是查询字符串之一。 - 单击恢复程序按钮(F9)。
- 它再次达到断点。这也从一个GET
user-agent
“的Java / 1.6.0_20”,但它并 让查询字符串。没有属性,没有参数。 - 单击恢复程序按钮(F9)。
- 它启动浏览器并再次到达断点。这是来自浏览器的GET(带有查询字符串),看起来非常正常。
我看到有和没有查询字符串的行为,我只是添加了它以查看何时/是否出现。
如果我创建一个类并从JSP中的代码中使用该类,然后将断点移到该类的代码中,则该断点
会全部命中3次,因此,如果该断点在做实际工作(例如,在数据库中查找内容)
),它确实可以完成工作。我想知道这是幻像预编译调用还是其他东西,但是A)不应,B)似乎不是。
使用Servlet运行
我想进一步弄清楚该行为,因此我向项目添加了一个servlet,将其映射到path /foo
,并更改了调试配置以触发http://
localhost:8080 / foo?foo =
bar而不是索引页。我还向项目的根添加了另一个JSP,名为another.jsp。这揭示了非常有趣的行为:
- 选择 。它很高兴地启动了Tomcat服务器。
- 它在 代码中达到了断点。检查请求显示这是来自
user-agent
“ Java / 1.6.0_20” 的GET 。它具有查询字符串。没有属性,没有参数,只是查询字符串之一。 - 单击恢复程序按钮(F9)。
- 它到达 ( )中的断点。这也从一个GET
user-agent
“的Java / 1.6.0_20”,但它并 让查询字符串。没有属性,没有参数。请注意,index.jsp与启动路径无关/foo
。 - 单击恢复程序按钮(F9)。
- 它启动浏览器并再次到达servlet中的断点。这是来自浏览器的GET(带有查询字符串),看起来非常正常。
永远不会命中another.jsp文件中的断点。因此,我怀疑index.jsp的触发(没有查询字符串)与它是默认的“欢迎文件”有关。因此welcome-
file-list,我在web.xml中添加了一个,并将another.jsp设置为唯一welcome-
file。果然,现在another.jsp中的断点被命中,而不是index.jsp中的断点。
更多细节
- 相当通用的Ubuntu 10.04 LTS桌面安装
- 全新下载并解压缩的IntelliJ IDEA Ultimate安装包(30天试用版)
- 刚下载并解压缩的独立Tomcat6安装(IDEA不喜欢我通过Synaptic完成的集中安装,拆分目录结构使它困惑,因此我停止了该服务器,仅使用了简单的下载和解压缩版本)
- Sun的Java 6 JDK
提前致谢!
回答:
检查请求显示这是来自用户代理“ Java / 1.6.0_20”的GET。
当您在Tomcat的根目录上部署Web应用程序时,就会发生这种情况。Tomcat服务器的Eclipse插件将/
在启动过程中进行自检(它会welcome-
file按定义间接加载web.xml
)。
你能做什么?可以使用它,也可以在ROOT以外的环境中部署。
以上是 开始在IntelliJ IDEA中开始JSP调试 的全部内容, 来源链接: utcz.com/qa/436210.html