freemarker和jsp的比較


1.共享變量

FreeMarker 的共享變量是我最喜歡的“隱藏”功能之一。此功能可以讓你設置自動添加到所有模板的值。 例如,可以設置應用程序的名稱作為共享變量。

1
2
Configuration configuration = new Configuration();
configuration.setSharedVariable( "app" , "StackHunter" );

然后像任何其他變量一樣訪問它。

1
App: ${app}

在過去使用共享變量一般引用資源包 然后使用像 ${i18n.resourceBundle.key} 這樣的表達式來獲取值。

1
2
3
${i18n.countries.CA}
${i18n.countries['CA']}
${i18n.countries[countryCode]}

上面這些行都引用 countries_en.properties 資源包內的 key “CA”對應的值。你需要執行自己的 TemplateHashModel,然后將其添加為一個共享變量來實現這一目標。

2.支持 JSON

FreeMarker 內置 JSON 支持。 比方說你有以下的 JSON 存儲到變量命名 user 的字符串中。

1
{ 'firstName': 'John', 'lastName': 'Smith', 'age': 25, 'address': { 'streetAddress': '21 2nd Street', 'city': 'New York', 'state': 'NY', 'postalCode': 10021 }}

使用 ?eval 將從字符串轉換為一個 JSON 對象,然后像其他數據一樣在表達式中使用。

1
2
<#assign user = user?eval>
User: ${user.firstName}, ${user.address.city}

3.類加載沒有 PermGen 問題

如果你已經開發Java Web應用程序一段時間,那么對於 JVM 的 PermGen 問題可能並不陌生。由於 FreeMarker 模板不編譯成類,它們不占用 PermGen 空間,並不需要一個新的類加載器加載。

4.宏定義(類似jsp標簽)非常方便


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM