Velocity的layout功能
一、從VelocityViewServlet到VelocityLayoutServlet?
使用Velocity開發(fā)web應(yīng)用時(shí),需要在web.xml中配置一個(gè)Velocity提供的VelocityViewServlet接受處理對(duì)velocity模板(即vm文件)的forward訪問。VelocityViewServlet負(fù)責(zé)將設(shè)置在request中的attribute“讀出”和模板文件進(jìn)行merge形成最終的頁(yè)面,向response輸出顯示在用戶電腦上。?
VelocityViewServlet是一個(gè)簡(jiǎn)單的易使用的。但是只要把web.xml中VelocityViewServlet換成VelocityLayoutServlet,并配置上2,3句話,將具有頁(yè)面簡(jiǎn)單Layout的功能。而這個(gè)功能其實(shí)非常強(qiáng)大。?
二、VelocityLayoutServlet可以。。。?
VelocityLayoutServlet可以用來簡(jiǎn)化velocity下的頁(yè)面布局開發(fā)。?
使用VelocityLayoutServlet,可以使當(dāng)forward到一個(gè)頁(yè)面時(shí),能把自動(dòng)把該頁(yè)面作為一個(gè)頁(yè)面布局的一部分整體顯示出來。比如訪問用戶資料頁(yè)面,能夠自動(dòng)把網(wǎng)站的頭,尾等自動(dòng)也輸出顯示處理。?
三、VelocityLayoutServlet使用按步就班?
系統(tǒng)中有若干頁(yè)面布局是這樣設(shè)定的:頭部(header),左側(cè)菜單區(qū)域(sub),中右側(cè)頁(yè)面內(nèi)容部(main),底部(footer)。?
1、?
創(chuàng)建文件[webapp home]/vm/layout/layout.vm如下:?
$screen_content相當(dāng)于一個(gè)占位符,被forward的目標(biāo)頁(yè)面內(nèi)容將替代該處內(nèi)容。?
#parse($sub):表示sub位置是可以動(dòng)態(tài)通過$sub變量設(shè)置的。?
同時(shí)也創(chuàng)建'vm/layout/footer.vm''vm/layout/header.vm'這兩個(gè)文件。?
2、?
創(chuàng)建WEB-INF/vm/user/profile.vm如下:(假設(shè)該頁(yè)面用于顯示用戶的資料信息)?
注意,這個(gè)文件和普通我vm不一樣的地方在于前兩句話。?
第一句話設(shè)置這個(gè)頁(yè)面使用哪個(gè)布局器。?
第二句話設(shè)置sub的值,用于布局把vm/user/sub.vm文件包含進(jìn)來。?
同時(shí)也創(chuàng)建"vm/user/sub.vm"文件?
3、配置velocity.properites文件?
使用velocity一般都是需要配置velocity.properites的,至少應(yīng)該設(shè)置input.encoding和output.encoding等。在這個(gè)文件中增加設(shè)置如下代碼:?
4、確定web.xml配置和下面的差不多如下(主要是配置VelocityLayoutServlet,而非VelocityViewServlet):?
5、運(yùn)行服務(wù)器吧,?
a) 訪問http://www.xxx.com/vm/user/profile.vm 看看效果。?
b) 回到vm/user/profile.vm文件,把#set($layout = "layout.vm")去掉 看看效果。?
效果比較:?
加上$layout設(shè)置的profile.vm文件,瀏覽該頁(yè)面時(shí),將自動(dòng)把該頁(yè)面變成布局的一部分,把header.vm,sub.vm,footer.vm也輸出出來;去掉$layout設(shè)置后瀏覽時(shí),只是輸出該頁(yè)面,不會(huì)將header.vm,sub.vm,footer.vm輸出出來。?
這種功能在調(diào)試和編寫時(shí)非常方便。?
以后每增加一個(gè)新的頁(yè)面時(shí),只要在第一行設(shè)置了$layout指向一個(gè)布局模板便可(注意布局模板的路徑,第3步已經(jīng)做了提示),便可以輕松具有簡(jiǎn)單的布局功能了?
6、后語(yǔ):?
一直想著自己實(shí)現(xiàn)一個(gè)類似的功能,最后再仔細(xì)看看Velocity官方網(wǎng)站時(shí)才發(fā)現(xiàn)velocity已經(jīng)有了。我覺得挺好的,很符合我的需求。?
所以,如果你使用或即將使用Velocity開發(fā)系統(tǒng),強(qiáng)烈推薦使用layout功能。?
總結(jié)
以上是生活随笔為你收集整理的Velocity的layout功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 团队第二阶段总结
- 下一篇: 两层或以上的showModalDialo