- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
摘要
当使用IntelliJ IDEA调试JSP时,我看到在浏览器发出实际请求之前,该JSP被触发了两次。有人知道为什么吗?
已在下面的servlet测试中更新。
总览
我第一次(有效)使用(评估)IntelliJ IDEA。在进行Web应用程序调试时,我看到一个奇怪的行为,表明我在某处配置错误:如果我在代码中设置了一个断点以响应启动页面而运行,则该代码在启动浏览器之前运行两次,然后第三次响应浏览器请求。我想知道我是否在某个地方出错了(或者如果我没有出错,那是怎么回事)。
设置
A)创建一个新的Web应用程序项目
从头开始创建一个新项目
给它起一个名字并将其标识为Java模块
接受默认的src
目录
从“所需技术”列表中选择“ Web应用程序”
这给了我一个标准结构(src
,WEB-INF
等),其中带有默认的index.jsp
。
B)向JSP添加了一些简单的代码以输出日期。
C)在代码中放置一个断点。
D)在“文件” |“配置”中配置我的Web浏览器设置|网页浏览器
E)去跑步|编辑配置...以及:
点击了[+] | Tomcat服务器|本地
给它起名字
单击应用程序服务器下拉列表旁边的Configure ...按钮(因为我还没有),然后将其指向我的独立Tomcat6服务器(请参见下文),接受所有默认设置
回到调试配置,告诉它为此配置部署“战争爆发”工件
在默认的启动URL中添加了一个“?foo = bar”查询字符串,因此:http://localhost:8080/?foo=bar(您将在下面看到原因)
将其他所有内容保留为默认值
点击确定
运行
选择运行|调试它很高兴地启动了Tomcat服务器。
它达到了断点。检查请求显示这是来自user-agent
“ Java / 1.6.0_20”的GET。它具有上面配置的查询字符串。没有属性,没有参数,只是查询字符串之一。
单击恢复程序按钮(F9)。
它再次达到断点。这也是user-agent
“ Java / 1.6.0_20”的GET,但是没有查询字符串。没有属性,没有参数。
单击恢复程序按钮(F9)。
它启动浏览器并再次到达断点。这是来自浏览器的GET(带有查询字符串),看起来很正常。
我看到带有和不带有查询字符串的行为,我只是添加了它以查看何时/是否出现。
如果我创建一个类并从JSP中的代码中使用该类,然后将断点移到该类的代码中,则该断点确实会全部命中3次,因此,如果该断点在做实际工作(例如,在数据库中查找内容) ),它确实可以完成工作。我想知道这是幻像预编译调用还是其他东西,但是A)不应,B)似乎不是。
使用Servlet运行
我想进一步弄清楚该行为,因此我向该项目添加了一个servlet,将其映射到路径/foo
,然后将调试配置更改为触发http://localhost:8080/foo?foo=bar而不是索引页。我还向项目的根添加了另一个JSP,名为another.jsp。这揭示了非常有趣的行为:
选择运行|调试它很高兴地启动了Tomcat服务器。
它在Servlet代码中达到了断点。检查请求显示这是来自user-agent
“ Java / 1.6.0_20”的GET。它具有查询字符串。没有属性,没有参数,只是查询字符串之一。
单击恢复程序按钮(F9)。
它到达index.jsp(?!)中的断点。这也是user-agent
“ Java / 1.6.0_20”的GET,但是没有查询字符串。没有属性,没有参数。请注意,index.jsp与启动路径/foo
无关。
单击恢复程序按钮(F9)。
它启动浏览器并再次到达servlet中的断点。这是来自浏览器的GET(带有查询字符串),看起来很正常。
永远不会命中another.jsp文件中的断点。因此,我怀疑index.jsp的触发(没有查询字符串)与它是默认的“欢迎文件”有关。因此,我在我的web.xml中添加了welcome-file-list
,并将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的ROOT上部署webapp时,就会发生这种情况。 Tomcat服务器Eclipse插件将在启动过程中对/
进行自检(这将按welcome-file
的定义间接加载web.xml
)。
你能做什么?可以使用它,也可以在ROOT以外的环境中部署。
关于debugging - 开始在IntelliJ IDEA中开始JSP调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3968174/
我有以下内容: sourceSets { integrationTest { java.srcDir file('.') } } dependencies {
有没有一种简单的方法可以在 IntelliJ IDEA 中为非 Java 项目配置完全自定义的构建过程?基本上,我只需要运行一个自定义的 shell 命令,而不是任何更智能的构建过程。 最佳答案 尝试
有没有办法用快捷方式将变量拉到 try-catch 块之外?例如: 来自: try{ AbstractList t1 = new ArrayList(); } catch (Exception
当我启动 IntelliJ IDEA 时,会出现该消息,但我找不到有关该功能的任何信息以及它如何帮助我。 Enable smart keyboard internalization for IDEA.
这个问题在这里已经有了答案: 10年前关闭。 Possible Duplicate: Intellij Idea 9, what folders to check into (or not check
我的目录中有一个名为 protected.keys 的新资源文件。创建它时,我要求 IntelliJ 将其视为 properties。 相反,我想将其更改为 text 请问我该怎么做? 最佳答案 您可
我的目录中有一个名为 protected.keys 的新资源文件。创建它时,我要求 IntelliJ 将其视为 properties。 相反,我想将其更改为 text 请问我该怎么做? 最佳答案 您可
我有一个带有两个 child 的 Gradle 的 Kotlin 项目。每当我尝试在 IDEA 中打开它时,其中一个 child 会在树中显示两次。 在树中,您可以在顶层看到两个项目,grpc 和 g
我不确定这是更多 Gradle 还是 Intellij Idea 问题。在 projet 中,我使用 gradle import(从 Idea 中的 Gradle 外部模型导入)导入到 Idea,我的
我在 Gradle 多项目配置上使用 idea 插件来生成 Intellij 配置文件。目前,构建在 Gradle 中运行良好,但由于缺少 JPA 元模型源文件,它在 IDE 上给了我错误。 我的问题
我在 事件日志 中得到信息 08:54:02 无法导入 maven 项目:查看日志了解详情 在 Intellij IDEA 15CE 中哪里可以找到这个日志文件? 最佳答案 您可以从 Help 访问事
我的 IntelliJ IDEA 有问题。当我打开 Find in Path 时,它显示在第二个监视器的模态窗口中,而不是像以前一样显示在主窗口内的窗口中。无法将该窗口移动到主监视器。我不记得我是否更
我按照以下 session 中的说明安装了 IntelliJ IDEA。 Install IntelliJ IDEA as a snap package on Linux sudo snap inst
可以在 IntelliJ IDEA 中配置多种类型的终端,例如cmd、powershell、git bash 等? 最佳答案 目前不可能,但有一个相关的功能请求:https://youtrack.je
我下载了 intellij 社区版。DropToFrame 是不是只有终极版才有? 任何其他插件将此添加到 intellij 社区版 谢谢 最佳答案 Drop Frame 已重命名为 Reset Fr
每次写“todo”评论时,我都面临着写我的 vcs 当前分支名称的问题。 最近我了解了 Intellij 的“Live Templates”,使用起来非常舒服。我尝试将它应用于我的问题,但没有模板可以
有一天,我运行了一些大的东西,弹出一个窗口说堆内存内存不足,我在那个窗口中将其设置为2014M,然后单击继续。一切都很好。 但我不喜欢数字 2014,我想要它 2048。因此,我更改了 idea64.
当我尝试编辑和保存 javascript 文件时,IntelliJ 使它不可能: 无法保存 C:\Users\dev\joo-web\trunk\joo-admin-web\src\main\weba
我在一个相当大的项目中升级了 IntelliJ Idea 中的语言级别,我想找到所有已弃用的方法用法 - 我寻找所有出现的罢工。 我为 PhpStorm 找到了一个类似的问题建议的方法在哪里: 代码
我必须对使用匈牙利表示法的遗留代码(以及系统匈牙利语)进行一些维护。不幸的是,将它全部从代码库中清除对我来说是不切实际的。 本地 Eclipse 用户声称可以配置 Eclipse 以便自动生成的访问器
我是一名优秀的程序员,十分优秀!