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