Freemarker的使用

1. 什么是freemarker?

模板 + 数据集 = 填充生成文件或者HTML

1) FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2)模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言, 不是 像PHP那样成熟的编程语言。 那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3)这种方式通常被称为 MVC (模型 视图 控制器) 模式,对于动态网页来说,是一种特别流行的模式。 它帮助从开发人员(Java 程序员)中分离出网页设计师(HTML设计师)。设计师无需面对模板中的复杂逻辑, 在没有程序员来修改或重新编译代码时,也可以修改页面的样式。

2.在maven中引入坐标
<!-- freemarker jar -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.20</version>
</dependency>
2.1 配置spring配置文件
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/ftl/" />
        <property name="defaultEncoding" value="UTF-8" />
</bean>
3.创建模板文件
<html>
    <head>
        <title>student</title>
    </head>
    <body>
        ${hello}
        学生信息:<br/>
        学生编号:${student.id}&nbsp;&nbsp;&nbsp;
        学生姓名:${student.name}&nbsp;&nbsp;&nbsp;
        学生生日:${student.birthday}&nbsp;&nbsp;&nbsp;<br/>
        学生列表:
        <table border="1">
            <tr>
                <th>学生编号</th>  
                <th>学生姓名</th>
                <th>学生生日</th>
            </tr>
            <#list stuList as stu>
                <#if stu_index % 2 == 0>
                    <tr bgcolor="red">
                <#else>
                    <tr bgcolor="green">
                </#if>
                        <td>${stu.id}</td>
                        <td>${stu.name}</td>
                        <td>${stu.birthday}</td>
                    </tr>
            </#list>
        </table>
        当前时间:  ${date?date}<br/>       
        格式化时间: ${date?string('yyyy/MM/dd HH:mm:ss')}
    </body>
</html>
4.代码编写步骤(步骤固定)
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

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

public class FreeMarkerTest {
    @Test
    public void testFreemarker() throws Exception {
        // 创建模板配置对象Configuration
        Configuration configuration = new Configuration(Configuration.getVersion());
        // 设置模板目录
        configuration
                .setDirectoryForTemplateLoading(new File("E:/workspaces/e3/e3-item-web/src/main/webapp/WEB-INF/ftl"));
        // 设置字符集
        configuration.setDefaultEncoding("utf-8");
        // 获取Template对象
        Template template = configuration.getTemplate("hello.ftl");
        // 创建数据集
        Map<String, Object> data = new HashMap<String, Object>();
        data.put("hello", "hello freemarker!");
        Student student = new Student(1, "jack", "18");
        data.put("student", student);
        List<Student> list = new ArrayList<>();
        list.add(new Student(1, "小明1", "11"));
        list.add(new Student(2, "小明2", "12"));
        data.put("stuList", list);
        data.put("date", new Date());
        // 创建输出流
        Writer out = new FileWriter("D:/temp/freemarker/hello.html");
        // 生成静态页面
        template.process(data, out);
        // 关流
        out.close();
    }
}
5.FTL指令
1. assign指令
(1)简单类型
    <#assign linkman="周先生">
    联系人:${linkman}
(2)对象类型
    <#assign info={"mobile":"13301231212",'address':'北京市昌平区王府街'} >
    电话:${info.mobile}  地址:${info.address}
2. include指令
    引入其他模板文件
    <#include "head.ftl">
3.if指令
    map.put("success", true);
    <#if success=true>
      你已通过实名认证
    <#else>  
      你未通过实名认证
    </#if>
4.list指令(遍历集合)
    ----商品价格表----<br>
    <#list goodsList as goods>
        ${goods_index+1} 商品名称: ${goods.name} 价格:${goods.price}<br>
    </#list>
6.内建函数

参考:https://blog.csdn.net/xby1993/article/details/25240913

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen-xs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值