在Spring启动应用程序中使用自定义目录结构加载静态资源

时间:2017-09-08 18:52:33

标签: spring-mvc

我有一个spring boot应用程序,它包含下面结构中的静态资源(+表示目录,-表示文件)

+ my-app
  + src
    + resources
      + static 
       + v1
         + css
           - app.css
         - main.js
         - index.html

我有包含应用程序包的子目录。默认情况下,Spring会直接在 resources / static 目录下查找 index.html 。在这种情况下,它找不到一个。

我的index.html看起来像这样

<html>
  <head>
    <script type="text/javascript" src="main.js"></script>
    <link type="text/css" href="css/app.css"/>
  </head>
  <body>
  </body>
</html>

我们假设应用程序托管在http://myapp.com

我这里有两个问题

  1. 当我访问应用程序URL v1/index.html时,如何让Spring在我的静态资源下查找http://myapp.com

  2. 如果我通过在ViewControllerRegistry中添加一个视图控制器来加载v1/index.html,它会在v1目录下加载index.html,但在index.html(main.js&amp ;; CSS / app.css)。 如何告诉Spring从resources/static/v1而不是resources/static获取所有资源。

1 个答案:

答案 0 :(得分:0)

我在STS中创建了一个基本的Spring Boot项目,并没有任何依赖项。我使用了上面的html示例并将其修改为:

<html>
  <head>
    <script type="text/javascript" src="main.js"></script>
    <link rel="stylesheet" type="text/css" href="/v1/css/app.css"/>
  </head>
  <body>
    <h1>Hello World</h1>
  </body>
</html>

我创建了目录/src/resources/static/v1/src/resources/static/v1/css,将index.html文件放在../v1目录中。 app.css文件包含以下内容用于测试目的:

h1 {
    color:red;
}

这没有对Spring进行任何配置更改。如果您正在使用Thymeleaf,JTwig,JSP ...您可能需要为这些模板引擎添加资源处理程序或调整设置,我无法发表评论,因为我没有使用基于您的示例的模板引擎。 /static目录中的任何内容都将在没有/static的情况下被引用。

我希望有所帮助,如果确实如此,请将答案标记为正确答案。