Velocity 为 Java Web 应用开发“增速”
时间:2007-10-22 来源:不详 作者:林子
保存hellovelocity.vm模板,然后再新建一个HelloVelocity.java文件,这两个文件最好放入同一目录下。下面是HelloVelocity.java的代码,它显示了在Java程序中调用Velocity模板引擎的一般过程。
import java.io.StringWriter;import org.apache.velocity.app.VelocityEngine;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;public class HelloVelocity{ public static void main(String[] args) throws Exception { /* 首先创建一个模板引擎的实例,并予以初始化 */ VelocityEngine engine = new VelocityEngine(); engine.init(); /* 接着,获得一个模板 */ Template template = engine.getTemplate( "hellovelocity.vm" ); /* 创建上下文,填充数据 */ VelocityContext context = new VelocityContext(); context.put("name", "World"); /* 现在,把模板和数据合并,输出到StringWriter */ StringWriter writer = new StringWriter(); template.merge( context, writer ); /* 显示结果 */ System.out.println( writer.toString() ); } }
准备好两个文件后,编译Java文件并运行。如果一切顺利的话,你可以看到下面的输出:
Hello World, this is Velocity working!
三、VTL语言及其应用
下面我们简单地分析一下这个例子。在模板文件中,唯一特别的部分是$name。$name是Velocity模板语言(VTL,Velocity Template Language)的一个变量,VTL利用这种方法将动态内容插入到静态文本之中。
在VTL中,所有变量标识符的开头要加上$字符,变量标识符被映射到稍后即将讨论的VelocityContext对象。在模板引擎处理模板时,变量名称(如name)被替换成VelocityContext中提供的值(如World)。顺便提一下,变量还可以用一种更加明确的方法表示,例如${name}。
当然,这只能算一个对VTL的极为简要、粗略的说明。实际上,VTL还有许多强大的功能,例如迭代列表、在模板内部创建变量,甚至还允许创建宏以实现自动化。
再来看看本例的Java代码。从上面的代码可以看出我们应该如何构造VelocityEngine对象并予以初始化,以及如何创建一个读取模板文件的Template对象。
文章评论
共有位Admini5网友发表了评论 查看完整内容