1. 程式人生 > >Freemarker模板學習筆記

Freemarker模板學習筆記

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的語法類似

結果如下: