Spring MVC 整合 Velocity

根據(jù)網(wǎng)上資料整理

發(fā)布于:2016-10-31

Apache Velocity是一款基于Java的模板引擎,允許使用模版語言來引用Java對象铺厨,與jsp類似。

直接介紹Spring MVC 4 與Velocity整合取试。

一这揣、添加Maven依賴

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity</artifactId>
    <version>1.7</version>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-tools</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.1.5.RELEASE</version>
</dependency>

二悔常、增加Spring配置

在Spring mvc的配置文件中增加視圖解析器與velocity配置

<bean id="velocityViewResolver"
    class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
    <property name="suffix" value=".vm" />
    <property name="contentType" value="text/html;charset=utf-8" />
    
    <!-- 允許velocity從session中取值 -->
    <property name="exposeSessionAttributes" value="true"/>
    
    <!-- 允許重寫session中的值 -->
    <property name="allowSessionOverride" value="true"/>
    
    <!-- 如果有多個視圖解析器,該屬性可以指定優(yōu)先級给赞,值越大優(yōu)先級越高 -->
    <property name="order" value="9" />
</bean>

<bean id="velocityConfigurer"
class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/templates/" /> <!-- 模版文件路徑 -->
<property name="velocityProperties">
    <props>
        <prop key="input.encoding">utf-8</prop>
        <prop key="output.encoding">utf-8</prop>
        <prop key="directive.set.null.allowed">true</prop>
        <prop key="file.resource.loader.cache">true</prop> <!-- 允許緩存 -->
        <prop key="velocimacro.context.localscope">true</prop>
        <prop key="resource.manager.defaultcache.size">0</prop> <!-- 緩存大小不限制 -->
        
        <!-- 開啟緩存后會定期檢查模版是否有修改机打,單位秒,如不需要檢查可改為0 -->
        <prop key="file.resource.loader.modificationCheckInterval">0</prop>
    </props>
</property>
</bean>

完成上面兩步后就可以創(chuàng)建模版文件進行開發(fā)了片迅。

Spring mvc 返回模版視圖示例:

@RequestMapping(value = "/test")
public String test(Model model,HttpSession httpSession) {

    model.addAttribute("name","測試");
    
    // 在頁面上用$userName取值
    httpSession.setAttribute("userName", "test");

    // 模版文件路徑templates/other/test.vm
    return "other/test";
}

具體的模版語言語法參考:
http://velocity.apache.org/engine/1.7/user-guide.html

三残邀、自定義工具類

velocity雖然內置一些函數(shù),但有時還是難以滿足我們的需求或者比較繁瑣。下面介紹如何創(chuàng)建自定義工具類并在頁面使用它們罐旗。

1膳汪、編寫自定義工具類(以判斷字符串是否為空或者null舉例)

import com.google.common.base.Strings;

public class VelocityStringUtils {

    /**
     * 判斷字符串是否是null或者空字符串
     *
     */
    public boolean isNullOrEmpty(String s) {
        return Strings.isNullOrEmpty(s);
    }

}

2、創(chuàng)建自定義工具類配置文件

<?xml version="1.0" encoding="UTF-8"?>
<toolbox>
    <tool>
        <!-- 模板中調用名 -->
        <key>StringUtils</key>
        <scope>application</scope>
        <!-- 類全名 -->
        <class>com.xxx.utils.VelocityStringUtils</class>
    </tool>
</toolbox>

3九秀、修改Spring配置文件

<bean id="velocityViewResolver"
    class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
    <property name="suffix" value=".vm" />
    <property name="contentType" value="text/html;charset=utf-8" />
    <property name="exposeSessionAttributes" value="true"/>
    <property name="allowSessionOverride" value="true"/>
    <property name="order" value="9" />

    <!-- 指定自定義工具類配置文件位置 -->
    <property name="toolboxConfigLocation" value="/WEB-INF/Toolbox.xml" />
</bean>

4、使用自定義工具類

當有用戶的昵稱時顯示歡迎信息粘我。

#if(!$StringUtils.isNullOrEmpty($user.name))
<div>歡迎您:$user.name</div>
#end
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末鼓蜒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子征字,更是在濱河造成了極大的恐慌都弹,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匙姜,死亡現(xiàn)場離奇詭異畅厢,居然都是意外死亡,警方通過查閱死者的電腦和手機氮昧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門框杜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人袖肥,你說我怎么就攤上這事咪辱。” “怎么了椎组?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵油狂,是天一觀的道長。 經(jīng)常有香客問我寸癌,道長专筷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任蒸苇,我火速辦了婚禮磷蛹,結果婚禮上,老公的妹妹穿的比我還像新娘填渠。我一直安慰自己弦聂,他們只是感情好,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布氛什。 她就那樣靜靜地躺著莺葫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枪眉。 梳的紋絲不亂的頭發(fā)上捺檬,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天,我揣著相機與錄音贸铜,去河邊找鬼堡纬。 笑死缨叫,一個胖子當著我的面吹牛耗式,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼似忧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了术辐?” 一聲冷哼從身側響起贷揽,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎镜悉,沒想到半個月后祟辟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡侣肄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年旧困,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稼锅。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡吼具,死狀恐怖,靈堂內的尸體忽然破棺而出缰贝,到底是詐尸還是另有隱情馍悟,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布剩晴,位于F島的核電站锣咒,受9級特大地震影響,放射性物質發(fā)生泄漏赞弥。R本人自食惡果不足惜毅整,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绽左。 院中可真熱鬧悼嫉,春花似錦、人聲如沸拼窥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鲁纠。三九已至总棵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間改含,已是汗流浹背情龄。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骤视。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓鞍爱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親专酗。 傳聞我的和親對象是個殘疾皇子睹逃,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)祷肯,斷路器唯卖,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,778評論 6 342
  • application的配置屬性。 這些屬性是否生效取決于對應的組件是否聲明為Spring應用程序上下文里的Bea...
    新簽名閱讀 5,358評論 1 27
  • 這些屬性是否生效取決于對應的組件是否聲明為 Spring 應用程序上下文里的 Bean(基本是自動配置的)躬柬,為一個...
    發(fā)光的魚閱讀 1,421評論 0 14
  • 晨起允青,與太陽結伴而行。 一陣風吹過卵沉,樹葉滑落颠锉,我聽到了時間的聲音,訴說她正在進行的生命——流逝史汗。 我在木板上來回走...
    孤獨的星空閱讀 420評論 5 4