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 文件夹。

  1. 将您的 JSP 放入 src/main/resources/META-INF/resources/jsp
  2. 将这些行放入您的 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 配置)。

您可以做两件事

  1. 将您的 webapps 复制到以下位置,不带 s,例如/dvdexchange-spring-boot/src/main/webapp

  1. 稍微修改您的 pom.xml,例如以下

  2. 最终结果如下

-

更新:

IngeniousTom,

我无法使其在嵌入式 Jetty 中工作,这是我在努力添加大量 Maven Jetty jar 库后所能达到的最远点,如下所示

这实际上是一个已知问题,我不知道如何在不使用任何骇人听闻的方式的情况下解决这个问题。

如果您阅读 github link,Spring-Boot 和 Jetty 阵营之间有很多讨论。

讨论的底线是 Spring-Boot 支持 Jsp in embedded Jetty 作为他们的标准,但有计划在未来。

我的建议是不要使用 Jsp 或使用 Jetty 以外的其他内容作为您的嵌入式容器。