摘要
当使用IntelliJ IDEA调试JSP时,我看到JSP在浏览器的实际请求之前被触发了两次。有人知道为什么吗?
下面是servlet测试。
概述
我第一次使用(有效地)IntelliJ思想。在进行web应用程序调试时,我看到了一个奇怪的行为,这表明我在某个地方配置有错误:如果我在代码中设置了一个断点,该断点将在响应启动页时运行,则该代码在启动浏览器之前运行两次,然后在响应浏览器请求时运行第三次。我想知道我是否在某个地方出了差错(或者如果我没有出差错,那是怎么回事)。
设置
-
从头开始创建新项目
-
-
接受违约
src
目录
-
从所需技术列表中选择“Web应用程序”
src公司
,
WEB-INF
等)违约
index.jsp
在里面。
B) 在JSP中添加了一些简单的代码来输出日期。
C) 在代码中放置断点。
文件设置Web浏览器
E) 去了
运行编辑配置。。。
以及:
-
点击
-
给它起了名字
-
点击
配置。。。
按钮旁边的下拉列表的应用服务器(因为我还没有任何),并指向我的独立Tomcat6服务器(见下文),接受所有默认值
-
-
加了一个“?foo=bar“查询字符串到默认启动URL,因此:
http://localhost:8080/?foo=bar
(你将在下面看到原因)
-
其他都默认了
-
跑步
-
选择
. 它很高兴地启动了Tomcat服务器。
-
它击中了断点。检查请求表明这是一个GET from
user-agent
“Java/1.6.0_20”。上面配置了查询字符串。没有属性,除了查询字符串1之外没有其他参数。
-
-
它再次击中断点。这也是从
用户代理
“Java/1.6.0_20”,但它确实是
不
-
单击“继续程序”按钮(F9)。
-
它启动浏览器并再次点击断点。这是一个来自浏览器的GET(带有查询字符串),看起来非常正常。
我看到了包含和不包含查询字符串的行为,我只是添加了它来查看它何时/是否出现。
如果我创建一个类并使用JSP中的代码中的该类并将断点移到该类的代码中,则该断点
做
使用Servlet运行
我想进一步梳理行为,所以我向项目添加了一个servlet,将其映射到路径
/foo
,并将调试配置更改为触发器
http://localhost:8080/foo?foo=bar
而不是索引页。我还将另一个JSP添加到项目的根目录下,称为another.JSP。这揭示了非常有趣的行为:
-
运行|调试
-
它在
代码。检查请求表明这是一个GET from
用户代理
“Java/1.6.0_20”。它有查询字符串。没有属性,除了查询字符串1之外没有其他参数。
-
单击“继续程序”按钮(F9)。
-
它在
index.jsp索引
用户代理
不
具有查询字符串。没有属性,没有参数。注意index.jsp与启动路径无关
.
-
单击“继续程序”按钮(F9)。
-
另一个.jsp文件中的断点永远不会被命中。所以我怀疑index.jsp的触发(没有查询字符串)与它是默认的“欢迎文件”有关
welcome-file-list
并将另一个.jsp设置为
welcome-file
更多细节
-
相当通用的Ubuntu 10.04lts桌面安装
-
新下载和解包的IntelliJ IDEA Ultimate安装(30天试用)
-
-
Sun的Java 6 JDK
提前谢谢!