freemarker的常用内建函数
轉載:https://blog.csdn.net/qq779890006/article/details/78490368
為什么要使用網(wǎng)頁靜態(tài)化技術
網(wǎng)頁靜態(tài)化解決方案在實際開發(fā)中運用比較多,例如新聞網(wǎng)站,門戶網(wǎng)站中的新聞頻道
或者是文章類的頻道。
對于電商網(wǎng)站的商品詳細頁來說,至少幾百萬個商品,每個商品又有大量的信息,這樣
的情況同樣也適用于使用網(wǎng)頁靜態(tài)化來解決。
網(wǎng)頁靜態(tài)化技術和緩存技術的共同點都是為了減輕數(shù)據(jù)庫的訪問壓力,但是具體的應用
場景不同,緩存比較適合小規(guī)模的數(shù)據(jù),而網(wǎng)頁靜態(tài)化比較適合大規(guī)模且相對變化不太頻繁
的數(shù)據(jù)。另外網(wǎng)頁靜態(tài)化還有利于SEO。
另外我們如果將網(wǎng)頁以純靜態(tài)化的形式展現(xiàn),就可以使用Nginx 這樣的高性能的web
服務器來部署。Nginx 可以承載5 萬的并發(fā),而Tomcat 只有幾百
什么是Freemarker
FreeMarker 是一個用 Java 語言編寫的模板引擎,它基于模板來生成文本輸出。FreeMarker與 Web 容器無關,即在 Web 運行時,它并不知道 Servlet 或 HTTP。它不僅可以用作表現(xiàn)層的實現(xiàn)技術,而且還可以用于生成 XML,JSP 或 Java 等。
Freemarker入門
1. 工程依賴
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.23</version> </dependency>2. 創(chuàng)建模板文件
1、文本,直接輸出的部分
2、注釋,即<#–…–>格式不會輸出
3、插值(Interpolation):即${..}部分,將使用數(shù)據(jù)模型中的部分替代輸出
4、FTL指令:FreeMarker指令,和HTML標記類似,名字前加#予以區(qū)分,不會輸出。
我們現(xiàn)在就創(chuàng)建一個簡單的創(chuàng)建模板文件test.ftl
3. 生成文件
使用步驟:
第一步:創(chuàng)建一個 Configuration 對象,直接 new 一個對象。構造方法的參數(shù)就是 freemarker的版本號。
第二步:設置模板文件所在的路徑。
第三步:設置模板文件使用的字符集。一般就是 utf-8.
第四步:加載一個模板,創(chuàng)建一個模板對象。
第五步:創(chuàng)建一個模板使用的數(shù)據(jù)集,可以是 pojo 也可以是 map。一般是 Map。
第六步:創(chuàng)建一個 Writer 對象,一般創(chuàng)建一 FileWriter 對象,指定生成的文件名。
第七步:調用模板對象的 process 方法輸出文件。
第八步:關閉流
執(zhí)行后,在D盤根目錄即可看到生成的test.html ,打開看看
4. FTL 指令
assign指令
?
include 指令
此指令用于模板文件的嵌套
if指令
<#if success=true>你已通過實名認證 <#else> 你未通過實名認證 </#if>在代碼中對str變量賦值
map.put("success", true);在freemarker的判斷中,可以使用= 也可以使用==
list指令
(1)代碼中對變量goodsList賦值
(2)在模板文件上添加
----商品價格表----<br> <#list goodsList as goods>${goods_index+1} 商品名稱: ${goods.name} 價格:${goods.price}<br> </#list>內建函數(shù)
內建函數(shù)語法格式: 變量+?+函數(shù)名稱
我們使用size函數(shù)來實現(xiàn),代碼如下:
轉換JSON字符串為對象
日期格式化
代碼中對變量賦值:
在模板文件中加入
當前日期:${today?date} <br> 當前時間:${today?time} <br> 當前日期+時間:${today?datetime} <br> 日期格式化: ${today?string("yyyy年MM月")}數(shù)字轉換為字符串
代碼中對變量賦值:
修改模板:
累計積分:${point}空值處理運算符
判斷某變量是否存在:“??”
用法為:variable??,如果該變量存在,返回true,否則返回false
缺失變量默認值:“!”
我們除了可以判斷是否為空值,也可以使用!對null值做轉換處理
在模板文件中加入
?
運算符
算數(shù)運算符
FreeMarker表達式中完全支持算術運算,FreeMarker支持的算術運算符包括:+, - , * , / , %
邏輯運算符
邏輯運算符有如下幾個:
邏輯與:&&
邏輯或:||
邏輯非:!
邏輯運算符只能作用于布爾值,否則將產(chǎn)生錯誤
比較運算符
表達式中支持的比較運算符有如下幾個:
1 =或者==:判斷兩個值是否相等.
2 !=:判斷兩個值是否不等.
3 >或者gt:判斷左邊值是否大于右邊值
4 >=或者gte:判斷左邊值是否大于等于右邊值
5 <或者lt:判斷左邊值是否小于右邊值
6 <=或者lte:判斷左邊值是否小于等于右邊值
注意: =和!=可以用于字符串,數(shù)值和日期來比較是否相等,但=和!=兩邊必須是相同類型的值,否則會產(chǎn)生錯誤,而且FreeMarker是精確比較,”x”,”x “,”X”是不等的.其它的運行符可以作用于數(shù)字和日期,但不能作用于字符串,大部分的時候,使用gt等字母運算符代替>會有更好的效果,因為 FreeMarker會把>解釋成FTL標簽的結束字符,當然,也可以使用括號來避免這種情況,如:<#if (x>y)>
?
轉載于:https://www.cnblogs.com/lxk233/p/9596487.html
總結
以上是生活随笔為你收集整理的freemarker的常用内建函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python模块unittest
- 下一篇: 股票价格连续上涨不一定是利好,投资者需要