Thymeleaf
1.模板引擎
前端交给我们的页面是html页面,以前开发,我们需要将html转成jsp页面,jsp好处就是当我们查出一下数据转发到jsp页面以后,我们可以用jsp轻松实现数据的显示及交互等。
jsp支持非常强大的功能,包括能写java代码,SpringBoot项目首先是以jar的方式,不是war,同时我们使用的还是嵌入式的Tomcat,所以默认是不支持jsp的。
因此,SpringBoot推荐可以使用的模板引擎
模板引擎,其实jsp就是一个模板引擎,还有以前用的比较多的freemarker,包括SpringBoot推荐的Thymeleaf,模板引擎非常多,但他们的思想是一样的,模板引擎的思想是什么呢?
模板引擎的作用就是我们来写一个页面模板,有些值是动态的,我们写一些表达式。
这些动态的值,从哪里来?
我们在后台封装一些数据,然后把这个模板和数据交给我们模板引擎,模板引擎按照我们这个数据帮你把表达式解析,填充到我们制定的位置,把这个数据最终生成一个我们想要的内容给我们写出去,这就是我们这个模板引擎的思想。
2.引入Thymeleaf
怎么引入Thymeleaf呢?对于springboot来说,什么事都是一个start的事情。
Thymeleaf官网:https://www.thymeleaf.org/
找到对应的pom依赖,点击进入查看源码
1 <!--thymeleaf--> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
Maven会自动下载jar包
3. thymeleaf分析
引入thymeleaf后,按照SpringBoot的自动配置原理,我们看一下Thymeleaf的自动配置规则。
Thymeleaf自动配置类:ThymeleafProperties
idea查找的快捷键ctrl+shift+R
1 @ConfigurationProperties(prefix = "spring.thymeleaf") 2 public class ThymeleafProperties { 3 private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8; 4 public static final String DEFAULT_PREFIX = "classpath:/templates/"; 5 public static final String DEFAULT_SUFFIX = ".html"; 6 private boolean checkTemplate = true; 7 private boolean checkTemplateLocation = true; 8 private String prefix = DEFAULT_PREFIX; 9 private String suffix = DEFAULT_SUFFIX; 10 private String mode = "HTML"; 11 private Charset encoding = DEFAULT_ENCODING; 12 private boolean cache = true; 13 ...... 14 }
我们看到默认的前缀和后缀
我们只需要把我们的html页面放到类路径下的templates下,thymeleaf就可以帮我们自动渲染了。
使用thymeleaf不需要什么配置,只需要将他放到指定的文件夹下即可
测试:
1.编写一个TestController
1 @Controller 2 public class TestController { 3 @RequestMapping("/test1") 4 public String test1(){ 5 return "test"; 6 } 7 }
2.编写一个测试页面,test.html放在templates目录下
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <h1>测试页面</h1> 9 </body> 10 </html>
3.启动项目请求测试
4.Thymeleaf语法学习
要学习语法,需要参考官网文档
Thymeleaf官网:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#a-website-for-a-grocery
一个简单的联系,在页面中展示我们查到的数据
待补充。。。。