它是1個工具,基于模板生成文本輸出的通用工具,使用java編寫。與具體的容器無關,不知道HTTP或Servlet;所以他可以利用在非Web利用程序環境中。就像是1個工廠,原材料(比如數據和文字)交給FreeMarker這個工廠,它就會將這些材料組裝在1起生成1個我們需要的產品。
它是1個Java package,面向java程序員的class library。它本身是1種模板語言,有自己的語法,但是他是脫離servlet容器獨立運行的,所以在上面才會說它是1個工具,與具體的容器無關,允許程序員將其嵌入到我們的系統中。
下面的圖形是從FreeMarker官網上截下來的,這張圖就很清楚的描寫了它是如何生成1個文本的。
它是需要3部份的,就像上面提到的那個工廠的例子。需要原材料,工廠和產品。
從FreeMarker的官網上知道FreeMarker本身具有編程能力,但是通常由Java程序準備需要顯示的數據(原材料),然后由FreeMarker這個工廠進行加工,加工的時候是有1個文件作為參照,通過模板顯示準備的數據終究生成我們需要的產品。
1. 原材料
包括模板和數據。數據就是我們顯示的東西,模板顧名思義就是1種規范,可以寫成我們平時常常說的接口。定義的1種規范。
2. 工廠
FreeMarker這個模板引擎,依照模板將數據組裝起來。
3. 產品
依照模板終究生成的文件。
所以從上面的解釋可以了解到需要我們做的事情就是準備好原材料也就是數據和模板,其他的工作Freemarker全都幫我做好了。
這些語法雖然簡單,但是確切最經常使用的,簡單易懂,基本上用1遍就可以夠很快的掌握了。
1、獲得模型的值。
語法和el表達式幾近是1樣的:${bean},${bean.property}
2、內建函數。
空值處理:${bean!'我是空值'},${bean!},${bean.property!'我是空值'},${(bean.property)!'我是空值'}
HtmlEscape:${bean?html}
日期格式化:${bean?string('yyyy-MM-dd')}
還有很多很好用的內建函數,可以查閱官方文檔。
3、內建標簽。
判斷:
<#if true>
<#else>
</#if>
循環:
<#list array as bean>
${bean.property}
</#list>
最近項目中有1個功能:將查詢出來的數據和1切其他的文件放到1起生成1個word文件。在網上查了查找到了1些能夠完成這個功能的工具。Freemarker就是其中之1。略微的了解了1下發現這個工具挺好用的,所以整理了1些東西,這篇博客只是簡單對FreeMarker這個工具做個簡單的介紹,下1遍博客會使用這個工具實現兩個小例子,同時會對這個工具在深入的了解了解。
上一篇 extjs自定義組件類
下一篇 Java圖片加水印