让每一名学员高薪就业
返回列表 发新帖

FreeMarker模板引擎入门实例

[复制链接]

100

主题

396

帖子

2540

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2540

版主论坛荣誉内测

发表于 2018-5-16 18:10:51  | 显示全部楼层 | 阅读模式
FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具,废话不多说看列子

1. 拷贝jar
图片1.png

2. 编写代码
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
[size=10.5000pt]
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
[size=10.5000pt]
public static void main(String[] args) throws IOException, TemplateException {
[size=10.5000pt]        [size=10.5000pt]        // 创建Freemarker配置实例
[size=10.5000pt]        [size=10.5000pt]        Configuration cfg = new Configuration();
[size=10.5000pt]        [size=10.5000pt]        //设定去哪里读取相应的ftl模板文件
[size=10.5000pt]        [size=10.5000pt]        cfg.setDirectoryForTemplateLoading(new File("templates"));
[size=10.5000pt]        [size=10.5000pt]        // 创建数据模型
[size=10.5000pt]        [size=10.5000pt]        Map root = new HashMap();
[size=10.5000pt]        [size=10.5000pt]        root.put("msg", "最简单的模板技术");
[size=10.5000pt]        [size=10.5000pt]        //在模板文件目录中找到名称为name的文件
[size=10.5000pt]        [size=10.5000pt]        Template t1 = cfg.getTemplate("hello.ftl");
[size=10.5000pt]        [size=10.5000pt]        // 显示生成的数据,将合并后的数据打印到控制台
[size=10.5000pt]        [size=10.5000pt]        Writer out = new OutputStreamWriter(System.out);
[size=10.5000pt]        [size=10.5000pt]        //合并数据
[size=10.5000pt]        [size=10.5000pt]        t1.process(root, out);
[size=10.5000pt]        [size=10.5000pt]        out.flush();
[size=10.5000pt]}


3. 项目结构
图片2.png

4. Hello.ftl文件内容
图片3.png

5. 打印效果
图片4.png

6. 使用if语句
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
[size=10.5000pt]
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
[size=10.5000pt]
public static void main(String[] args) throws IOException, TemplateException {
[size=10.5000pt]        [size=10.5000pt]        // 创建Freemarker配置实例
[size=10.5000pt]        [size=10.5000pt]        Configuration cfg = new Configuration();
[size=10.5000pt]        [size=10.5000pt]        // 设定去哪里读取相应的ftl模板文件
[size=10.5000pt]        [size=10.5000pt]        cfg.setDirectoryForTemplateLoading(new File("templates"));
[size=10.5000pt]        [size=10.5000pt]        // 创建数据模型
[size=10.5000pt]        [size=10.5000pt]        Map root = new HashMap();
[size=10.5000pt]        [size=10.5000pt]        root.put("age", 22);
[size=10.5000pt]        [size=10.5000pt]        // 在模板文件目录中找到名称为name的文件
[size=10.5000pt]        [size=10.5000pt]        Template t1 = cfg.getTemplate("if.ftl");
[size=10.5000pt]        [size=10.5000pt]        // // 显示生成的数据,生成到指定文件目录中
[size=10.5000pt]        [size=10.5000pt]        Writer out = new FileWriter(new File("templates/if.html"));
[size=10.5000pt]        [size=10.5000pt]        // 合并数据
[size=10.5000pt]        [size=10.5000pt]        t1.process(root, out);
[size=10.5000pt]        [size=10.5000pt]        out.flush();
}


7. if模板
图片5.png


8. 最终if.html显示效果
图片6.png

9. 循环操作
public class User {
        private String name;
        private String email;
        private Integer age;
        public User() {
        }
        public User(String name, String email, Integer age) {
                this.name = name;
                this.email = email;
                this.age = age;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }
        public String getEmail() {
                return email;
        }

        public void setEmail(String email) {
                this.email = email;
        }

        public Integer getAge() {
                return age;
        }

        public void setAge(Integer age) {
                this.age = age;
        }

}

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class TestFor {
        public static void main(String[] args) throws IOException, TemplateException {
                // 创建Freemarker配置实例
                Configuration cfg = new Configuration();
                // 设定去哪里读取相应的ftl模板文件
                cfg.setDirectoryForTemplateLoading(new File("templates"));
                // 创建数据模型
                Map root = new HashMap();
                List<User> users = Arrays.asList(new User("张三","12@qq.com",22),new User("李四","32@qq.com",33),new User("王五","33@qq.com",44));
                root.put("users", users);
                // 在模板文件目录中找到名称为name的文件
                Template t1 = cfg.getTemplate("for.ftl");
                // // 显示生成的数据,生成到指定文件目录中
                Writer out = new FileWriter(new File("templates/for.html"));
                // 合并数据
                t1.process(root, out);
                out.flush();
        }
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
        <#list users as user>
                ${user.name}---------${user.email}-------${user.age}<br/>
        </#list>
</body>
</html>
最终生成模板效果:
图片7.png


这只是FreeMarker最简单的案列,所以只是带大家入个门,希望对大家有帮助。

  感谢源码时代教学讲师提供此文章!
  本文为原创文章,转载请注明出处!


“尔康,你现在幸福吗?”“紫薇,你忘了?我一直就姓福啊。”
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Java培训  |   PHP培训  |   UI培训  |   H5培训  |   Python培训  |   大数据培训  |   如何报名  |   视频下载
快速回复 返回顶部 返回列表