1.参考文献
http://www.cnblogs.com/zhuboxingzbx/articles/1225103.html
http://www.cnblogs.com/amboyna/archive/2008/06/19/1225105.html
2.概述
2.1.Velocity模板引擎
模板引擎的设计思想最早由Webmacro提出,并被应用在一个著名的搜索引擎www.altavista.com上。后来,这种思想渐渐被Apache开发小组所采用,并作为一个子项目被提出来,这就是现在的Velocity。
模板引擎与MVC中视图部分的关系更为密切。Velocity可以应用在任何需要格式化数据显示的Java程序中。那么Velocity到底是什么呢?它的官方解释是:“Velocity是一种基于Java的模板引擎,它允许任何人使用简单而强大的模板语言来引用定义在Java代码中的对象。”
2.2.使用Velocity的优点在于:
- 很容易集成在各种各样的程序领域中;
- 为网页制作人员提供了一种清晰而简单的语法;
- 因为模板和代码是分离的,所以可以分别独立的开发和维护它们;
- Velocity引擎可以很容易地集成到一些Java运行环境,特别是Servlet中;
- Velocity使得模板可以访问任何环境对象中的共有方法。
2.3.Velocity最擅长做的工作包括:
- ◆ 基于Servlet的网站制作;
- ◆ Java和SQL代码生成;
- ◆ XML处理和转换;
- ◆ 文字处理,比如生成trf文件等。
Velocity非常适合在J2EE(Java 2 Platform,Enterprise Edition)的网站开发中替代JSP,做输出页面的技术工作。虽然JSP包含在J2EE规范中,但是J2EE本身并不需要JSP。
3.实例
3.1.实例1
模板(hellosite.vm)只是提供一些静态的字符,中间加杂着一些类如$title的“通配符”,这是要在HelloWorld.java中替换的。下面是hellosite.vm的代码:
- Hello $name! Welcome to $site world!
HelloWorld.java就是处理程序了,其中注释写的很清楚了,下面是HelloWorld.java的代码:
- import java.io.StringWriter;
- import org.apache.velocity.app.VelocityEngine;
- import org.apache.velocity.Template;
- import org.apache.velocity.VelocityContext;
- public class HelloWorld {
- public static void main(String[] args) throws Exception {
- /* first, get and initialize an engine */
- VelocityEngine ve = new VelocityEngine();
- ve.init();
- /* next, get the Template */
- Template t = ve.getTemplate("hellosite.vm");
- /* create a context and add data */
- VelocityContext context = new VelocityContext();
- context.put("name", "xuwei");
- context.put("site", "http://blog.csdn.net/xw13106209");
- /* now render the template into a StringWriter */
- StringWriter writer = new StringWriter();
- t.merge(context, writer);
- /* show the World */
- System.out.println(writer.toString());
- }
- }
3.2.实例2
这里模板和实例1的相同,java代码有所不如,代码如下。
- import java.io.StringWriter;
- import org.apache.velocity.app.VelocityEngine;
- import org.apache.velocity.Template;
- import org.apache.velocity.VelocityContext;
- public class HelloWorld2 {
- public static void main(String[] args) throws Exception {
- // 初始化Velocity模板引擎
- VelocityEngine ve = new VelocityEngine();
- ve.init("D:\\Documents\\workspace\\VelocityTest\\a.properties");
- // Velocity获取模板文件,得到模板引用
- Template t = ve.getTemplate("hellosite.vm");
- // 初始化环境,并将数据放入环境
- VelocityContext context = new VelocityContext();
- context.put("name", "xuwei");
- context.put("site", "http://blog.csdn.net/xw13106209");
- // 将环境变量和输出部分结合
- StringWriter writer = new StringWriter();
- t.merge(context, writer);
- System.out.println(writer.toString());
- }
- }
- runtime.log = velocity_example.log
- input.encoding=gbk
- output.encoding=gbk
- file.resource.loader.path=D:\\Documents\\workspace\\VelocityTest
本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2011/12/06/2296915.html,如需转载请自行联系原作者