【问题标题】:Spring-boot JSP is not resolvedSpring-boot JSP 未解析
【发布时间】:2019-08-14 03:47:45
【问题描述】:

我用初始化器创建了一个 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>

【问题讨论】:

标签: spring-boot


【解决方案1】:

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

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

JSP 限制

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

  • 使用 Jetty 和 Tomcat,如果您使用 war 打包,它应该可以工作。一个 当使用 java -jar 启动时,可执行的 war 将起作用,并且还可以部署到任何标准容器。使用可执行 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

【讨论】:

    猜你喜欢
    • 2018-02-10
    • 2014-08-27
    • 2014-05-11
    • 2019-09-11
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2020-10-22
    相关资源
    最近更新 更多