【问题标题】:Spring Boot MVC with angular app static content behavior?具有角度应用程序静态内容行为的 Spring Boot MVC?
【发布时间】:2016-11-06 12:33:31
【问题描述】:

我不确定这种行为会发生什么,但何时: 我在 HTML 中包含以下脚本链接

<link href='./css/style.css' rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="./js/app.js"></script>

如果我直接在任何浏览器中打开 HTML 页面,该页面不会应用 css 或 js,但它会在服务器上运行并应用链接

当我包含以下内容而不是之前的链接时

<link href='../static/css/style.css' rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../static/js/app.js"></script>

直接在浏览器中打开页面时运行,但在服务器上运行时不适用 我不知道为什么会发生这种情况

【问题讨论】:

  • 因为你不应该使用相对链接...改用绝对链接。
  • spring boot项目中的绝对链接应该怎么放在这里,部署可以吗?
  • 部署与否为什么会有所不同?
  • 这里的相对链接例如应该是什么?
  • 另外你为什么要直接打开它呢?你应该让 spring boot 为它服务。直接打开它会改变事情,使用不同的协议等。

标签: css angularjs spring spring-mvc spring-boot


【解决方案1】:

这背后的原因是因为当你在服务器上运行时,Spring boot 会将src/main/resources/static 文件夹映射到你的上下文根目录(通常是/)。

也就是说,如果你有以下结构:

src/
  main/
    resources/
      static/
        myStyle.css
      templates/
        index.html

src/main/resources/static/myStyle.csssrc/main/resources/templates/index.html 都将作为 /myStyle.css/index.html 提供。

如果您使用的是 Spring boot,您应该永远不要在您的链接/引用中包含 static/(或 templates/)部分。您应该切勿直接在浏览器中打开 HTML 页面,因为这并不反映任何真实环境。

要使其在本地工作,您应该运行 Spring boot 应用程序并通过浏览器打开该应用程序,而不仅仅是项目本身中的一些 HTML 文件。

【讨论】:

    猜你喜欢
    • 2015-05-24
    • 2014-05-18
    • 2016-01-30
    • 2017-03-01
    • 1970-01-01
    • 2022-01-02
    • 2014-05-14
    • 2018-02-10
    • 2013-06-12
    相关资源
    最近更新 更多