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

我可以使用spring-boot-starter-tomcat而不使用spring-boot-starter-web提供静态内容吗?

杨曜瑞
2023-03-14

换句话说,假设我从Spring提供的spring-boot-sample-jersey项目开始。我要求Jersey web服务应答对根地址(/)的调用。如何添加一些静态内容(HTML、CSS、JS),以便从名为/swagger的子目录提供服务?

共有1个答案

阎功
2023-03-14

因此默认情况下,默认servlet(提供静态内容)是注册的。但它将只使用搜索特定路径作为文档根。我不得不通过源代码挖掘最终找到它。如果在AbstractembeddedServletContainerFactory中查看,您将看到

private static final String[] COMMON_DOC_ROOTS = {
        "src/main/webapp", "public", "static" };

如果我们不显式设置文档根,则以上三个是将要搜索的路径。因此,第一个发现存在的目录将被用作文档根目录。我已经证实了所有这些工作。

如果要设置不同的目录,可以使用定制器bean

@Bean
public EmbeddedServletContainerCustomizer tomcatCustomizer() {
    return new EmbeddedServletContainerCustomizer() {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            container.setDocumentRoot(new File("src/main/resources/static"));
        }
    };
}
 类似资料:
  • 我正在努力学习spring boot,我注意到有两种选择。 > spring-boot-starter-web-根据文档,它支持全栈web开发,包括Tomcat和web-mvc spring-Boot-Starter-Tomcat 既然#1支持Tomcat,为什么要使用#2呢? 有什么不同? 谢谢

  • 我想使用spring-boot-starter,但这意味着我必须使用“spring-boot-starter-parent”pom,而不能使用公司广泛使用的root pom。

  • 问题内容: 我无法让Spring-boot项目提供静态内容。 我已经放在一个命名的文件夹下。在其中,我有一个名为的文件夹。当我打包应用程序并运行它时,它找不到我放在该文件夹中的图像。 我试图把静态文件中,并但没有任何工程。 如果我我可以看到文件在正确文件夹的jar中:例如,但是调用:http://localhost:8080/images/head.png,我得到的只是一个404 有什么想法为什么

  • 引入 Maven 依赖 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId> <version>${shardingsphere.version}</version> </d

  • 引入 Maven 依赖 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId> <version>${shardingsphere.version}</version> </d

  • 引入 Maven 依赖 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId> <version>${shardingsphere.version}</version> </d