FreeMarker 是一款 模板引擎: 即一種基於模板和要改變的數據, 並用來生成輸出文本(HTML網頁,電子郵件,配置文件,源代碼等)的通用工具。 是一個Java類庫。程序員
FreeMarker 被設計用來生成 HTML Web 頁面,特別是基於 MVC 模式的應用程序,將視圖從業務邏輯中抽離處理,業務中再也不包括視圖的展現,而是將視圖交給 FreeMarker 來輸出。雖然 FreeMarker 具備一些編程的能力,但一般由 Java 程序準備要顯示的數據,由 FreeMarker 生成頁面,經過模板顯示準備的數據(以下圖): 數據庫
FreeMarker不是一個Web應用框架,而適合做爲Web應用框架一個組件。編程
FreeMarker與容器無關,由於它並不知道HTTP或Servlet。FreeMarker一樣能夠應用瀏覽器
於非Web應用程序環境。框架
FreeMarker更適合做爲Model2框架(如Struts)的視圖組件,你也能夠在模板中使用ide
JSP標記庫。微服務
更多Java基礎,高級,微服務,大數據學習資料 ,公衆號搜索 「樂字節」 獲取工具
可以生成各類文本:HTML、XML、RTF、Java 源代碼等等 學習
易於嵌入到你的產品中:輕量級;不須要 Servlet 環境 大數據
插件式模板載入器:能夠從任何源載入模板,如本地文件、數據庫等等
你能夠按你所需生成文本:保存到本地文件;做爲 Email 發送;從 Web 應用程序發送它返回給 Web 瀏覽器
全部經常使用的指令:include、if/elseif/else、循環結構
在模板中建立和改變變量
幾乎在任何地方均可以使用複雜表達式來指定值
命名的宏,能夠具備位置參數和嵌套內容
名字空間有助於創建和維護可重用的宏庫,或將大工程分紅模塊,而沒必要擔憂名字衝突
輸出轉換塊:在嵌套模板片斷生成輸出時,轉換HTML轉義、壓縮、語法高亮等等;你能夠定義本身的轉換
FreeMarker不是直接反射到Java對象,Java對象經過插件式對象封裝,以變量方式在模板中顯示
你可使用抽象(接口)方式表示對象(JavaBean、XML文檔、SQL查詢結果集等等),告訴模板開發者使用方法,使其不受技術細節的打擾
在模板語言中內建處理典型Web相關任務(如HTML轉義)的結構
可以集成到Model2 Web應用框架中做爲JSP的替代
支持JSP標記庫
爲MVC模式設計:分離可視化設計和應用程序邏輯;分離頁面設計員和程序員
字符集智能化(內部使用UNICODE)
數字格式本地化敏感
日期和時間格式本地化敏感
非US字符集能夠用做標識(如變量名)
多種不一樣語言的相同模板
<#recurse> 和 <#visit> 指令(2.3版本)用於遞歸遍歷XML樹。在模板中清楚和直接的訪問XML對象模型。開源論壇 JForum 就是使用了 FreeMarker 作爲頁面模板。