Velocity简介
Velocity主要目的简化WEB动态页面的开发,能够更加清晰地把VIEW和其他MVC组件区别开。Velocity不但可以用于开发WEB页面,同时也可以用于开发独立运行的应用程序,比如SQL或XML。可以直接支持Turbine Web 应用框架,以及Servlets、Texan等。View和Model通过Context来进行数据关联,将对应的模板渲染成HTML页面。
使用指南
Velocity模板引擎,通过上下文来处理Model和View中的数据信息,模板引擎通过VTL语法来渲染HTML页面。和基本的语言一样,VTL语法中少不了变量和语法两方面的内容。模板文件和通常的html网页没有太多的区别,基本上是在HTML嵌入VTL语法。
注释以及转义
Velocity中代码注释使用##,只能单行注释。
例如:
## 这是一行注释
Velocity中的转义字符”,对于代码中输出指令语句等使用
例如:
"#include("test.txt")
引用类型
引用类型包括了三种基本类型,变量、属性和方法。
变量都是开始的,其对应的属性和方法访问方式和JAVA对象的访问方式是一样的。在Velocity模板中通常可以引用的对象是java.lang.Object对象,在模板引擎中使用变量时,只可以使用属性和对应的方法,针对Java对象的特殊语法,在模板引擎中不可以使用。比如数组的[],只能通过get方法替代。变量通常可以通过context上下文加载,并由模板引擎来处理。在模板中使用!符号时,velocity引擎默认不对空值进行处理。
指令
stop指令
通常用于程序调试,使用#stop指令,告诉模板引擎后面的模板不再执行。
例如:stop.vm
## starting
this is before
## stop processing
#stop
this will not be processed
## end
include指令
include指令用于引入其他的文件,引入的文件将会被当做静态文件来处理。
例如:include.vm
#include("test1.txt")
#include("test2.vm")
parse指令
parse指令和include指令类似,也是用于引入其他的外部文件。不同的是parse引入的文件通常是动态文件,并且parse指令中允许嵌套。
set赋值指令
set指令可以用于创建一个新的实例,或者更新一个已经存在的实例。set指令中也支持基本的数据运算
例如:
#set($username="liujie")
$username
#set($username="new user")
$username
#set($age=100 / 4)
条件判断指令
支持的基本语法#if/#else/#elseif/#end,判断条件也支持<, >, <=, >=, !=, ==,这和Java标准语法是一致的。
foreach循环指令
和java中的语法相同,用于循环执行
例如:
#foreach($item in [1..5])
$item
#end
#foreach($item in ["one", "two", "three“, "four"])
$item
#end
该语法中支持数组类型的对象,对应Java中的对象有Collection, Map, Iterator,Enumeration,Listing(如LinkedList)类型。
macro宏定义
提供了一个构建模板代码复用的机制,类似于Java中的函数。
例如:
#macro( sayHi $username)
Hello $username
#end
#sayHi("liujie")
内置变量
sessioin、request、$response