当前位置: 首页 > news >正文

在SpringBoot中访问 static 与 templates 目录下的内容

目录

    • 步骤一:添加 Thymeleaf 依赖 (处理 Templates 目录)
    • 步骤二:配置静态资源路径 (可选但建议了解)
    • 步骤三:访问不同目录下的 HTML 文件
      • 访问 `static` 目录下的 HTML 文件
      • 访问 `templates` 目录下的 HTML 文件
    • 总结

在使用 Spring Boot 开发 Web 应用时,我们经常需要向用户展示 HTML 页面。这些 HTML 文件通常存放在 src/main/resources/staticsrc/main/resources/templates 目录下。然而,这两个目录下的文件访问方式有所不同。本篇博文将详细介绍如何配置并访问这两个目录中的 HTML 文件。

步骤一:添加 Thymeleaf 依赖 (处理 Templates 目录)

templates 目录通常用于存放视图模板,这些模板往往需要后端数据渲染。Spring Boot 推荐使用模板引擎来处理,Thymeleaf 就是其中一个流行的选择。如果你的项目需要处理 templates 下的 HTML,首先要确保添加了 Thymeleaf 依赖。

方法一:修改 pom.xml

在你的 Maven 项目的 pom.xml 文件中的 <dependencies> 部分添加以下依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

方法二:使用 Spring Initializr

如果你是通过 Spring Initializr (https://start.spring.io/) 创建项目,可以直接在依赖项(Dependencies)部分搜索并勾选 Thymeleaf

添加此依赖后,Spring Boot 会自动配置 Thymeleaf 模板引擎。

步骤二:配置静态资源路径 (可选但建议了解)

Spring Boot 默认会从几个标准位置加载静态资源,包括 classpath:/static/。通常情况下,默认配置已经够用。但如果你想明确指定或自定义静态资源的查找路径,可以在 application.propertiesapplication.yml 文件中进行配置。

application.properties 中配置:

# 指定静态资源的位置,多个路径用逗号分隔
spring.web.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

application.yml 中配置:

spring:web:resources:# 指定静态资源的位置列表static-locations:- classpath:/META-INF/resources/- classpath:/resources/- classpath:/static/- classpath:/public/

这个配置告诉 Spring Boot 在应用的类路径(classpath)下的这些目录中查找静态文件(如 HTML, CSS, JavaScript, 图片等)。

步骤三:访问不同目录下的 HTML 文件

访问 static 目录下的 HTML 文件

放置在 src/main/resources/static 目录下的文件被视为纯静态资源。访问这些文件非常简单直接:

  • 访问方式: 启动应用后,在浏览器中通过 根路径/文件名 的方式即可访问。
  • 示例: 如果在 static 目录下有一个 about.html 文件,你可以通过访问 http://<你的服务器地址>:<端口号>/about.html 来直接查看它。

访问 templates 目录下的 HTML 文件

src/main/resources/templates 目录主要用于存放需要后端处理和渲染的视图模板。

  • 直接访问限制: 通常情况下,除了 templates/index.html 可能在特定配置下作为应用的默认欢迎页(通过访问根路径 / 显示)之外,该目录下的其他 HTML 文件不能static 目录下的文件那样通过 根路径/文件名 直接访问。
  • 通过 Controller 访问(标准方式): 访问 templates 目录下的 HTML 文件(例如 index2.html),需要创建一个 Spring MVC Controller 来处理特定的 URL 请求,并返回对应的视图名称。

示例 Controller 代码:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller // 声明这是一个 Spring MVC 控制器
public class FirstController { // 类名建议使用大驼峰命名法// 将 HTTP GET 请求 "/testConnection" 映射到这个 hello 方法@RequestMapping("/testConnection")public String hello() {// 返回字符串 "index2.html"// 当使用 Thymeleaf 时,Spring Boot 会查找 /src/main/resources/templates/ 目录下的 index2.html 文件// 并使用 Thymeleaf 引擎进行渲染后返回给浏览器// 注意:更常见的 Thymeleaf 用法是只返回逻辑视图名 "index2",// Thymeleaf 会自动根据配置添加前缀(classpath:/templates/)和后缀(.html)。// 但为了与原始说明保持一致,这里我们返回完整的文件名。return "index2.html";}
}

工作流程:

  1. 用户在浏览器中访问 http://<你的服务器地址>:<端口号>/testConnection
  2. Spring Boot 侦测到这个请求,并根据 @RequestMapping("/testConnection") 注解,将请求分发给 FirstControllerhello() 方法。
  3. hello() 方法执行并返回字符串 "index2.html"
  4. 由于项目中引入了 spring-boot-starter-thymeleaf,Spring Boot 的视图解析器会识别这个字符串为视图模板的名称。
  5. 视图解析器(结合 Thymeleaf)会在配置的模板路径(默认为 classpath:/templates/)下查找名为 index2.html 的文件。
  6. 找到模板文件后,Thymeleaf 引擎会对其进行处理(如果模板中包含动态内容指令),并将最终渲染生成的 HTML 内容作为响应返回给浏览器。

总结

  • static 目录: 用于存放纯静态资源(HTML, CSS, JS, 图片等)。默认配置下,可以通过 /<文件名> 直接在浏览器中访问。
  • templates 目录: 用于存放视图模板(通常是 HTML 文件,可能包含动态内容)。一般需要通过 Controller 映射 URL 请求,返回逻辑视图名,由模板引擎(如 Thymeleaf)渲染后才能访问。index.html 有时可作为特殊情况下的欢迎页面。

希望这篇博文能帮助你理解和正确访问 Spring Boot 项目中不同目录下的 HTML 文件!


参考文档:

  1. 龙城桥少的 SpringBoot 如何访问templates目录下的html页面

相关文章:

  • 在 MySQL 单表存储 500 万数据的场景下,如何设计读取
  • 冲刺高分!挑战7天一篇nhanes机器学习SCI!DAY1-7
  • 1023 Have Fun with Numbers
  • Python基础语法——常量变量
  • 【Linux】进程的程序替换、自定义shell命令行解释器
  • 批量将多个文件按扩展名分类到不同文件夹
  • 如何实现动态请求地址(baseURL)
  • 数据库案例1--视图和索引
  • lvs + keepalived + dns 高可用
  • 嵌入式开发
  • 实时数据同步方案
  • 网络安全·第四天·扫描工具Nmap的运用
  • libaom 码率控制实验:从理论到实践的深度探索
  • 水污染治理(生物膜+机器学习)
  • Android离屏渲染
  • ubuntu 常用指令
  • leetcode298.生命游戏
  • E-trace for risc-v
  • 机器视觉检测Pin针歪斜应用
  • 编写了一个专门供强化学习玩的贪吃蛇小游戏,可以作为后续学习的playgraound
  • 全国首家由司法行政部门赋码登记的商事调解组织落户上海
  • 大理州工业投资(集团)有限公司党委副书记、副总经理赵云接受审查调查
  • 吉林省文联党组书记、主席赵明接受纪律审查和监察调查
  • 《黄雀》:从“大案猎奇”向“民生写实”转变
  • 俄最高法宣布解除针对阿富汗塔利班的禁令
  • 市场监管总局召开企业公平竞争座谈会