2024年3月21日发(作者:)

Velocity模板语言

Velocity是由Apache软件组织提供的一项开放源码项目,它是

一个基于Java的模板引擎。

网页制作者可以通过Velocity模板语言(Velocity Template

Language,VTL)定义模板(template),并且在模板中不包含任何

Java程序代码。Java开发人员编写程序代码来设置上下文,它包含了

用于填充模板的数据。Velocity引擎能够把模板和上下文合并起来,

生成动态网页。

VTL模板和JSP网页的区别在于:在VTL模板中不包含任何Java

代码,并且VTL模板不同经过JSP编译器的编译,VTL模板的解释是

由Velocity引擎来完成的。

尽管Velocity也可用于其它独立应用程序的开发,但其主要用途

是简化Web应用开发。Velocity将Java代码从Web页面中分离出

来,使Web站点在长时间运行后仍然具有很好的可维护性。

创建基于Velocity的Web应用包括两个步骤:

(1)创建Velocity模板;

(2)创建扩展VelocityServlet的Servlet类。

在Velocity模板语言中,"$"符号表示跟随其后的字符串为变量。

如果要把"$"符号作为普通字符串处理,应该采用"$"的形式。

VelocityServlet类,它是HttpServlet类的子类。它由两个重要

方法:loadConfiguration方法handleRequest方法。

loadConfiguration方法类似于HttpServlet类的Init方法,区别

在于loadConfiguration方法返回ties对象。

handleRequest方法类似于HttpServlet类的doGet和doPost

方法,区别在于handleRequest方法中增加了一个

t类型的参数,Context类用来

存放所有用于显示到HTML页面上的数据。

例子:

第一步,创建一个文件名为的简单的模板文件,它的内

容如下:$hello

第二步,创建扩展了VelocityServlet的HelloServlet类。

在它的loadConfiguration方法中把模板所在的文件路

径及Velocity日志文件路径作为属性存放在Properties对象中,然后

返回Properties对象;

在handleRequest方法中把变量hello对应的数据存放在context

对象中,handleRequest方法接下来获得模板,然后返回代

表模板的Template对象。

注释:

在VTL中,单行注释的前导符为"##",对于多行注释,则采用

"#*"和"*#"符号。

引用:在VTL中有3中类型的引用:变量、属性和方法。

变量引用:

变量引用的简略标记是由一个前导"$"字符后跟一个VTL标识符组

成的。一个VTL标识符必须以一个字母开始,剩下的字符将由以下类

型的字符组成:字母,数字,连字符,下划线。

给引用变量赋值有两种方法,一种办法是在Java代码中给变量赋

值,此外,也可以在模板中通过#set指令给变量赋值,例如

#set($foo="bar") the output is $foo.

属性引用: