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

时间:2011-04-05 21:10:13

标签: java jsp tomcat intellij-idea hotswap

我有一个带有一个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立即进行任何更改
  • 它不是浏览器缓存问题

有什么想法吗?

4 个答案:

答案 0 :(得分:31)

我正在使用Intellij IDEA 10.0.3并遇到了同样的问题。我通过检查运行/调试配置部分下的tomcat服务器设置中的设置 - “更新帧停用资源”来解决它。希望这会有所帮助。

答案 1 :(得分:30)

当我回答这个问题时,IntelliJ IDEA版本为13.0.2。由于提出了这个问题,因此选项略有不同。简而言之,通过"运行/调试配置"您项目的面板:

  1. 确保您的项目已设置为"战争爆炸" (通过"部署")
  2. 在" Server" tab,set" On frame deactivation"到"更新课程和资源"
  3. 按照这两个步骤,按顺序,将导致项目被热交换"当IDEA失去焦点时(即当您将焦点更改为Web浏览器时)。

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

    处获得

答案 2 :(得分:6)

尝试编辑Run/Debug Configuration,转到“部署”标签并部署爆炸的war文件。

答案 3 :(得分:2)

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

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

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