当前位置: 首页 > 知识库问答 >
问题:

Spring Boot期望JSP在哪里

狄彬彬
2023-03-14

我编写本教程是为了将一个旧的jsp应用程序迁移到spring boot。但我用了格拉德而不是梅文。在IntelliJ Idea中,所有事情都按表达式进行。现在我想为这个应用程序创建一个docker容器,因此我使用了jib gradle插件。但是当我运行这个docker容器时,我得到了一个错误:“出现了一个意外错误(type=notfound,status=404)。/WEB-INF/jsp/index.jsp”。docker容器中确实缺少/WEB-INF/jsp目录。所以我通过jib extraDirectories参数添加了它,但仍然没有找到它。那么Spring在哪里寻找这些文件呢?我必须把文件放在哪里?是否可以使用属性更改此目录?

共有2个答案

高化
2023-03-14

经过几个小时的调试,我发现可以通过设置ServletWebServerFactory的文档根来设置jsp文件的目录。

@Configuration
public class TomcatConfig {

  @Value("${tomcat.server.document-root}")
  String documentRoot;

  @Bean
  public ServletWebServerFactory servletContainer() {
    TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
    File documentRootFile = new File(documentRoot);
    tomcat.setDocumentRoot(documentRootFile);
    return tomcat;
  }
}

这为我解决了问题。

宋高谊
2023-03-14

Spring的医生说

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

  • 使用Jetty和Tomcat,如果您使用war打包,它应该可以工作。...使用可执行jar时不支持JSP。

您也可以在此SO问题中获取更多信息。

我查看了您提供的教程链接,我看到项目包装是jar而不是war。可能您需要通过应用Gradle WAR插件将项目转换为war项目。

 类似资料:
  • 我正在尝试模拟测试中的系统使用的外部(REST)服务器。我选择MockServer(http://www.mock-server.com/)来模拟外部REST服务器。 萨克斯, R

  • 我使用一个带有Datanucleus JPA提供程序的maven原型项目创建了一个Google app engine项目,基本上遵循Google app engine文档。 现在,我必须将该项目集成到Android studio中,并希望将构建脚本迁移到Gradle中。我将所有依赖项从复制到中,项目构建良好。然而,所有访问Google datastore的测试都失败了。 在测试输出期间,我得到以下

  • 我试图获取json对象,它告诉我它需要一个值,尽管我在r.json()中定义了json的路径。还有,当我做r.headers[内容类型]时,给我文本/html;字符集=ISO-8859-1。。。谢谢大家抽出时间

  • GHC有很多可以执行的优化,但我不知道它们都是什么,也不知道它们在什么情况下执行的可能性有多大。 我的问题是:我可以期望它每次应用什么转换,或者几乎如此?如果我看一段经常执行(评估)的代码,我的第一个想法是“嗯,也许我应该优化它”,在这种情况下,我的第二个想法应该是“不要想它,GHC得到了这个”? 我在读《流融合:从列表到流再到什么都没有》这篇论文,他们使用的将列表处理改写成另一种形式的技术,GH

  • 我在Windows上使用libspotify 12.1.51。虽然它基本上能按预期工作,但我对sp_offline_sync_status有一些困难 (是Windows上无符号__int64的typedef,否则uint64_t。在C(不是C)中构建时,如果bool没有其他定义,它是无符号char的typedef。) 当我调用时,只有似乎有正确的数据,其余的都是垃圾。然而,如果我编辑头文件以包含,

  • 问题内容: 在部署我的应用程序期间,发生了该异常。我的应用程序中有很多课程,我不知道必须放置在哪里以及该异常意味着什么。我正在使用Hibernate 4.1和JBoss AS 7.1 问题答案: 批注用于定义包含id的Class。即通常用于定义复合键的情况。即包含多个属性的键组合。如果是这样,那么我们将这样做。请看下面的示例。我们定义一个类,并使用来定义各种Id IdClass`。 范例: 希望这