1、thymeleaf入门及案例
模板引擎的工作原理:
下面学习的时thymeleaf模板引擎
thymeleaf官网: https://www.thymeleaf.org/
thymeleaf文档:https://www.thymeleaf.org/documentation.html
使用maven加载核心库:
<dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>3.0.15.RELEASE</version> </dependency>
一、什么是thymeleaf
Thymeleaf是一个表现层的模板引擎,一般被使用在web环境中,它可以处理HTML、XML、JS等文档
简单的来说它,可以将JSP作为javaweb应用的表现层,有能力展示与处理数据,可以让界面设计人员、业务人员与技术人员都参与到开发中
这样,同一个模板文件,既可以使用浏览器直接打开,也可以放到服务器中来使用,并且样式之间基本不会存在差异,因此界面设计人员可以使用同一个模板文件,来查看静态与动态数据效果
(1)下面举例Thymeleaf的使用
创建meven项目,并添加依赖
<dependencies> <!--测试类依赖--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!--thymeleaf依赖--> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>3.0.4.RELEASE</version> </dependency> </dependencies>
1、静态数据,直接输出
public class HelloThymeleaf { public static void main(String[] args) { //创建模板引擎 TemplateEngine engine = new TemplateEngine(); //准备模板 String input = "<input type='text' th:value='thymeleaf'/>";//结果数据<input type='text' value='thymeleaf'/> 其中:th:value代表value属性的内容 //准备数据,使用context Context context = new Context();//注意:这个context是在org.thymeleaf.context.Context中的 //调用引擎,处理模板数据 String out = engine.process(input, context); System.out.println("结果数据"+out); } }
2、动态变化数据${}
@Test public void test01(){ //创建按模板引擎 TemplateEngine templateEngine = new TemplateEngine(); //准备模板 String inStr = "<input type='text' th:value='${name}'/>";//这里的name相当于一个占位符 //准备数据 Context context = new Context(); context.setVariable("name","张三"); //处理模板数据 String html = templateEngine.process(inStr, context); System.out.println("模板和数据的组合结果:"+html);//模板和数据的组合结果:<input type='text' value='张三'/> }
3、使用模板文件
maven的项目中,在resource目录中创建一个模板文件main.html文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 模板:<input type="text" th:value="${name}" /> </body> </html>
设置模板文件main.html中name的值
@Test public void test02(){ TemplateEngine templateEngine = new TemplateEngine(); //读取磁盘中的模板文件 ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();//用于寻找模板、设置模板信息 //设置引擎使用 resolver templateEngine.setTemplateResolver(resolver); //指定数据 Context context = new Context(); context.setVariable("name","张三"); //处理模板 String html = templateEngine.process("main.html", context); System.out.println("模板和数据的整合结果"+html); }
4、设置模板文件的前缀、后缀
在resource下创建template目录,创建index.html文件,内容如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 用户名:<input type="text" th:value="${name}"> </body> </html>
测试如下:
@Test public void test03(){ TemplateEngine engine = new TemplateEngine(); ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver(); resolver.setPrefix("template/");//设置前缀,前缀是相对于resource目录而言的 resolver.setSuffix(".html");//设置后缀 //设置引擎 engine.setTemplateResolver(resolver); Context context = new Context(); context.setVariable("name","张三"); String index = engine.process("index", context);//因为前面的前缀和后缀都指定了,所以这里只需要输入文件名即可 System.out.println("index="+index); }