网站首页 > 技术文章 正文
在web大行其道的今天,有了接口之后最好的展示方式就是用页面。而Spring Boot中对于模板页有良好的支持。下面我们来介绍Spring Boot推荐的模板 thymeleaf。
- 首先在pom.xml中加入依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
需要注意,为了让thymeleaf识别一个模板,你必须使用下面的html头标签:
<html xmlns:th="http://www.thymeleaf.org"> ... </html>
- 引入javascript
<script th:inline="javascript"> var article = [[${article}]]; ... </script>
首先我们在resources目录下新建templates文件夹和static文件夹。
关于这两个文件夹,在Spring Boot中,静态资源默认是访问resources下的static文件夹,动态html资源默认是访问resourcess目录下的templates。当然这两个默认路径可以再application.yml中进行配置,一般我们都使用默认路径。由于我们需要的是一个由Spring Boot生成的动态模板页,因此在templates下新建demo1.html。
由于动态模板页需要先经过后台接口,然后才返回一个html页面到前端,因此在controller文件夹下新建ThymeleafController.java。
@Controller public class ThymeleafController { @GetMapping("/thymeleaf") public String testMapper() { return "demo1"; } }
注意我们使用了@Controller而不是@RestController。具体的区别请查看Spring Boot从入门到精通-注解详解。
写了一个路径为/thymeleaf的接口,该接口直接返回了一个值为我们需要返回的html的名字的字符串。
目录结构如下:
目录结构
- 引入普通文本:th:text
<p th:text="'你好,thymeleaf~~~'"> hello world!</p>
- 引入变量: ${变量名}
- 变量名由后台传递给前端,因此需要修改接口。
@GetMapping(value = "thymeleaf") public String articleInfo(Model model) { model.addAttribute("data", "i'm a data"); User user = new User(); user.setUserId(1); user.setUserName("admin"); user.setPassword("123"); user.setPhone("110"); model.addAttribute("user", user); return "demo1"; }
在方法上新增了一个入参model,通过model传递前端需要的值。而这个“data”就是前端的变量名。
<h1 th:text="'hello,' + ${data} + '!'">测试文本!</h1> <h1 th:text="'标号:'+ ${user.userId}">id</h1>
另外也可以在JavaScript中直接使用对象接收。
- 消息表达式:#{key}
- 消息表达式允许你再模板页面上读取消息源里面的静态内容,消息源可以是配置文件,数据库等,消息配置文件实际就是一个properties文件,文件内容为key=value形式的键值对。
- 如果你使用spring boot的默认配置,那么配置文件的名称为messages.properties,他必须放在resource根目录下,这样thymeleaf才能找到。
- 消息表达式常用于加载静态文本内容,之所以把静态内容提取为消息,是为了能方便的集中管理页面上某些可能会变动的内容。
- 在resources目录下新建messages.properties文件,加入配置:
home.data: i'm other data
html上的代码:
<h1 th:text="#{home.data}">你好,这是一条消息</h1>
- 条件判断:if/unless
<p th:if="${user.userId} >= 1">用户的id大于1,于1,所以能显示这些</p> <p th:unless="${user.userName == null }">当“用户名称为空”这个条件不成立就显示, 用户名为:<span th:text="${user.userName}">用户名</span></p>
- 分支条件判断表达式:th:switch
<div th:switch="${user.userName}"> <h1><p th:case="admin">他是管理员</p></h1> <h1><p th:case="admin2">这是第二个</p></h1> <h1><p th:case="*">你是游客</p></h1> </div>
- 基本内置对象:
- ctx:上下文对象。
- vars: 上下文变量。
- locale:上下文语言环境。
- request:(只在Web上下文中)HttpServletRequest对象。
- response:(只在Web上下文中)HttpServletResponse对象。
- session:(只在Web上下文中)HttpSession对象。
- servletContext:(只在Web上下文中)ServletContext对象。
你的操作系统语言环境为: <span th:text="${#locale.language}"></span>,<span th:text="${#locale.displayCountry}"></span>,<span th:text="${#ctx.locale}"></span>
猜你喜欢
- 2024-10-21 Spring Boot中添加Thymeleaf模板 springboot 添加filter
- 2024-10-21 Spring Boot 的静态资源处理 springboot静态资源配置
- 2024-10-21 Spring Boot 系列@ControllerAdvice 拦截异常并统一处理
- 2024-10-21 Spring Boot 入门教程 | 图文讲解
- 2024-10-21 牛刀小试——五分钟入门Spring Boot
- 2024-10-21 我教你初识SpringBoot——写HelloWorld
- 2024-10-21 Springboot静态资源的访问 springboot2.0静态资源
- 2024-10-21 每日分享- springboot 微服务项目如何集成 html
- 2024-10-21 11:SpringBoot整合JavaMail实现邮件发送功能
- 2024-10-21 SpringBoot中异步请求和异步调用(看这一篇就够了)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)