我在spring boot / tomcat实例中使用jsp时遇到问题。 基本上,我在模块A中有所有jsp文件(A / src / main / resources / META-INF / resources / jsp),并且这个模块作为jar依赖包含在模块B(主模块,war包装)中。问题是,当app在调试模式下运行时(在Eclipse或IntelliJ Idea中),模块A中没有任何jsp文件被自动重新加载(在渲染的网页上看不到文件中的更改),只重新启动tomcat实际上重新加载文件并显示更改。模块B中的重写jsp文件正在自行重新加载,只是模块A中的jsp文件出现问题(可能是因为META-INF / resources文件夹)。
模块结构(依赖,打包为jar): 的src /主/资源/ META-INF /资源/ JSP / *。JSP
模块B结构(主模块,打包为war,jsp在这里覆盖模块A中的模块): 的src /主/ web应用/ JSP / *。JSP
我已经找到了解决方法,但最接近答案的是这个(使用JRebel): https://zeroturnaround.com/forums/topic/jsps-in-servlet-3-0-jars-are-not-reloading/
此外,这是我如何设置jsp的示例:https://github.com/ghillert/spring-boot-jsp-demo
答案 0 :(得分:4)
我不知道它是否符合您的限制,但有一个这样的解决方案: https://spring.io/blog/2015/06/17/devtools-in-spring-boot-1-3
另一种选择:https://github.com/spring-projects/spring-loaded
我使用JSF和Facelets,对于具有动态渲染的Web技术,热重载总是有点问题。所以除了spring-boot-devtools之外,我的建议是将静态内容开发过程与渲染相关过程分开。如果你只需要热重新加载css,html,js编辑比大多数技术都有帮助你,但渲染相关的组件编辑会要求你重建你的应用程序不时重新部署。他们询问您的频率取决于您将使用的工具的质量。
答案 1 :(得分:4)
这很可能与:https://stackoverflow.com/a/8656527/696632
相同类路径中的所有资源都受缓存限制。你应该评估答案。
答案 2 :(得分:1)
一个选项可能是使用Gradle Cargo Plugin或Maven Cargo plugin将文件重新部署到Tomcat上(可以重新部署所有文件,包括资源文件)。
文件重新加载不是自动的。您必须手动运行相关的任务/目标,CargoRedeployLocal或货物:分别为Gradle和Maven构建重新部署。
如果重新启动所有内容需要很长时间,使用Cargo插件重新部署可能有助于加快速度。