【 FreeMarker】比ajax更好用的展示資料的工具
一、什麼是FreeMarker
Freemarker是一個模板引擎,基於模板生成文字輸出的通用工具,是一個java類庫,程式設計師可以嵌入他們所開發產品的元件。
Freemarker主要用於MVC中的view層,生成html展示資料給客戶端,可以完全替代jsp。
Freemarker通常由Java程式準備要顯示的資料,由FreeMarker生成頁面,通過模板顯示準備的資料。
二、模板編寫(FTL)
模板編寫為FreeMarker Template Language (FTL)
2.1模板檔案
模板檔案和通常的靜態HTML頁面一樣存放在web伺服器上,當訪問該頁面時,FreeMarker會介入執行,動態轉換模板,將最新的資料內容替換掉模板中${...}的部分,之後將結果傳送到訪問者的web瀏覽器中。模板檔案示例如下:
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome ${user}!</h1>
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>
其中顯示的資料是在 FreeMarker 之外準備的,通常是一些 "真正的" 程式語言(比如Java) 所編寫的程式碼。這種顯示邏輯和業務邏輯相分離的做法是非常有用的。
在HTML中放置能被FreeMarker所解析的特殊程式碼片段:
- 插值${...}:FreeMarker將會輸出真實的值來替換大括號內的表示式。
- FTL 標籤:FTL標籤也稱為指令,以
#
開頭。下面會詳細介紹一些指令。 - 註釋:使用
<#--
and-->
來進行註釋。
2.1.1常用的FTL指令
- list 指令
當需要列表顯示內容時,list指令是必須的。
<p>We have these animals: <table border=1> <#list animals as animal> <tr><td>${animal.name}<td>${animal.price} Euros </#list> </table>
那麼輸出結果將會是這樣的:
<p>We have these animals:
<table border=1>
<tr><td>mouse<td>50 Euros
<tr><td>elephant<td>5000 Euros
<tr><td>python<td>4999 Euros
</table>
2.2 資料模型
為模板準備的資料整體被稱作為 資料模型。資料模型是樹形結構(就像硬碟上的資料夾和檔案),在視覺效果上, 資料模型可以是:
(root)
|
+- user = "Big Joe"
|
+- latestProduct
|
+- url = "products/greenmouse.html"
|
+- name = "green mouse"
上面只是一個形象化顯示;資料模型不是文字格式,它來自於Java物件。 對於Java程式設計師來說,root就像一個有 getUser()
和 getLatestProduct()
方法的Java物件, 也可以有 "user"
和 "latestProducts"
鍵值的Java Map
物件。相似地,latestProduct
就像是有 getUrl()
和getName()
方法的Java物件。
總的來說:模板 + 資料模型 = 輸出