锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1. 鍙橀噺
(1) 鍙橀噺鐨勫畾涔?錛?
#set($name = "hello") 璇存槑錛歷elocity涓彉閲忔槸寮辯被鍨嬬殑銆?
褰撲嬌鐢?set 鎸囦護鏃訛紝鎷湪鍙屽紩鍙蜂腑鐨勫瓧闈㈠瓧絎︿覆灝嗚В鏋愬拰閲嶆柊瑙i噴錛屽涓嬫墍紺猴細
#set($directoryRoot = "www" )
#set($templateName = "index.vm" )
#set($template = "$directoryRoot/$templateName" )
$template
杈撳嚭灝嗕細鏄細 www/index.vm
娉細 鍦╲elocity涓嬌鐢?2.5榪欐牱鐨勮揣甯佹爣璇嗘槸娌℃湁闂寰楃殑錛屽洜涓簐elocity涓殑鍙橀噺鎬繪槸浠ヤ竴涓ぇ鍐欐垨鑰呭皬鍐欑殑瀛楁瘝寮濮嬬殑銆?
(2) 鍙橀噺瑙勮寖鐨勫啓娉?
${name} 錛屼篃鍙互鍐欐垚錛?name銆傛彁鍊$敤鍓嶉潰鐨勫啓娉曘?
渚嬪錛氫綘甯屾湜閫氳繃涓涓彉閲?vice 鏉ュ姩鎬佺殑緇勭粐涓涓瓧絎︿覆銆?
Jack is a $vicemaniac.
鏈潵鍙橀噺鏄?$vice鐜板湪鍗村彉鎴愪簡$vicemaniac錛岃繖鏍稸eloctiy灝變笉鐭ラ亾鎮(zhèn)ㄥ埌搴曡浠涔堜簡銆傛墍浠ワ紝搴旇浣跨敤瑙勮寖鐨勬牸寮忎功鍐?錛?Jack is a ${vice}maniac
鐜板湪Velocity鐭ラ亾鍙橀噺鏄?vice鑰屼笉鏄?vicemaniac銆?
娉ㄦ剰錛氬綋寮曠敤灞炴х殑鏃跺欎笉鑳藉姞{}
(3) 鍙橀噺鐨勮祴鍊?
$name="hello"
璧嬪肩殑宸﹁竟蹇呴』鏄竴涓彉閲忔垨鑰呮槸灞炴у紩鐢ㄣ傚彸杈瑰彲浠ユ槸涓嬮潰鍏綾誨瀷涔嬩竴錛?
鍙橀噺寮曠敤,瀛楅潰瀛楃涓?灞炴у紩鐢?鏂規(guī)硶寮曠敤,瀛楅潰鏁板瓧,鏁扮粍鍒楄〃銆?
涓嬮潰鐨勪緥瀛愭紨紺轟簡涓婅堪鐨勬瘡縐嶇被鍨嬶細
#set( $monkey = $bill ) ## variable reference
#set( $monkey.Friend = "monica" ) ## string
#set( $monkey.Blame = $whitehouse.Leak ) ## property reference
#set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference
#set( $monkey.Number = 123 ) ##number
#set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList
娉ㄦ剰錛?鈶犲鏋滀笂榪頒緥瀛愪腑鐨勫彸鍊兼槸null, 鍒欏乏鍊間笉浼氳璧嬪鹼紝涔熷氨鏄浼氫繚鐣欎互鍓嶇殑鍊箋?
鈶elocity妯℃澘涓湭琚畾涔夌殑鍙橀噺灝嗚璁や負鏄竴涓瓧絎︿覆銆備緥濡傦細
#set($foo = "gibbous")
$moon = $foo
杈撳嚭緇撴灉涓猴細
$moon = gibbous
鈶?velocity 妯℃澘涓笉浼氬皢 reference 瑙i噴涓哄璞$殑瀹炰緥鍙橀噺銆備緥濡傦細 $foo.Name 灝嗚瑙i噴涓?Foo 瀵硅薄鐨?getName 錛堬級鏂規(guī)硶錛岃屼笉鏄?Foo 瀵硅薄鐨?Name 瀹炰緥鍙橀噺銆備緥濡傦細
$ foo.getBar() 絳夊悓浜?$ foo.Bar 錛?
$ data.getUser("jon") 絳夊悓浜?$ data.User("jon") 錛?
data.getRequest().getServerName() 絳夊悓浜?
$ data.Request.ServerName 絳夊悓浜?$ {data.Request.ServerName}
2. 寰幆
#foreach ($element in $list)
This is $element.
$velocityCount
#end
渚嬪瓙錛?
#set( $list = ["pine", "oak", "maple"])
#foreach ( $ element in $ list)
$velocityCount
This is $ element.<br>
#end
杈撳嚭鐨勭粨鏋滀負錛?
1 This is pine.
2 This is oak.
3 This is maple.
姣忔寰幆 $list 涓殑涓涓奸兘浼氳祴緇?$element 鍙橀噺銆?
$list 鍙互鏄竴涓?Vector銆?Hashtable 鎴栬?Array 銆傚垎閰嶇粰 $element 鐨勫兼槸涓涓?java 瀵硅薄錛屽茍涓斿彲浠ラ氳繃鍙橀噺琚紩鐢ㄣ備緥濡傦細濡傛灉 $element t 鏄竴涓?java 鐨?Product 綾伙紝騫朵笖榪欎釜浜у搧鐨勫悕瀛楀彲浠ラ氳繃璋冪敤浠栫殑 getName錛堬級 鏂規(guī)硶寰楀埌銆?
#foreach ( $key in $list.keySet())
Key: $key -> Value: $list.get($key) <br>
#end
鎻愮ず 錛歷elocity涓ぇ灝忓啓鏁忔劅銆?
Velocity榪樼壒鍒彁渚涗簡寰楀埌寰幆嬈℃暟鐨勬柟娉曪紝$velocityCount鍙橀噺鐨勫悕瀛楁槸Velocity榛樿鐨勫悕瀛椼?
渚嬪瓙錛?
First example:
#foreach ( $foo in [1..5] )
$foo
#end
Second example:
#foreach ( $bar in [2..-2] )
$bar
#end
Third example:
#set ( $arr = [0..1] )
#foreach ( $i in $arr )
$i
#end
涓婇潰涓変釜渚嬪瓙鐨勮緭鍑虹粨鏋滀負錛?
First example 錛?
1 2 3 4 5
Second example 錛?
2 1 0 -1 -2
Third example 錛?
0 1
3. 鏉′歡璇彞
#if (condition)
#elseif (condition)
#else
#end
4. 璇彞鐨勫祵濂?
#foreach ($element in $list)
## inner foreach 鍐呭驚鐜?
#foreach ($element in $list)
This is $element. $velocityCount < br > inner < br >
#end
## inner foreach 鍐呭驚鐜粨鏉?
## outer foreach
This is $element.
$velocityCount < br > outer < br >
#end
璇彞涓篃鍙互宓屽鍏朵粬鐨勮鍙ワ紝濡?if…#else…#end絳夈?
5. 娉ㄩ噴
(1)鍗曡娉ㄩ噴錛?br />
## This is a single line comment.
(2) 澶氳娉ㄩ噴錛?br />
#*
Thus begins a multi-line comment. Online visitors won’t
see this text because the Velocity Templating Engine will
ignore it.
*#
(3)鏂囨。鏍煎紡錛?br />
#**
This is a VTL comment block and
may be used to store such information
as the document author and versioning
information:
@version 1.1
@author xiao
*#
6. 鍏崇郴鍜岄昏緫鎿嶄綔絎?
Velocity 涔熷叿鏈夐昏緫AND, OR 鍜?NOT 鎿嶄綔絎︺?
濡?
## example for AND
#if($foo && $bar)
<strong> This AND that</strong>
#end
渚嬪瓙涓?if() 鎸囦護浠呭湪$foo 鍜?bar 鏂椾負鐪熺殑鏃跺欐墠涓虹湡銆傚鏋?foo 涓哄亣錛屽垯琛ㄨ揪寮忎篃涓哄亣錛涘茍涓?$bar 灝嗕笉琚眰鍊箋傚鏋?$foo 涓虹湡錛孷elocity 妯℃澘寮曟搸灝嗙戶緇鏌?bar鐨勫鹼紝濡傛灉 $bar 涓虹湡錛屽垯鏁翠釜琛ㄨ揪寮忎負鐪熴傚茍涓旇緭鍑篢his AND that 銆傚鏋?$bar 涓哄亣錛屽皢娌℃湁杈撳嚭鍥犱負鏁翠釜琛ㄨ揪寮忎負鍋囥?
7.Velocity 涓殑瀹?
Velocity涓殑 瀹忔垜浠彲浠ョ悊瑙d負鍑芥暟銆?
鈶犲畯鐨勫畾涔?
#macro(瀹忕殑鍚嶇О $鍙傛暟1 $鍙傛暟2 …)
璇彞浣?鍗沖嚱鏁頒綋)
#end
鈶″畯鐨勮皟鐢?
#瀹忕殑鍚嶇О($鍙傛暟1 $鍙傛暟2 …)
璇存槑錛氬弬鏁頒箣闂寸敤絀烘牸闅斿紑銆?
8錛?#stop
鍋滄鎵ц妯℃澘寮曟搸騫惰繑鍥?鎶婂畠搴旂敤浜巇ebug鏄緢鏈夊府鍔╃殑銆?
9錛?include 涓?parse
#include鍜?parse鐨勪綔鐢?閮芥槸 寮曞叆鏈湴鏂囦歡, 涓轟簡瀹夊叏鐨勫師鍥狅紝琚紩鍏ョ殑鏈湴鏂囦歡鍙兘鍦═EMPLATE_ROOT鐩綍涓嬨?
鍖哄埆錛?
(1) 涓?include涓嶅悓鐨勬槸錛?parse鍙兘鎸囧畾鍗曚釜瀵硅薄銆傝?include鍙互鏈夊涓?
濡傛灉鎮(zhèn)ㄩ渶瑕佸紩鍏ュ涓枃浠訛紝鍙互鐢ㄩ楀彿鍒嗛殧灝辮錛?
#include ( " one.gif " , " two.txt " , " three.htm " )
鍦ㄦ嫭鍙峰唴鍙互鏄枃浠跺悕錛屼絾鏄洿澶氱殑鏃跺欐槸浣跨敤鍙橀噺鐨勶細
#include ( “greetings.txt”, $seasonalstock )
(2) #include琚紩鍏ユ枃浠剁殑鍐呭灝嗕笉浼氶氳繃妯℃澘寮曟搸瑙f瀽錛?
鑰?parse 寮曞叆鐨勬枃浠跺唴瀹?Velocity 灝嗚В鏋愬叾涓殑 velocity 璇硶騫剁Щ浜ょ粰妯℃澘錛屾剰鎬濆氨鏄鐩稿綋涓庢妸寮曞叆鐨勬枃浠?copy 鍒版枃浠朵腑銆?
#parse鏄彲浠ラ掑綊璋冪敤鐨勶紝渚嬪錛氬鏋渄ofoo.vm鍖呭惈濡備笅琛岋細
Count down.<br>
#set ($count = 8)
#parse ("parsefoo.vm")
<br>All done with dofoo.vm!
閭d箞鍦╬arsefoo.vm妯℃澘涓紝浣犲彲浠ュ寘鍚涓媀TL錛?
$count
#set($count = $count - 1)
#if ( $count > 0 )<br>
#parse( "parsefoo.vm" )
#else
<br>All done with parsefoo.vm!
#end 鐨勬樉紺虹粨鏋滀負錛?
Count down.
8
7
6
5
4
3
2
1
0
All done with parsefoo.vm!
All done with dofoo.vm!
娉ㄦ剰錛氬湪 vm涓嬌鐢?parse鏉ュ祵濂楀彟澶栦竴涓獀m鏃剁殑鍙橀噺鍏變韓闂銆傚錛?br /> ->a.vm 閲屽祵濂?b.vm錛?br /> ->a.vm 閲屽畾涔変簡鍙橀噺 $param錛?br /> ->b.vm 閲屽彲浠ョ洿鎺ヤ嬌鐢?param錛屾棤浠諱綍闄愬埗銆?br /> 浣嗛渶瑕佺壒鍒敞鎰忕殑鏄紝濡傛灉b.vm閲屽悓鏃跺畾涔夋湁鍙橀噺$param錛屽垯b.vm閲屽皢浣跨敤b.vm閲屽畾涔夌殑鍊箋?
10錛庤漿涔夊瓧絎?\'鐨勪嬌鐢?
濡傛灉reference琚畾涔夛紝涓や釜’\’鎰忓懗鐫杈撳嚭涓涓?#8217;\’錛屽鏋滄湭琚畾涔夛紝鍒氭寜鍘熸牱杈撳嚭銆傚錛?
#set($email = "foo" )
杈撳嚭錛?
foo
$email
\foo
\$email
濡傛灉 $email 鏈畾涔?
杈撳嚭錛?
$email
\$email
\\$email
\\$email
11錛?鍐呯疆瀵硅薄
Velocity鍐呯疆浜嗕竴浜涘璞★紝鍦╲m妯$増閲屽彲浠ョ洿鎺ヨ皟鐢紝鍒椾婦濡備笅錛?br />
$request銆?response銆?session錛屽彟澶栵紝妯℃澘鍐呰繕鍙互浣跨敤 $msg鍐呯殑娑堟伅宸ュ叿璁塊棶 Struts 鐨勫浗闄呭寲璧勬簮錛岃揪鍒扮畝渚垮疄鐜板浗闄呭寲鐨勬柟娉曘?
12. 鏁扮粍璁塊棶
瀵規(guī)暟緇勭殑璁塊棶鍦╒elocity 涓瓨鍦ㄩ棶棰橈紝鍥犱負Velocity鍙兘璁塊棶瀵硅薄鐨勬柟娉曪紝鑰屾暟緇勫張鏄竴涓壒孌婄殑Array錛屾墍浠ヨ櫧鐒舵暟緇勫彲浠ヨ繘琛屽驚鐜垪涓撅紝浣嗗嵈涓嶈兘瀹氫綅璁塊棶鐗瑰畾浣嶇疆鐨勫厓绱狅紝濡?strs[2]錛屾暟緇勫鍥哄畾浣嶇疆鍏冪礌鐨勮闂皟鐢ㄤ簡Array鐨勫弽灝勬柟娉昰et(Object array, int index)錛岃孷elocity娌¤兘鎻愪緵榪欐牱鐨勮闂紝鎵浠ユ暟緇勮涔堟敼鎴怢ist絳夊叾浠栫被瀹瑰櫒鐨勬柟寮忔潵鍖呰錛岃涔堝氨閫氳繃鍏敤Util綾葷殑鏂瑰紡鏉ユ彁渚涳紝浼犲叆鏁扮粍瀵硅薄鍜岃璁塊棶鐨勪綅緗弬鏁幫紝浠庤岃揪鍒拌繑鍥炴墍闇鍊肩殑鐩殑銆?
紺轟緥閮ㄥ垎
1錛嶩ello world鐨勭ず渚嬩唬鐮侊細
(1)Velocity妯℃澘 (hello.html)
<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
hello,$name! 錛堟敞鎰忥細榪欓噷鐨刵ame涓嶸elocityTest.java涓殑鍚嶇О瑕佷竴鑷達級
</BODY>
</HTML>
(2)灝唙elocity妯℃澘鐨勫唴瀹硅漿鎹㈢殑綾?VelocityTest.java)
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.io.Writer;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
/**
* Velocity杞崲
* @author
*/
public class VelocityTest
{
/**
* 涓誨嚱鏁?
* @param args
*/
public static void main(String[] args)
{
//鑾峰彇妯℃澘寮曟搸
VelocityEngine ve = new VelocityEngine();
//妯℃澘鏂囦歡鎵鍦ㄧ殑璺緞
String path = "D:/java/jproject/regedit/webroot";
//璁劇疆鍙傛暟
ve.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);
//澶勭悊涓枃闂
ve.setProperty(Velocity.INPUT_ENCODING,"GBK");
ve.setProperty(Velocity.OUTPUT_ENCODING,"GBK");
try
{
//鍒濆鍖栨ā鏉?
ve.init();
//鑾峰彇妯℃澘(hello.html)
Velocity 妯℃澘鐨勫悕縐?
Template template = ve.getTemplate("hello.html");
//鑾峰彇涓婁笅鏂?
VelocityContext root = new VelocityContext();
//鎶婃暟鎹~鍏ヤ笂涓嬫枃
root.put("name","world"); 錛堟敞鎰忥細涓庝笂闈㈢殑瀵瑰簲錛?
//杈撳嚭璺緞
Strint outpath = "e:/helloworld.html";
//杈撳嚭
Writer mywriter = new PrintWriter(new FileOutputStream(
new File(outpath)));
template.merge(root, mywriter);
mywriter.flush();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
(3)鐜鐨勬惌寤?
鍦╨ib鐩綍鍐呭垎鍒玞opy 榪涳細velocity-1.4.jar錛寁elocity-dept.jar;
涓嬭澆鍦板潃錛歨ttp://jakarta.apache.org/velocity/
(4)榪愯鍚庣殑緇撴灉濡備笅錛?
<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
hello,world!
</BODY>
</HTML>
2錛?Servlet鍜孷elocity緇撳悎 紺轟緥
(1)example.html
<html>
<head><title>Velocity</title></head>
<body bgcolor="#ffffff">
<center>
<h2>Welcom to Velocity!</h2>
<i>Here's the list of people</i>
<table cellspacing="0" cellpadding="5" width="20%" >
<tr>
<td bgcolor="#eeeeee" align="center">
Names錛?br />
</td>
</tr>
#foreach ($name in $theList)
<tr>
<td bgcolor="#eeeeee" align="center">$name</td>
</tr>
#end
</table>
</center>
</body>
</html>
(2)servlet
package com.koal.velocity;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Properties;
import java.util.Vector;
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.velocity.Template;
import org.apache.velocity.context.Context;
import org.apache.velocity.servlet.VelocityServlet;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.exception.ParseErrorException;
public class SampleServlet extends VelocityServlet
{
/**
* 鐢盫elocityServlet.init()璋冪敤錛?
* 鍦ㄦ鎵懼嚭妯$増鐨勮礬寰?
*/
protected Properties loadConfiguration(ServletConfig config )
throws IOException, FileNotFoundException {
Properties p = new Properties();
//鍙栧緱璺緞
String path = config.getServletContext().getRealPath("/");
if (path == null)
{
System.out.println(" SampleServlet.loadConfiguration() : unable to "
+ "get the current webapp root. Using '/'. Please fix.");
path = "/";
}
//璁劇疆璺緞
p.setProperty( Velocity.FILE_RESOURCE_LOADER_PATH, path);
return p;
}
/**
* Velocity涓昏鐨勫晢涓氶昏緫澶勭悊鏂規(guī)硶錛岀敱VelocityServlet鑷姩璋冪敤
* @param ctx 妯℃澘涓婁笅鏂?nbsp;
* @return Template 妯℃澘淇℃伅
*/
public Template handleRequest( HttpServletRequest request,
HttpServletResponse response, Context ctx )
{
//涓昏鍦ㄦ璁劇疆婕旂ず鐢ㄧ殑鏁版嵁錛屽紑鍙戜腑鍦ㄦ璋冪敤鐩稿簲鐨勪笟鍔″鐞嗘祦紼嬶紝
//騫惰緗繑鍥炲埌欏甸潰鐨勬暟鎹?
//寰呭睍紺虹殑鍒楄〃鏁版嵁
String p1 = "絎竴浣嶏細LiuDong";
String p2 = "絎簩浣嶏細Liang.xf";
Vector personList = new Vector();
//涓枃闇瑕佽漿鎹?br />
try {
personList.addElement(new String(p1.getBytes(), "ISO-8859-1") );
personList.addElement(new String(p2.getBytes(), "ISO-8859-1") );
} catch (Exception e) {
System.out.println("鏁版嵁杞崲寮傚父錛?+e);
}
//璁劇疆鏁版嵁錛屼緵欏甸潰妯$増鏇挎崲鎴愭樉紺虹殑鏁版嵁
ctx.put("theList", personList );
//瀹氫箟妯℃澘
Template outty = null;
try
{
//鍙栨ā鏉?
outty = getTemplate("example.html");
}
catch( ParseErrorException pee )
{
System.out.println("SampleServlet: parse error for template " + pee);
}
catch( ResourceNotFoundException rnfe )
{
System.out.println("SampleServlet: template not found " + rnfe);
}
catch( Exception e )
{
System.out.println("Error " + e);
}
return outty;
}
(3)鍦╳eb.xml涓殑閰嶇疆錛?
<web-app>
<servlet>
<servlet-name>SampleServlet</servlet-name>
<servlet-class>com.koal. velocity .SampleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SampleServlet</servlet-name>
<url-pattern>/SampleServlet</url-pattern>
</servlet-mapping>
</web-app>
(4)鐜鐨勬惌寤?
鍦╨ib鐩綍鍐呭垎鍒?copy榪涳細commons-collections.jar , velocity- 1.4.jar錛寁elocity-dept.jar;
Tomcat榪愯鐜姝e父銆?br />
鍚姩Tomcat錛屽湪IE涓婅緭鍏ワ細 http://localhost:8080/example 錛岄〉闈㈡樉紺烘暟鎹垪琛細
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/mmm123lmj/archive/2009/11/19/4833620.aspx