spring - 如何在 Spring Boot Embedded tomcat 中服务外部静态 HTML 文件?

标签 spring tomcat spring-boot

我是 Spring 框架和 Spring Boot 的新手。
我已经实现了一个非常简单的 RESTful Spring Boot Web 应用程序。
您可以在另一个问题中看到几乎完整的源代码:Spring Boot: How to externalize JDBC datasource configuration?

应用如何服务外部静态HTML、css js文件?
例如,目录结构可能如下:

MyApp\
   MyApp.jar (this is the Spring Boot app that services the static files below)
   static\
       index.htm
       images\
           logo.jpg
       js\
           main.js
           sub.js
       css\
           app.css
       part\
           main.htm
           sub.htm

我已经阅读了构建包含静态 HTML 文件的 .WAR 文件的方法,但由于即使在单个 HTML 文件修改时也需要重建和重新部署 WAR 文件,因此该方法是 Not Acceptable 。

由于我对 Spring 的了解非常有限,因此最好提供准确具体的答案。

最佳答案

我从 another of your questions 看到您真正想要的是能够从默认值更改应用程序中静态资源的路径。撇开您为什么要这样做的问题不谈,有几个可能的答案。

  • 一个是您可以提供类型为 WebMvcConfigurerAdapter 的普通 Spring MVC @Bean 并使用 addResourceHandlers() 方法添加其他路径到静态资源(请参阅 WebMvcAutoConfiguration 了解默认值)。
  • 另一种方法是使用 ConfigurableEmbeddedServletContainerFactory 功能来设置 servlet 上下文根路径。
  • 完整的“核心选项”是提供 EmbeddedServletContainerFactory 类型的 @Bean 定义,以您希望的方式设置 servlet 容器。如果您使用现有的具体实现之一,它们会扩展您已经找到的 Abstract* 类,因此它们甚至有一个名为 documentRoot 的属性的 setter。您还可以使用 EmbeddedServletContainerCustomizer 类型的 @Bean 进行许多常见操作。

关于spring - 如何在 Spring Boot Embedded tomcat 中服务外部静态 HTML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20064241/

相关文章:

spring-boot - 如何将 Spring WebClient 与 Jetty 一起使用,而不是 Netty?

java - Liquibase,本地 XSD 引用

java - Spring MVC 忽略配置的 PropertyEditor 并使用构造函数代替

java - 我们如何使用 spring security + Oauth2 客户端凭据进行服务到服务(获取身份验证 token ,然后获取资源)

java - 使用安全管理器启动 Tomcat - CentOS

java - 使用相同的端点接口(interface)发布多个 Jax-WS web 服务实现

spring-boot - Spring Boot - 在启动时启动 ActiveMQ Web 控制台

java - 通过浏览器运行服务时,config、properties 文件不会实时更新

java - 如何将 Eclipse 3.5 服务器导出到 Eclipse 3.6

java - Spring Oauth2 重定向 uri 没有改变