利用 SpringBoot+Thymeleaf 模板引擎进行 Web 开辟

半亩花草  论坛元老 | 2025-2-13 03:44:36 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1854|帖子 1854|积分 5562

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目录
一、什么是 Thymeleaf 模板引擎
二、Thymeleaf 模板引擎的 Maven 坐标
三、设置 Thymeleaf
四、访问页面
五、访问静态资源
六、Thymeleaf 利用示例
七、Thymeleaf 常用属性


前言

        在现代 Web 开辟中,模板引擎被广泛用于将动态内容渲染到静态页面中。Thymeleaf 是一种流行的模板引擎,特殊适用于 Spring Boot 项目。它能够在服务器端渲染 HTML 页面,同时支持与业务逻辑分离的开辟模式,进步了开辟效率。
一、什么是 Thymeleaf 模板引擎

        模板引擎主要用于解决前端体现和后端业务数据的分离。通过模板引擎,可以将动态数据填充到静态页面中,如 HTML 或 XML 格式,从而实现视图与数据的分离。这样,不仅提升了开辟效率,还使得代码更易于重用,保持了精良的设计模式。

二、Thymeleaf 模板引擎的 Maven 坐标

在 Spring Boot 项目中利用 Thymeleaf,我们必要在 pom.xml 文件中添加以下 Maven 依赖:
  1. <dependency>
  2.     <groupId>org.springframework.boot</groupId>
  3.     <artifactId>spring-boot-starter-thymeleaf</artifactId>
  4. </dependency>
  5. <dependency>
  6.     <groupId>net.sourceforge.nekohtml</groupId>
  7.     <artifactId>nekohtml</artifactId>
  8.     <version>1.9.22</version>
  9. </dependency>
复制代码
三、设置 Thymeleaf

在 application.yml 或 application.properties 文件中,我们可以进行一些常见的设置来定制 Thymeleaf 的举动:
  1. spring:
  2.   thymeleaf:
  3.     cache: false  # 关闭页面缓存,便于开发时查看更改
  4.     encoding: UTF-8  # 设置模板编码
  5.     prefix: classpath:/templates/  # 模板文件所在的目录
  6.     suffix: .html  # 模板文件后缀
  7.     mode: HTML5  # 设置模板模式为 HTML5
复制代码
四、访问页面


在 Spring Boot 中,我们通过 Controller 层来映射请求和返回视图。以下是一个基本的 Controller 示例:
  1. import org.springframework.stereotype.Controller;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. @Controller
  4. public class IndexController {
  5.     @RequestMapping("/")
  6.     public String index(){
  7.         return "index";  // 返回模板名称,Thymeleaf 会根据配置寻找 templates/index.html
  8.     }
  9. }
复制代码
  
五、访问静态资源


在 Spring Boot 中,我们可以通过设置来访问静态资源(如 CSS、JS 文件、图片等)。以下是如何在 application.yml 文件中设置静态资源的访问路径:
  1. spring:
  2.   mvc:
  3.     static-path-pattern: /static/**
复制代码
在 HTML 页面中引用静态资源时,可以利用相对路径:
  1. <link rel="stylesheet" href="../static/css/mystyle.css"/>
复制代码
此外,当访问页面时,大概会碰到缺少图标(如 favicon.ico)的题目,报以下错误:

在页面头部参加以下代码来解决:
  1. <link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/>
复制代码
 
六、Thymeleaf 利用示例

在 Java 控制器中,我们可以通过 Model 或 ModelMap 向 Thymeleaf 模板传递数据。以下是一个基本的示例,展示了如何向模板传递一个字符串并体现在 HTML 页面中:
Controller 层

  1. @RequestMapping("/hello")
  2. public String hello(Model model){
  3.     model.addAttribute("msg", "Hello");
  4.     return "hello";  // 返回模板名称 "hello.html"
  5. }
复制代码
HTML 模板(hello.html)

  1. <!DOCTYPE html>
  2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
  3. <body>
  4.     <h1>Hello</h1>
  5.     <div th:text="${msg}"></div>  <!-- 显示 "Hello" -->
  6. </body>
  7. </html>
复制代码
七、Thymeleaf 常用属性

Thymeleaf 提供了很多属性来简化 HTML 内容的渲染,以下是一些常用的属性和示例:
1. th:text 和 th:utext



  • th:text:设置元素的文本内容,并会自动转义 HTML 标签。
  • th:utext:设置元素的文本内容,但不转义 HTML 标签。
示例:

  1. @RequestMapping("thymeleaf")
  2. public String thymeleaf(ModelMap map){
  3.     map.put("thText", "th:text设置文本内容 <b>加粗</b>");
  4.     map.put("thUText", "th:utext 设置文本内容 <b>加粗</b>");
  5.     map.put("thValue", "thValue 设置当前元素的value值");
  6.     return "thymeleaf";
  7. }
复制代码
HTML 模板(thymeleaf.html)

  1. <p th:text="${thText}"></p>  <!-- 输出 "th:text设置文本内容 <b>加粗</b>" -->
  2. <p th:utext="${thUText}"></p>  <!-- 输出 "th:utext 设置文本内容 <b>加粗</b>",<b>加粗</b>会被渲染为加粗文本 -->
  3. <input type="text" th:value="${thValue}">  <!-- 设置输入框的默认值 -->
复制代码
2. th:each(循环)



  • th:each 用于遍历集合,并动态渲染每一项。
示例:

  1. @RequestMapping("/thymeleaf")
  2. public String listUser(Model model) {
  3.     List<Person> userList = new ArrayList<>();
  4.     for (int i = 0; i < 10; i++) {
  5.         userList.add(new Person(i, "张三" + i, 20 + i, '男'));
  6.     }
  7.     model.addAttribute("users", userList);
  8.     return "thymeleaf";
  9. }
复制代码
HTML 模板(thymeleaf.html)

  1. <div>
  2.     <ul>
  3.         <li th:each="user : ${users}">
  4.             <span th:text="${user.id}"></span>-
  5.             <span th:text="${user.name}"></span>-
  6.             <span th:text="${user.age}"></span>-
  7.             <span th:text="${user.sex}"></span>
  8.         </li>
  9.     </ul>
  10. </div>
复制代码
3. th:if(条件判定)



  • th:if 用于根据条件渲染元素。
示例:

  1. @RequestMapping("/thymeleaf")
  2. public String listUser(Model model) {
  3.     model.addAttribute("size", 3);
  4.     return "thymeleaf";
  5. }
复制代码
HTML 模板(thymeleaf.html)

  1. <div th:if="${size} eq 3">
  2.   <div>你好</div>
  3. </div>
复制代码
Thymeleaf 还支持多种条件判定,如 eq(等于)、gt(大于)、lt(小于)等运算符。
总结

        通过本文,我们了解到 Thymeleaf 的基本利用方法和常勤奋能,包括如何集成到 Spring Boot 项目中,如何在模板中渲染动态数据,以及如何利用 Thymeleaf 提供的多种标签进行页面渲染。Thymeleaf 提供了一种简洁且强大的方式来处理前端页面渲染,尤其适合与 Spring Boot 框架联合利用。
希望本文章对你深入理解 Thymeleaf 模板引擎有所帮助。接待随时交换!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

半亩花草

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表