Spring Boot JSP无法解决

时间:2019-03-23 07:54:22

标签: spring-boot

我用初始化程序创建了一个Spring Boot应用程序。

spring boot版本是2.1.3。释放。

问题是我想在启动应用程序中包含JSP,但是没有生成任何webapp文件夹。我在生成应用程序时选择了Spring MVC。

我在src / main / resources / templates文件夹中创建了一个jsp,并尝试在application.properties之类的各种配置中加载该文件,

spring.mvc.view.prefix=/WEB-INF/templates/
spring.mvc.view.suffix=.jsp

spring.mvc.view.prefix=/WEB-INF/classes/templates/
spring.mvc.view.suffix=.jsp 

spring.mvc.view.prefix=/templates/
spring.mvc.view.suffix=.jsp

但是它们都不起作用。我收到404 whitelabel错误。

我尝试检查spring引用,但找不到与模板文件夹相关的任何变更日志。

我还尝试在pom.xml中添加以下依赖项

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <scope>provided</scope>
    </dependency>

1 个答案:

答案 0 :(得分:0)

尝试更改tomcat-embed-jasper中的以下内容

Remove <scope>provided</scope> OR change the scope to compile <scope>compile</scope>

JSP限制

运行使用嵌入式servlet容器(并打包为可执行归档文件)的Spring Boot应用程序时,JSP支持存在一些限制。

  • 对于Jetty和Tomcat,如果使用战争包装,它应该可以工作。一个 与java -jar一起启动时,可执行文件战争将起作用,并且也可部署到任何标准容器中。使用可执行jar时,不支持JSP。
  • Undertow不支持JSP。
  • 创建自定义error.jsp页面不会覆盖默认视图
    用于错误处理。应改用自定义错误页面。

范围

compile这是默认范围,如果未指定则使用。编译依赖项在项目的所有类路径中均可用。此外,这些依赖项会传播到相关项目中。

provided这与编译非常相似,但是表明您希望JDK或容器在运行时提供依赖项。例如,在为Java Enterprise Edition构建Web应用程序时,您将对Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为Web容器提供了这些类。此作用域仅在编译和测试类路径上可用,并且不可传递。

runtime此作用域表明依赖性不是编译所必需的,而是执行所必需的。它在运行时和测试类路径中,而不在编译类路径中。

JSP Limitations Spring Boot JSP 404