Velocity测试Demo
Velocity 介绍
Velocity是一个基于java的模板引擎。它允许任何人使用简单但功能强大的模板语言引用Java代码中定义的对象。
当Velocity用于web开发时,web设计人员可以与Java程序员并行工作,根据模型-视图-控制器(MVC)模型开发web站点,这意味着web页面设计人员可以只专注于创建看起来不错的站点,而程序员可以只专注于编写一流的代码。Velocity将Java代码从web页面中分离出来,使web站点在其生命周期内更具可维护性,并为Java服务器页面(jsp)或PHP提供了一个可行的替代方案。
Velocity的功能远远超出了web的范围;例如,它可以用来从模板生成SQL、PostScript和XML。它既可以作为生成源代码和报告的独立实用程序使用,也可以作为其他系统的集成组件使用。例如,Velocity为各种web框架提供模板服务,使它们能够使用视图引擎,以便根据真正的MVC模型开发web应用程序。
Velocity 主要使用场景
Web 应用:开发者在不使用 JSP 的情况下,可以用 Velocity 让 HTML 具有动态内容的特性。
源代码生成:Velocity 可以被用来生成 Java 代码、SQL 或者 PostScript。
自动 Email:很多软件的用户注册、密码提醒或者报表都是使用 Velocity 来自动生成的。
转换 xml。
Velocity语法使用
在 Velocity 中所有的关键字都是以#开头的,而所有的变量则是以$开头。Velocity 的语法类似于 JSP 中的 JSTL,甚至可以定义类似于函数的宏,下面来看看具体的语法规则。
“#”用来标识velocity的关键字,包括#set、#if、#else、#end 、#foreach、#include、#parse、 #macro
"
"
用
来
标
识
v
e
l
o
c
i
t
y
的
变
量
,
如
"用来标识velocity的变量,如
"用来标识velocity的变量,如i、
a
b
c
、
abc、
abc、obj.attr等。
“{}”用来明确标识velocity变量,比如在页面中,页面中有一个
s
o
m
e
o
n
e
n
a
m
e
,
此
时
,
v
e
l
o
c
i
t
y
把
s
o
m
e
o
n
e
n
a
m
e
作
为
变
量
名
,
若
我
们
还
有
一
个
变
量
是
s
o
m
e
o
n
e
,
我
们
想
在
后
面
拼
接
字
符
串
"
n
a
m
e
"
,
就
可
以
写
成
someonename,此时,velocity把someonename作为变量名,若我们还有一个变量是someone,我们想在后面拼接字符串"name",就可以写成
someonename,此时,velocity把someonename作为变量名,若我们还有一个变量是someone,我们想在后面拼接字符串"name",就可以写成{someone}name。
“!”如果一个变量不存在,加叹号会显示为空白。例如:找不到
u
s
e
r
n
a
m
e
的
时
候
,
username的时候,
username的时候,username会返回字符串“
u
s
e
r
n
a
m
e
”
,
而
username”,而
username”,而!username会返回空字符串。
1.变量定义
#set($name = “velocity”)
#set($hello = “hello $name”)
2.变量的使用
在模板文件中使用name或者name或者{name} 来使用定义的变量。推荐使用 name这种格式,因为在模板中同时可能定义了类似name这种格式,因为在模板中同时可能定义了类似name 和 names的两个变量,如果不选用大括号的话,引擎就没有办法正确识别names的两个变量,如果不选用大括号的话,引擎就没有办法正确识别names 这个变量。
#set($name =“ricky”)
Welcome $name to velocity.com
3.循环
在 Velocity 中循环语句的语法结构如下:
#foreach($item in $list)
$!item
#end
4.条件语句
条件语句的语法如下:
#if(condition)
#elseif(condition)
#else
#end
5.关系操作符
velocity中的与非门操作
#if($a || $b)
#end
6.宏
Velocity 中的宏可以理解为函数定义。定义的语法如下:
#macro(macroName arg1 arg2 …)
#end
调用这个宏的语法是:
#macroName(arg1 arg2 …)
这里的参数之间使用空格隔开,下面是定义和使用 Velocity 宏的例子:
#macro(sayHello $name)
hello $name #end
#sayHello(“velocity”)
7.#parse和#include
这两个指令的功能是在外部引用文件,区别是#parse会将引用的内容当成类似于源码文件,会将内容在引入的地方进行解析,#include是将引入文件当成资源文件,原封不动的以文本输出。