经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring Boot » 查看文章
Thymeleaf 入门
来源:cnblogs  作者:gdjlc  时间:2019/10/11 9:25:41  对本文有异议

Thymeleaf是一个表现层的模板引擎,一般被使用在Web环境中。
Thymeleaf支持多种模板类型:HTML、XML、JavaScript、CSS和普通文本等,默认提供了6种模板处理模式:HTML、XML、TEXT、JAVASCRIPT 、CSS和RAW。最后一个RAW表示不会对模板进行处理。

开发环境:IntelliJ IDEA 2019.2.2
Spring Boot版本:2.1.8

新建一个名称为demo的Spring Boot项目。
pom.xml加入Thymeleaf依赖:

  1. <dependency>
  2. <groupId>org.thymeleaf</groupId>
  3. <artifactId>thymeleaf</artifactId>
  4. <version>3.0.11.RELEASE</version>
  5. </dependency>

一、处理HTML

新建一个类HtmlTest.java

  1. package com.example.demo;
  2. import org.thymeleaf.TemplateEngine;
  3. import org.thymeleaf.context.Context;
  4. public class HtmlTest {
  5. public static void main(String[] args){
  6. TemplateEngine templateEngine = new TemplateEngine();
  7. Context ctx = new Context();
  8. String html = "<input type='' th:value='lc' />";
  9. String result = templateEngine.process(html, ctx);
  10. System.out.println(result);
  11. }
  12. }

右键Run 'XmlTest.main()',控制台输出:

  1. <input type='' value='lc' />

根据输出可知,TemplateEngine类会将含有Thymeleaf逻辑的HTML代码转换成纯HTML输出,这就是模板引擎的作用。

二、更换模板解析器

默认情况下,模板处理模式为HTML,可以设置不同的解析器。
新建一个类XmlTest.java

  1. package com.example.demo;
  2. import org.thymeleaf.TemplateEngine;
  3. import org.thymeleaf.context.Context;
  4. import org.thymeleaf.templatemode.TemplateMode;
  5. import org.thymeleaf.templateresolver.StringTemplateResolver;
  6. public class XmlTest {
  7. public static void main(String[] args){
  8. TemplateEngine templateEngine = new TemplateEngine();
  9. //新建模板解析器
  10. StringTemplateResolver resolver = new StringTemplateResolver();
  11. //设置模板模式为XML
  12. resolver.setTemplateMode(TemplateMode.XML);
  13. //将解析器设置到引擎实例中
  14. templateEngine.setTemplateResolver(resolver);
  15. Context ctx = new Context();
  16. String xml = "<bean id=\"bean1\" th:attr='class=com.example.demo'></bean>";
  17. String result = templateEngine.process(xml, ctx);
  18. System.out.println(result);
  19. }
  20. }

右键Run 'HtmlTest.main()',控制台输出:

  1. <bean id="bean1" class="com.example.demo"></bean>

三、处理资源文件

可以为模板引擎设置资源解析器,让它去找文件进行处理。

1、在src/main/resources下新建文件index.html,只保留下面一行代码

  1. <input type='' th:value='lc' />

2、新建一个类 ClassLoaderTest.java

  1. package com.example.demo;
  2. import org.thymeleaf.TemplateEngine;
  3. import org.thymeleaf.context.Context;
  4. import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
  5. public class ClassLoaderTest {
  6. public static void main(String[] args) {
  7. TemplateEngine templateEngine = new TemplateEngine();
  8. //创建解析器
  9. ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
  10. //将解析器设置到引擎实例中
  11. templateEngine.setTemplateResolver(resolver);
  12. //处理classpath下的index.html
  13. String result = templateEngine.process("index.html", new Context());
  14. System.out.println(result);
  15. }
  16. }

右键Run 'ClassLoaderTest.main()',控制台输出:

  1. <input type='' value='lc' />

四、变量处理

可以通过Context实例设置变量值。

1、在src/main/resources下新建文件var.html

  1. <input type='' th:value='${userName}' />

2、新建一个类 VarTest.java

  1. package com.example.demo;
  2. import org.thymeleaf.TemplateEngine;
  3. import org.thymeleaf.context.Context;
  4. import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
  5. public class VarTest {
  6. public static void main(String[] args) {
  7. TemplateEngine templateEngine = new TemplateEngine();
  8. ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
  9. templateEngine.setTemplateResolver(resolver);
  10. Context ctx = new Context();
  11. ctx.setVariable("userName", "lc");
  12. String result = templateEngine.process("var.html", ctx);
  13. System.out.println(result);
  14. }
  15. }

右键Run 'VarTest.main()',控制台输出:

  1. <input type='' value='lc' />

五、遍历集合

1、在src/main/resources下新建文件iteration.html

  1. <table>
  2. <tr th:each="data : ${datas}">
  3. <td th:text="${data}">姓名</td>
  4. </tr>
  5. </table>

2、新建一个类 IterationTest.java

  1. package com.example.demo;
  2. import org.thymeleaf.TemplateEngine;
  3. import org.thymeleaf.context.Context;
  4. import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. public class IterationTest {
  8. public static void main(String[] args) {
  9. TemplateEngine templateEngine = new TemplateEngine();
  10. ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
  11. templateEngine.setTemplateResolver(resolver);
  12. List<String> datas = new ArrayList<String>();
  13. datas.add("张三");
  14. datas.add("李四");
  15. Context ctx = new Context();
  16. ctx.setVariable("datas", datas);
  17. ctx.setVariable("username", "lc");
  18. String result = templateEngine.process("iteration.html", ctx);
  19. System.out.println(result);
  20. }
  21. }

右键Run 'IterationTest.main()',控制台输出:

  1. <table>
  2. <tr>
  3. <td>张三</td>
  4. </tr>
  5. <tr>
  6. <td>李四</td>
  7. </tr>
  8. </table>

六、设置前缀与后缀

1、在src/main/resources/templates下新建文件index.html

  1. <input type='' th:value='lc' />

2、新建一个类 PrefixSuffixTest.java

  1. package com.example.demo;
  2. import org.thymeleaf.TemplateEngine;
  3. import org.thymeleaf.context.Context;
  4. import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
  5. public class PrefixSuffixTest {
  6. public static void main(String[] args) {
  7. TemplateEngine templateEngine = new TemplateEngine();
  8. ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
  9. resolver.setPrefix("/templates/");
  10. resolver.setSuffix(".html");
  11. templateEngine.setTemplateResolver(resolver);
  12. String result = templateEngine.process("index", new Context());
  13. System.out.println(result);
  14. }
  15. }

右键Run 'PrefixSuffixTest.main()',控制台输出:

  1. <input type='' value='lc' />

七、Spring Boot中整合Thymeleaf

1、pom.xml加入Thymeleaf依赖:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  4. </dependency>

2、application.yml
备注,下面配置的值都为默认值,实际上可不配置。

  1. spring:
  2. thymeleaf:
  3. mode: HTML
  4. prefix: classpath:/templates/
  5. suffix: .html

3、在src/main/resources/templates下新建文件test.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <input type='' th:value='${userName}' />
  9. </body>
  10. </html>

4、新建一个控制器类 DemoController.java

  1. package com.example.demo;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.ui.Model;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. @Controller
  6. public class DemoController {
  7. @RequestMapping("/test")
  8. public String test(Model model){
  9. model.addAttribute("userName", "lc");
  10. return "test";
  11. }
  12. }

运行后,浏览器访问http://localhost:8080/test
可看到输出结果。

原文链接:http://www.cnblogs.com/gdjlc/p/11651098.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号