1、Freemarker环境搭建
(1)导入依赖
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.16</version> </dependency>
(2)创建freemarker.html(模板文件)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> ${zhai} </body> </html>
(3)创建测试类(数据模型)
public class FMDemo { public static void main(String[] args) throws IOException, TemplateException { //配置对象 Configuration configuration=new Configuration(); //模板路径 String dir="D:\IdeaProjects\Freemarker_01\ftl\"; //导入模板目录 configuration.setDirectoryForTemplateLoading(new File(dir)); //获取模板 Template template=configuration.getTemplate("freemarker.html"); //数据 Map root=new HashMap(); root.put("zhai","hello"); Writer out=new FileWriter(new File(dir)+"\hello.html"); //生成开始 template.process(root,out); //关闭资源 out.close(); } }
(4)测试(生成的html文件)
(5)项目结构
是一个由模板文件和数据文件生成目标文件的过程
2、对象
(1)测试类
public class FMDemo { public static void main(String[] args) throws IOException, TemplateException { //配置对象 Configuration configuration=new Configuration(); //模板路径 String dir="D:\IdeaProjects\Freemarker_01\ftl\"; //导入模板目录 configuration.setDirectoryForTemplateLoading(new File(dir)); //获取模板 Template template=configuration.getTemplate("freemarker.html"); //数据 Map root=new HashMap(); Student student=new Student(); student.setSex("男"); student.setSname("zhai"); root.put("student",student); Writer out=new FileWriter(new File(dir)+"\hello.html"); //生成开始 template.process(root,out); //关闭资源 out.close(); } }
(2)freemarker.html
<body>${student.sex}/////${student.sname} </body>
(3)创建学生类
public class Student { private String sname; private String sex; public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
(4)测试
3、List集合
(1)测试类
public class FMDemo { public static void main(String[] args) throws IOException, TemplateException { //配置对象 Configuration configuration=new Configuration(); //模板路径 String dir="D:\IdeaProjects\Freemarker_01\ftl\"; //导入模板目录 configuration.setDirectoryForTemplateLoading(new File(dir)); //获取模板 Template template=configuration.getTemplate("freemarker.html"); //数据 Map root=new HashMap(); List students =new ArrayList<String>(); students.add("zhang"); students.add("zhai"); students.add("ma"); root.put("students",students); Writer out=new FileWriter(new File(dir)+"\hello.html"); //生成开始 template.process(root,out); //关闭资源 out.close(); } }
(2)freemarker.html
<body> <#list students as student> ${student} </#list> </body>
(3)测试
4、Map集合
(1)创建Map集合
Map root=new HashMap(); Map map=new HashMap(); map.put("z","zhai"); map.put("l","liu"); root.put("map",map);
(2)freemarker.html
<body> <#list map?keys as key> ${map[key]} </#list> </body>
(3)测试
5、List_map集合
(1)测试类
//获取模板 Template template=configuration.getTemplate("freemarker.html"); //数据 Map root=new HashMap(); List<Map> maps=new ArrayList<Map>(); Map stu1=new HashMap(); stu1.put("num1","zhai"); stu1.put("num2","zhang"); Map stu2=new HashMap(); stu1.put("num3","ma"); stu1.put("num4","zhao"); maps.add(stu1); maps.add(stu2); root.put("maps",maps); Writer out=new FileWriter(new File(dir)+"\hello.html");
(2)freemarker.html
<#list maps as map> <#list map?keys as key> ${map[key]} </#list> </#list>
(3)测试
6、索引
(1)测试类
Map root=new HashMap(); List students =new ArrayList<String>(); students.add("zhang"); students.add("zhai"); students.add("ma"); root.put("students",students); Writer out=new FileWriter(new File(dir)+"\hello.html");
(2)freemarker.html
<body> <#list students as student> ${student_index} </#list> </body>
(3)测试
7、在模板中进行赋值
(1)取标签数据
<body> <#assign x=0/> ${x} </body>
(2)取后台数据
<body> <#assign x='${zhai}'/> ${x} </body>
(3)集合
<body> <#assign x> <#list ["a","b","c"] as n>${n}</#list> </#assign> ${x} </body>
(4)条件
<#assign x> <#list ["a","b","c"] as n> <#if n!="a"> ${n} </#if> </#list> </#assign> ${x} </body>
8、时间
(1)time格式
<body> ${time?time} </body>
(2)datetime格式
<body> ${time?datetime} </body>
9、对象
存入数据:
root.put("Student",new Student("zhai",12));
模板:
<body>
${Student.sname}
</body>
生成的html:
10、宏定义
<body> <#macro table pageNo> ${pageNo} </#macro> <@table pageNo=8/> </body>