使用 Intellij 10.X 和 tomcat 6.X 修改后热部署 JSP

Posted

技术标签:

【中文标题】使用 Intellij 10.X 和 tomcat 6.X 修改后热部署 JSP【英文标题】:Hot Deploy JSP after modification with Intellij 10.X and tomcat 6.X 【发布时间】:2011-07-30 08:04:34 【问题描述】:

我有一个带有一个 java 类和一个 jsp 的 Hello-World 应用程序。 JSP 打印出嵌入在 JSP 和 java 类中的一些文本。 (它打印出两件事)

我按照here 的指示创建和部署我的应用程序,它(大部分)工作正常!我能够调用 JSP 并正确显示页面。按下 Intellij 重新加载按钮后,我还可以热交换 java 类中的更改。

问题:如果我更改 JSP,它不会反映在浏览器中。

我已验证以下内容:

Tomcat/conf 目录中的web.xml 不会覆盖“development”值。默认值为 true。 HelloWorld\web\META-INF\context.xml 和 Tomcat\conf\context.xml 中的 context.xml 具有 reloadable=true 在任何更改时立即将 JSP 从 C:\code\HelloWorld\web\index.jsp 复制到 C:\code\HelloWorld\out\artifacts\HelloWorld_war_exploded\index.jsp 不是浏览器缓存问题

有什么想法吗?

【问题讨论】:

无法复制。试试 vanilla Tomcat 安装,看看它是否有帮助。如果没有,请将您的项目发送给 JetBrains 支持并提供重现错误的确切步骤。 我认为同样的问题和正确的解决方案是:***.com/questions/19596779/… 【参考方案1】:

当我回答这个问题时,IntelliJ IDEA 的版本是 13.0.2。自从提出这个问题以来,选项略有不同。简而言之,通过您项目的“运行/调试配置”面板:

    确保您的项目设置为“战争爆炸”(通过“部署”) 在“服务器”选项卡上,将“帧停用”设置为“更新类和资源”

按顺序执行这两个步骤将导致项目在 IDEA 失去焦点时“热交换”(即当您将焦点更改为 Web 浏览器时)。

完整的说明可在http://www.jetbrains.com/help/idea/2016.1/updating-applications-on-application-servers.html?search=application%20servers获得

【讨论】:

@Madbreaks 我更新了它,但我确信它会再次崩溃。没有人知道 301 是什么了。因此,您以后只需在文档中搜索“应用程序服务器”即可。【参考方案2】:

尝试编辑Run/Debug Configuration,转到部署选项卡并部署分解的战争文件。

【讨论】:

我尝试了所有解决方案,但在idea12 上,这似乎是唯一可行的解​​决方案。部署完爆炸战争后,在“运行”/“调试”选项卡上按下“帧停用时更新资源”按钮【参考方案3】:

我正在使用 Intellij IDEA 10.0.3 并遇到了同样的问题。我通过检查运行/调试配置部分下的 tomcat 服务器设置中的设置 - “Update resources on frame deactivation”解决了这个问题。希望这会有所帮助。

【讨论】:

【参考方案4】:

几年前,当看到修改时间发生变化时,我将 Tomcat 配置为重新编译 jsp。最近我尝试了相同的设置,但它对我不起作用。

在我的情况下,我需要查看的更改主要是 html 中的更改,因此我能够将大部分 html 封装到一个单独的 html 文件中。然后,我使用读取的文件将其内容包含在 jsp 中。然后,我能够立即更改浏览器中反映的 html,而无需重新部署。请注意,jsp 包含没有做到这一点(它缓存了 html),必须使用 java 帮助程序中的文件阅读器读取文件才能将字符串返回给 jsp。 (你可以把 java 逻辑放在 jsp 中,但这根本不像 mvc)

对这种方法的一个警告是将可变数据合并到读取 html 的文件中。您可以使用几种方法。 1. 制作你自己的字符串替换算法,让你的助手应用程序动态替换字符串 2. 将你的变量数据输出到一个 javascript 块中,让 javascript 更新你的文件中的 html 值读取 html 块(假设你有 javascript 印章拉关闭)。

【讨论】:

以上是关于使用 Intellij 10.X 和 tomcat 6.X 修改后热部署 JSP的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA使用:tomcat和jetty配置

服务器未连接。部署不可用。 IntelliJ 13 和 Tomcat 7

Servlet1 Mac 下 Tomcat和IntelliJ IDEA结合使用

使用IntelliJ IDEA配置Tomcat

为在IntelliJ中运行的Tomcat启用CORS

使用 IntelliJ IDEA 远程调试 Tomcat