1. 程式人生 > >freemarker的簡單入門

freemarker的簡單入門

一.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>