找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 站长资讯 业界 查看内容

Jakarta Velocity 起步

2009-12-25 00:15| 发布者: admin| 查看: 57| 评论: 0|原作者: 天仙子

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.

* User: leizhimin

* Date: 2008-8-16 23:46:03

* 普通的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


$person.name
$person.sex
$person.age





三、测试
package simple;

import org.apache.velocity.VelocityContext;

import org.apache.velocity.app.Velocity;

import java.io.*;

/**
* Created by IntelliJ IDEA.

* User: leizhimin

* Date: 2008-8-16 23:37:43

* 通过一个简单的示例演示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());
}
}

运行结果:


zhangsan
men
22




Process finished with exit code 0

可以看出,输入内容是按照模板来输出的。



最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 03:33 , Processed in 0.156830 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部