Spring引导找不到jsp视图

大家好! 我完成了基于Spring的 Web应用程序,然后开始将其重建为Spring启动,因为它使我能够使用嵌入式jetty 。 目前我遇到了一些问题 – Spring启动无法找到(解析)jsp视图。 所以,当我运行我的应用程序时 – 我在浏览器中收到错误:

错误

这是我在github上的web应用程序 – 所以你可以查看文件并找到原因。

请帮帮我!

PS是的我使用了@ResourceImport,因为我不知道如何将现有的spring配置xml文件重写为基于java的配置文件,但是你可以告诉我如何在你的答案中做到这一点。

PPS由于某种原因,目标目录在编译后不包含WEB-INF及其内容文件夹。 可能这是原因,但我不知道如何解决它!

目标

我从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库后可以达到的最远点,如下所示

在此处输入图像描述

这实际上是一个已知问题,我不知道如何在没有任何hackish方式的情况下解决这个问题。

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

讨论的底线是Spring-Boot 支持嵌入式Jetty中的Jsp作为其标准,但未来有计划。

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

Spring Boot没有正式支持可执行JAR中的JSP,这是已知的JSP限制之一 。 此外, 从1.4.0.RC1开始 , Spring Boot支持嵌入式Jetty中的JSP ,而不是之前。

现在,您可以使用Spring Boot 1.4+并将应用程序打包为可执行WAR来解决此问题。 您将能够将您的应用程序部署为常规WAR,使用java -jar app.war运行它并具有良好的开发经验 – 所有这些都使用标准JSP。

也许您会找到解决这些限制的技巧,但请记住,那些通常依赖于servlet规范不支持的特定于容器的行为。 所以充其量,这种行为在容器之间是不一致的 – 容器当然可能随时改变它们的行为。

如果您真的想将应用程序打包为可执行JAR,那么最好的方法是不使用JSP并选择合适的模板引擎 。

如果要进行jar-Deployment,则无法使用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