Jakarta
Velocity 简介Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。(以上简介内容很贴切,来自互联网)
Velocity是很多模板工具的核心,这是我研究此的目的。
下面给出一个最基本的例子,本例程依赖的核心包:
velocity-1.5.jar
velocity-dep-1.5.jar
开发Velocity的开发流程如下:
一、定义Bean、用来传递参数。
package simple;
/**
* Created by IntelliJ IDEA.<p>
* User: leizhimin<p>
* Date: 2008-8-16 23:46:03<p>
* 普通的JavaBean,用来携带模板参数
*/
public class Person {
private String name;
private String sex;
private int age;
public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
二、定义模板
person.vm
<personlist>
<person>
<name>$person.name</name>
<sex>$person.sex</sex>
<sex>$person.age</sex>
</person>
</personlist>
三、测试
package simple;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import java.io.*;
/**
* Created by IntelliJ IDEA.<p>
* User: leizhimin<p>
* Date: 2008-8-16 23:37:43<p>
* 通过一个简单的示例演示Velocity的工作原理和流程
*/
public class SimpleTest {
public static void main(String[] args) throws Exception {
test();
}
public static void test() throws Exception {
Person p = new Person("zhangsan", "men", 22);
// 初始化Velocity引擎,init对引擎VelocityEngine配置了一组默认的参数
// VelocityEngine是单例模式,线程安全
Velocity.init();
// 创建一个上下文环境,此实例是非线程安全的
VelocityContext context = new VelocityContext();
// 用对象填充context
context.put("person", p);
// 通过一个FileReader读取模板文件
Reader reader = new FileReader(new File("Q:\\_dev_stu\\commons_stu\\velocity\\src\\simple\\person.vm"));
// 创建一个字符串输出流,模板输出的目标
StringWriter writer = new StringWriter();
// 根据模板上下文对模板求值,logMsgName字符串为发生异常时候记录模板异常提供方便
Velocity.evaluate(context, writer, "logMsgName", reader);
// 将求值的结果从控制台输出
System.out.println(writer.toString());
}
}
运行结果:
<personlist>
<person>
<name>zhangsan</name>
<sex>men</sex>
<sex>22</sex>
</person>
</personlist>
Process finished with exit code 0
可以看出,输入内容是按照模板来输出的。
Velocity应用的难点在于其控制语法,下篇会详细讲述。
页:
[1]