11(maven+SSH)網上商城項目實戰之Freemarker 頁面靜態化


FreeMarker
是一個模板引擎,一個基於模板生成文本輸出的通用工具,使用純Java編寫 

l         FreeMarker被設計用來生成HTML Web頁面,特別是基於MVC模式的應用程序 

l         雖然FreeMarker具有一些編程的能力,但通常由Java程序準備要顯示的數據,由FreeMarker生成頁面,通過模板顯示準備的數據(如下圖)
wKiom1ZNfmryiJiKAAAb_fr77R8479.png

模板 + 數據模型 = 輸出

l         FreeMarker不是一個Web應用框架,而適合作爲Web應用框架一個組件 

l         FreeMarker與容器無關,因爲它並不知道HTTPServletFreeMarker同樣可以應用於非Web應用程序環境 

l         FreeMarker更適合作爲Model2框架(如Struts)的視圖組件,你也可以在模板中使用JSP標記庫 

l         FreeMarker是免費的 


(1)實例代碼:

package freemaker;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class FreeMarkerDemo {
    public static void main(String[] args) {
        // 配置對象 .html
        Configuration conf = new Configuration();
        // 模板路徑
        String dir = "D:\\workspace2\\freemaker\\ftl\\";
        try {
            // 導入模板目錄
            conf.setDirectoryForTemplateLoading(new File(dir));
            // 獲取模板
            Template template = conf.getTemplate("freemaker.html");
            // 數據
            Map root = new HashMap();
            root.put("world", "世界");
            // 輸出流
            Writer out = new FileWriter(new File(dir + "hello.html"));
            // 生成開始
            template.process(root, out);
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("生成完畢");
    }
}

(2)返回對象

         

           Person p = new Person();
            p.setId(9527);
            p.setName("華安");
            root.put("per", p);
    
            編號:${per.id}<br/>
            姓名:${per.name}<br/>

(3)遍歷List

   

         List<Person> list = new ArrayList<Person>();
            for(int i =0;i<10;i++){
                Person p = new Person();
                p.setId(9527+i);
                p.setName("華安"+i);
                list.add(p);
            }
            root.put("list", list);
            <#list list as p>
                ${p.id} -- ${p.name}
            </#list>

(4)遍歷Map

     

           Map map = new HashMap();
            map.put("id", "1001");
            map.put("name", "秋香");
            root.put("map", map);
            <#list map?keys as key>
                ${map[key]}
            </#list>


(5)遍歷List<Map>

   

            Map map = new HashMap();
            map.put("id", "1001");
            map.put("name", "秋香");
            Map map2 = new HashMap();
            map2.put("id", "1002");
            map2.put("name", "石榴姐");
            List<Map> maplist = new ArrayList<Map>();
            maplist.add(map);
            maplist.add(map2);
            root.put("maplist", maplist);
            
            <#list maplist as map>
                <#list map?keys as key>
                    ${map[key]}
                </#list>
           </#list>


(6)遍歷if else

 

  <#list ["星期一","星期二","星期三"] as n>
    <#if n!="星期一">
        ${n}
    <#else>
        您好今天是星期一
    </#if>
</#list>


(7)時間處理

    root.put("dt", new Date());
    年月時間:${dt?datetime}<br/>
    時間:${dt?time}











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章