zoukankan      html  css  js  c++  java
  • freemarker:初识(搭建环境、对象、集合、索引、赋值、null、时间、宏定义)

    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>

  • 相关阅读:
    CCF 201712-4 90分
    hdu2159
    ch11 持有对象
    ch7复用类
    PLSQL Developer 9注册码
    vue + typespript + webpack
    JavaScript 复制内容到剪贴板
    在不同电脑设备之间, 同步 VSCode 的插件和配置
    常用正则:提取内容, 格式化数字
    js css3 固定点拖拽旋转
  • 原文地址:https://www.cnblogs.com/zhai1997/p/13391603.html
Copyright © 2011-2022 走看看