Spring 开机找不到 jsp 意见
Spring boot can not find jsp views
大家好!
我完成了基于 Spring 的 网络应用程序,然后开始将其重建为 Spring boot 因为它使我能够使用 嵌入式码头 。
目前我遇到了一些问题 - Spring boot cannot find (resolve) jsp views。因此,当我 运行 我的应用程序时 - 我在浏览器中收到错误消息:
这里是 my web app on github - 所以您可以查看文件并找到原因。
请帮帮我!
P.S。是的,我使用了@ResourceImport,因为我不知道如何将现有的 spring 配置 xml 文件重写为基于 java 的配置文件,但你可以在你的回答中告诉我如何做.
P.P.S。由于某种原因,目标目录不包含 WEB-INF 和编译后的内容文件夹。可能是这个原因,但我不知道怎么解决!
如果要进行 jar 部署,则不能使用 wepapp 文件夹。
- 将您的 JSP 放入
src/main/resources/META-INF/resources/jsp
将这些行放入您的 application.properties 文件:
spring.mvc.view.prefix=/jsp/
spring.mvc.view.suffix=.jsp
你可以看看这个项目。它还使用 Spring-Boot、jar-Deployment 和 JSP:https://github.com/synyx/urlaubsverwaltung
Spring Boot 不正式支持可执行 JAR 中的 JSP,这是 known JSP limitations. Also, Spring Boot supports JSPs in embedded Jetty as of 1.4.0.RC1 之一,之前不支持。
现在您可以使用 Spring Boot 1.4+ 和 packaging your application as an executable WAR 来解决这个问题。您将能够使用 java -jar app.war
作为常规 WAR、运行 部署您的应用程序并获得良好的开发体验 - 所有这些都使用标准 JSP。
也许您会找到解决这些限制的技巧,但请记住,那些通常依赖于 servlet 规范不支持的特定于容器的行为。所以充其量,这种行为在容器之间是不一致的——而且容器肯定有可能随时改变它们的行为。
如果您真的想将您的应用程序打包为可执行 JAR,那么最好的方法是不使用 JSP 并选择 a proper template engine。
我从 github
签出您的代码并设法部署到嵌入式 Tomcat 8.0.3
和独立 Tomcat 8.0.x
。
我将只完成嵌入式 Tomcat
而不是 Jetty
的步骤(因为我还没有完全弄清楚 Jetty
配置)。
您可以做两件事
- 将您的 webapps 复制到以下位置,不带 s,例如
/dvdexchange-spring-boot/src/main/webapp
稍微修改您的 pom.xml,例如以下
最终结果如下
-
更新:
IngeniousTom,
我无法使其在嵌入式 Jetty
中工作,这是我在努力添加大量 Maven
Jetty
jar 库后所能达到的最远点,如下所示
这实际上是一个已知问题,我不知道如何在不使用任何骇人听闻的方式的情况下解决这个问题。
如果您阅读 github
link,Spring-Boot 和 Jetty 阵营之间有很多讨论。
讨论的底线是 Spring-Boot
还 支持 Jsp
in embedded Jetty
作为他们的标准,但有计划在未来。
我的建议是不要使用 Jsp
或使用 Jetty
以外的其他内容作为您的嵌入式容器。
大家好! 我完成了基于 Spring 的 网络应用程序,然后开始将其重建为 Spring boot 因为它使我能够使用 嵌入式码头 。 目前我遇到了一些问题 - Spring boot cannot find (resolve) jsp views。因此,当我 运行 我的应用程序时 - 我在浏览器中收到错误消息:
这里是 my web app on github - 所以您可以查看文件并找到原因。
请帮帮我!
P.S。是的,我使用了@ResourceImport,因为我不知道如何将现有的 spring 配置 xml 文件重写为基于 java 的配置文件,但你可以在你的回答中告诉我如何做.
P.P.S。由于某种原因,目标目录不包含 WEB-INF 和编译后的内容文件夹。可能是这个原因,但我不知道怎么解决!
如果要进行 jar 部署,则不能使用 wepapp 文件夹。
- 将您的 JSP 放入
src/main/resources/META-INF/resources/jsp
将这些行放入您的 application.properties 文件:
spring.mvc.view.prefix=/jsp/ spring.mvc.view.suffix=.jsp
你可以看看这个项目。它还使用 Spring-Boot、jar-Deployment 和 JSP:https://github.com/synyx/urlaubsverwaltung
Spring Boot 不正式支持可执行 JAR 中的 JSP,这是 known JSP limitations. Also, Spring Boot supports JSPs in embedded Jetty as of 1.4.0.RC1 之一,之前不支持。
现在您可以使用 Spring Boot 1.4+ 和 packaging your application as an executable WAR 来解决这个问题。您将能够使用 java -jar app.war
作为常规 WAR、运行 部署您的应用程序并获得良好的开发体验 - 所有这些都使用标准 JSP。
也许您会找到解决这些限制的技巧,但请记住,那些通常依赖于 servlet 规范不支持的特定于容器的行为。所以充其量,这种行为在容器之间是不一致的——而且容器肯定有可能随时改变它们的行为。
如果您真的想将您的应用程序打包为可执行 JAR,那么最好的方法是不使用 JSP 并选择 a proper template engine。
我从 github
签出您的代码并设法部署到嵌入式 Tomcat 8.0.3
和独立 Tomcat 8.0.x
。
我将只完成嵌入式 Tomcat
而不是 Jetty
的步骤(因为我还没有完全弄清楚 Jetty
配置)。
您可以做两件事
- 将您的 webapps 复制到以下位置,不带 s,例如
/dvdexchange-spring-boot/src/main/webapp
稍微修改您的 pom.xml,例如以下
最终结果如下
-
更新:
IngeniousTom,
我无法使其在嵌入式 Jetty
中工作,这是我在努力添加大量 Maven
Jetty
jar 库后所能达到的最远点,如下所示
这实际上是一个已知问题,我不知道如何在不使用任何骇人听闻的方式的情况下解决这个问题。
如果您阅读 github
link,Spring-Boot 和 Jetty 阵营之间有很多讨论。
讨论的底线是 Spring-Boot
还 支持 Jsp
in embedded Jetty
作为他们的标准,但有计划在未来。
我的建议是不要使用 Jsp
或使用 Jetty
以外的其他内容作为您的嵌入式容器。