freemarker的簡單入門
阿新 • • 發佈:2018-11-09
一.Freemarker是一個模板引擎,一個基於模板生成文字輸出的通用工具。
1.引用freemarker需要在eclipse上載入外掛,把外掛解壓後
放入eclipse的plugins資料夾裡面 ,然後重啟eclipse
2.新增freemarker的架包到專案
3.簡單的freemarker 輸出,建立一個測試類
public class Test { public static void main(String[] args) throws Exception { //建立freemarker配置例項 Configuration config=new Configuration(); //指定模板檔案儲存的目錄 config.setDirectoryForTemplateLoading(new File("tmps")); //設定資料的抓取模式 config.setObjectWrapper(new DefaultObjectWrapper()); //建立資料模型 Map latest = new HashMap(); latest.put("url", "producte/greenmouse.html"); latest.put("name", "jiao zi"); //迴圈陣列 Integer[] st = {1,2,3,4,5,6,7}; Map map=new HashMap(); map.put("sex", 1); map.put("latestProduct", latest); map.put("user", "woshi"); map.put("arr", st); List<User> list = new ArrayList<>(); User user = new User(); user.setId("1"); user.setName("zs"); User user2 = new User(); user2.setId("2"); user2.setName("ls"); list.add(user); list.add(user2); map.put("list", list); //載入模板檔案 -- 例項化模板物件 Template temp =config.getTemplate("index.ftl"); //生成html 輸出到目標 Writer out =new OutputStreamWriter(System.out ); temp.process(map, out); out.flush(); } }
4.建立模板物件 運用list 陣列名定義在前面 as 後接 臨時變數名
<html> <head> <title>welcome!</title> </head> <body> <h1>Welcome ${user}!</h1><br/> <p>Our latest product:</p><br/> <a href="${latestProduct.url}">${latestProduct.name}</a><br/> 性別:<#if sex=0>男<#else>女</#if><br/> 陣列結果:<br/> <#list arr as tmp> <#if tmp%2=0><font color='green'>${tmp}===下標${tmp_index}</font><#else><font color='yellow'>${tmp}===下標${tmp_index}</font></#if> <br/> <#if tmp_index=2><#break></#if> </#list> list結果:<br/> <#list list as user> ${user.id}====${user.name}=下標${user_index} <br/> </#list> </body> </html>
5.輸出結果
6.定義變數
<#assign age=100>
<#assign age>12</#assign>
7.引用定義變數的ftl inport 可以取別名 include 不能取別名,只能覆蓋
<#import "include2.ftl" as t>
<#include "include.ftl">
${age} ==== ${t.age}
8.巨集 相當於Java中的定義方法
<#-- 定義巨集--> <#macro add p1 p2> 結果為:${p1+p2} </#macro> <#--呼叫巨集--> <@add p1=45 p2=546/>
9.ftl的內建函式,沒帶引數可以不用()
<#assign str=' hello my name is jiaozi DDDDDD '>
取得字串長度:${str?length}<#--相當於Java中的str.length(),?相當於.-->
--${str}--
去前後空格:--${str?trim}--
轉大寫:--${str?upper_case}--
轉小寫:--${str?lower_case}--
第一個字母大小:--${str?cap_first}--
取整數--${1.61543434?int}--
取最近的3位小數--${1.61543434?float}--
10.迴圈map
public class TestMapFreemarker {
public static void main(String[] args) throws Exception {
//建立freemarker配置例項
Configuration config=new Configuration();
config.setDirectoryForTemplateLoading(new File("tmps"));
config.setObjectWrapper(new DefaultObjectWrapper());
//迴圈map
Map map = new HashMap<>();
Map m = new HashMap<>();
m.put("id_1", 1);
m.put("id_2", 2);
m.put("id_3", 3);
m.put("id_4", 4);
m.put("id_5", 5);
map.put("myid", m);
//載入模板檔案 -- 例項化模板物件
Template temp =config.getTemplate("map.ftl");
//生成html 輸出到目標
Writer out =new OutputStreamWriter(System.out);
temp.process(map, out);
out.flush();
}
}
獲取所有的鍵
<#list myid?keys as tmp>
${tmp}
</#list>
獲取所有的值
<#list myid?values as tmp>
${tmp}
</#list>