Velocity是一個(gè)基于java的模板引擎(template engine)。它允許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對(duì)象
velocity的語法非常簡單。這里不多介紹。
我們平時(shí)的web項(xiàng)目,通常的開發(fā)流程是前端寫好靜態(tài)頁面。后端將靜態(tài)頁面改成jsp,在相應(yīng)的需要替換數(shù)據(jù)的地方,使用 jstl、EL表達(dá)式等接收action模塊傳遞過來的數(shù)據(jù)。一般使用action來處處理參數(shù),調(diào)用service層來處理業(yè)務(wù)邏輯,service層調(diào)用dao層從數(shù)據(jù)庫取數(shù)據(jù)。我們可以看到,大體上就是后端發(fā)送數(shù)據(jù)給前端。
這里一般會(huì)有一個(gè)很大的問題。如果業(yè)務(wù)變更,例如一個(gè)頁面本來要顯示一個(gè)表格,現(xiàn)在需要顯示3個(gè)表格,另外的2個(gè)表格是從之前的其他頁面合并的。mvc模式的好處就是,此時(shí),除了頁面的改動(dòng)之外,做業(yè)務(wù)邏輯處理的service層和dao層,都不需要變化,只需要改動(dòng)相應(yīng)的action層,調(diào)用所需的service模塊,將所需要的數(shù)據(jù)輸出。
而如果使用velocity,除了頁面的改動(dòng)之外,其他都不需要改動(dòng)。
velocity做web項(xiàng)目與我們平時(shí)的項(xiàng)目最大的不同是由前端從后端拿數(shù)據(jù)。需要什么就拿什么。我們完全可以通過velocity把前端和后端完全分離開來。
下面使用一個(gè)簡單的例子模擬一下velocity的這種思想。
(由于velocity自身并不提供任何web相關(guān)的功能,它只是通過模板生成格式文檔。但是,開發(fā)web應(yīng)用的時(shí)候,需要有一個(gè)框架來處理HTTP請(qǐng)求。velocity有一個(gè)非常好的子項(xiàng)目velocity-tools,使用它的VelocityViewServlet可以非常方便的實(shí)現(xiàn)這個(gè)功能。如下)
1、依賴包只有2個(gè):最新的 velocity-1.6.2.jar 和 velocity-tools-2.0.jar,網(wǎng)址:http://velocity.apache.org/download.cgi
2、首先看一下我們的web.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app> <servlet> <servlet-name>velocity</servlet-name> <servlet-class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-class> <init-param> <param-name>org.apache.velocity.toolbox</param-name> <param-value>/WEB-INF/conf/velocity-toolbox.xml</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.vm</welcome-file> </welcome-file-list></web-app>
3、然后看一下簡單的頁面:
<html> <body> this is the Word : $mytool.getHello() </body> </html>
4、接下來是最重要的velocity-toolbox.xml 類,這里的工具類就是在頁面可以直接調(diào)用的類了。如下:
<?xml version="1.0" encoding="UTF-8"?><toolbox> <tool> <key>mytool</key> <scope>request</scope> <class>com.chandler.tool.MyTool</class> </tool> </toolbox>
指定了請(qǐng)求到來時(shí)的工具類實(shí)例的生命周期為request
5、OK,就這樣,可以訪問了,如下:
可以看到,velocity的這種特性,使得它開發(fā)小型的網(wǎng)站變得非常便捷!很大的提高了開發(fā)效率!
如果文中有什么不對(duì)的地方,歡迎指正!謝謝!
轉(zhuǎn)載請(qǐng)注明出處:http://m.survivalescaperooms.com/zrtqsk/p/4010840.html 謝謝!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注