Freemarker模板学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ip_JL/article/details/83216928

FreeMarker是一款模板引擎

引入测试项目:  链接:https://pan.baidu.com/s/1cth8110m5GZHDde4ztYEWQ    提取码:16u0

在Freemarker中就三种角色: 模板/数据/html

从数据库中取出数据, 结合模板就能生成html的静态页面

项目结构图:

模板1:

模板1的内容:

测试代码:

package com.rl.ecps.ftl;

import java.util.HashMap;
import java.util.Map;

import org.junit.Test;

import cn.itcast.freemarker.FMutil;

public class FMTest {

    Map<String, Object> map = new HashMap<String, Object>();

    @Test
    public void test1() throws Exception {
        map.put("username", "zhangsan");
        FMutil.outputFile("fm1.ftl", map, "fm1.html");
    }
}

结果如下:

模板2:

模板2的内容:

测试代码:

@Test
    public void test2() throws Exception {
        map.put("username", "张三");
        FMutil.outputFile("fm2.ftl", map, "fm2.html");
    }

结果如下:

模板3:

模板3的内容:

测试代码:

@Test
    public void test3() throws Exception {
        User user = new User();
        user.setId(1);
        user.setName("张三");
        user.setAge(20);
        map.put("user", user);
        FMutil.outputFile("fm3.ftl", map, "fm3.html");
    }

结果如下:

Freemarker中的语法:

//注释

<#-- [注释的内容] -->

//判断

<#if [条件]> [结论] <#elseif [条件]>  [结论] </#if>

在if中取值无需${}

//循环

<#list [集合] as 变量> [内容] </#list>

在循环的条件中取值无需${}

"${user_index}" 代表取当前索引

模板4:

模板4的内容:

测试代码:

@Test
    public void test4() throws Exception {
        List<User> userList = new ArrayList<User>();
        for(int i = 0; i < 5; i++){
            User user = new User();
            user.setId(i);
            user.setName("张三");
            user.setAge(20);
            userList.add(user);
        }
        map.put("userList", userList);
        FMutil.outputFile("fm4.ftl", map, "fm4.html");
    }

结果如下:

模板5:

模板5的内容:

模板中包含模板:

top1.ftl的内容:

此时map中需要提供模板需要的数据和被包含的模板所需要的数据

测试代码:

@Test
    public void test5() throws Exception {
        List<User> userList = new ArrayList<User>();
        for(int i = 0; i < 5; i++){
            User user = new User();
            user.setId(i);
            user.setName("张三");
            user.setAge(20);
            userList.add(user);
        }
        map.put("username", "王五");
        map.put("userList", userList);
        FMutil.outputFile("fm5.ftl", map, "fm5.html");
    }

结果如下:

模板6:

模板6的内容:

结果如下:

模板7:

模板7的内容:

Freemarker中的变量的使用:

<#assign name="zhangsan">

<#assign [变量名]=[变量值]>   //跟js一样, 由值来决定数据类型

Freemarker中的变量名是可以重复的, 跟js的语法类似

结果如下:

猜你喜欢

转载自blog.csdn.net/ip_JL/article/details/83216928
今日推荐