在 Spring Boot 应用中,src/main/resources
目录是一个特殊的类路径目录,用于存放所有的资源文件,如配置文件、静态资源等。public
、static
和templates
是此目录下常用的子目录,它们在 Spring Boot 中扮演不同的角色:
-
static
:- 用途:
static
目录用于存放静态资源,如 JavaScript、CSS、图片文件等。 - 直接访问:存放在
static
目录中的文件可以被客户端直接访问。这意味着任何人都可以通过 URL 直接请求这些文件,无需经过服务器端的任何处理。 - 位置:默认情况下,Spring Boot 会自动将
/static
、/public
、/resources
或/META-INF/resources
目录下的资源映射到应用的根路径。
- 用途:
-
public
:- 功能与
static
目录相似,也是用来存放可以直接被客户端访问的静态资源。 - 它是一个备选的标准目录,可以替代
static
目录使用。
- 功能与
-
templates
:- 用途:
templates
目录用于存放模板文件,这些文件通常是 HTML 文件,它们含有动态内容,需要通过模板引擎进行解析和渲染。 - 服务器端处理:
templates
目录中的文件不会被客户端直接访问。相反,它们必须由服务器端的模板引擎(如 Thymeleaf、Freemarker 等)处理后,生成最终的 HTML 页面返回给客户端。 - 位置:模板文件通常由控制器(Controller)中的方法返回视图名称引用,并由 Spring MVC 处理。模板引擎配置会指定模板文件的存储位置,默认是
templates
目录。
- 用途:
总结
- 访问性:
static
中的资源可以直接被 Web 浏览器请求和获取,而templates
目录中的文件则需要经过服务器处理(如填充数据、执行逻辑)才能形成最终的页面。 - 交互性:
templates
目录下的文件通常包含动态内容,需要填充数据,适用于用户界面的动态交互,而static
更多用于提供不会频繁变动的客户端代码和资源。 - 技术实现:
static
目录的处理较为简单,主要涉及静态文件的服务;templates
的处理则复杂,涉及到模板引擎的选择和配置,以及与后端数据的动态绑定。
Thymeleaf
Thymeleaf 是一种用于 Web 和独立环境的现代服务器端 Java 模板引擎。在 Spring Boot 中,它常被用来渲染 HTML。Thymeleaf 的主要特点包括:
- 自然模板: Thymeleaf 的模板语法能被浏览器正确显示,即使没有 Thymeleaf 进行渲染,也能作为静态文件正确显示。
- 集成 Spring: Thymeleaf 与 Spring 框架有良好的集成支持,特别是在使用 Spring MVC 时。
- 扩展性: 支持自定义方言和处理器,使得开发者可以根据特定需求扩展 Thymeleaf 的功能。
在使用 Thymeleaf 时,你通常会在 templates
目录下创建 .html
文件,并使用 Thymeleaf 提供的语法来编写动态内容,例如:
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Title</title>
</head>
<body>
<h1 th:text="'Hello, ' + ${name} + '!'">Hello, World!</h1>
</body>
</html>
th:text
属性将会在页面渲染时被替换成实际的值。如果 name
的值是 "John", 页面将显示 "Hello, John!"。