Freemarker模板學習筆記
阿新 • • 發佈:2018-12-16
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的語法類似
結果如下: