江西广告网

标题: Jakarta [打印本页]

作者: 有烟没火    时间: 2009-2-20 11:18
标题: 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应用的难点在于其控制语法,下篇会详细讲述。




欢迎光临 江西广告网 (http://bbs.jxadw.com/) Powered by Discuz! X3.2