Spring 启动 CSS 剥离

Spring Boot CSS stripped

我的文件夹结构

ProjectName
 src/main/java
 src/main/resources
    static
       css
         styles.css
         main.css
       js
       ...
    templates

我所有的 html 文件都在文件夹 templates

我的HTML文件头

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
...
<link rel="stylesheet" href="../static/css/main.css" />
<link rel="stylesheet" href="../static/css/styles.css" />

我的 Java 类

中没有 EnableWebMvc

当我 运行 将其作为 jar 时,页面正常显示,但所有 CSS 都被删除了。它只是显示为纯文本。我在不同的浏览器中尝试过,结果相同。我做错了什么?

如果您检查浏览器控制台(例如在 Chrome 中),我猜您会看到 CSS 文件未找到 HTTP 404。问题在于您 URL 到 CSS 的路径。

要点在于,文件 (.html, .css) 在 JAR 文件(或源代码)中的存储方式与由HTTP 服务器。据我所知,您正在使用 thymeleafs,因此(我再次猜测),您的 HTML 模板文件可以用于不同类型的 URLs(如 //book/23 等),因此我不建议使用相对 URL 来处理 CSS 文件(就像你所做的那样)。

由于 CSS 文件存储在 static 目录中,它们应该由 spring boot for /** 模式自动提供,即。如果你不使用任何上下文路径,你的 CSS 应该有以下 URL: /css/main.css.

如果你想非常正确并准备好你的 Web 应用程序可以在不同的 "context" 中,你应该使用类似 <link rel="stylesheet" th:href="@{/css/main.css}">

的东西