21.2.3 添加静态内容

正常来讲,在编写 Spring 应用时,我会尽量避免讨论样式和图片。当然,这些内容能够在很大程度上让各种应用(包括 Spring 应用)变得更加美观,令用户赏心悦目。但是,对于编写服务器端的 Spring 代码来说,这些静态内容就没有那么重要了。

但是,在 Spring Boot 中,有必要讨论一下它是如何处理静态内容的。当采用 Spring Boot 的 Web 自动配置来定义 Spring MVC bean 时,这些 bean 中会包含一个资源处理器(resource handler),它会将 “/**” 映射到几个资源路径中。这些资源路径包括(相对于类路径的根):

  • /META-INF/resources/

  • /resources/

  • /static/

  • /public/

在传统的基于 Maven/Gradle 构建的项目中,我们通常会将静态内容放在 “src/main/webapp” 目录下,这样在构建所生成的 WAR 文件里面,这些内容就会位于 WAR 文件的根目录下。如果使用 Spring Boot 构建 WAR 文件的话,这依然是可选的方案。但是,我们也可以将静态内容放在资源处理器所映射的上述四个路径下。

所以,为了满足 Thymeleaf 模板对 “/style.css” 文件的引用,我们需要创建一个名为 style.css 文件,并将其放到如下所示的某一个位置中:

  • /META-INF/resources/style.css

  • /resources/style.css

  • /static/style.css

  • /public/style.css

具体的选择完全取决于你,我倾向于将静态内容放到 “/public” 中,不过这四个可选方案是等价的。

尽管 style.css 文件的内容与讨论无关,但是如下这个简单的样式表能够让应用看上去更加整洁:

body {
  backgroud-color: #eeeeee;
  font-family: sans-serif;
}

label {
  display: inline-block;
  width: 120px;
  text-align: right;
}

不管你是否相信,对于这个简单的 Contacts 应用来说,我们已经完成了超过一半的任务!Web 层全部完成了,接下来我们需要创建 ContactRepository,用来处理 Contact 对象的持久化。

Last updated