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 官方主页:http://velocity.apache.org/

最新版本下载地址:http://velocity.apache.org/download.cgi#engine

 JAVA引擎模板技术应该算是比较老的技术了,最后更新的版本是1.7 Released,以下实例均使用该最新版本

 

实例

App

Velocity可以应用在普通java程序中,下面简单介绍其使用

 

依赖包

需导入以下jar包

commons-beanutils-1.7.0.jar

commons-collections-3.2.jar

commons-digester-1.8.jar

commons-lang-2.2.jar

commons-logging-1.1.jar

velocity-1.7.jar

 

Demo程序

package com.velocity.demo.app;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.OutputStreamWriter;
import java.util.Properties;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;

/**
 * Velocity App Demo
 * 
 * @author Yaphis 2014年6月17日 上午9:58:17
 */
public class VelocityAppDemo {

    public static void main(String[] args) {
        BufferedWriter writer = null;// 输出流
        try {
            String classPath = VelocityAppDemo.class.getResource("/").getPath();
            String velocityProp = classPath + "appVelocity.properties";
            Properties prop = new Properties();
            prop.load(new FileReader(new File(velocityProp)));
            
            Velocity.init(prop);// 也可以使用其他初始化构造方法

            VelocityContext context = new VelocityContext();
            String str[] = new String[] { "A1", "A2", "A3" };
            context.put("list", str);

            Template template = Velocity.getTemplate("hello.vm");// 该文件夹必须在工程根目录下

            writer = new BufferedWriter(new OutputStreamWriter(System.out));

            if (null != template) {
                template.merge(context, writer);
            }

            writer.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != writer) {
                    writer.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
    }
}

 

 

Web

Velocity可以应用在Web程序中,下面简单介绍其使用

 

依赖包

除上面APP程序导入的jar包外,还需导入velocity-tools-view-2.0.jar

 

Demo程序

只贴出核心代码,完整工程示例见附件VelocityDemo.zip

package com.velocity.demo.web;

import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.velocity.Template;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.context.Context;
import org.apache.velocity.tools.view.VelocityViewServlet;

/**
 * Velocity Servlet Demo 继承VelocityViewServlet重写handleRequest快速开发 具体实现可以去读源码
 * 
 * @author Yaphis 2014年6月17日 上午10:58:25
 */
public class VelocityServletDemo extends VelocityViewServlet {

    private static final long serialVersionUID = 975360877834044842L;

    @Override
    public void init() throws ServletException {
        String webApppath = this.getServletContext().getRealPath("/");
        Properties prop = new Properties();
        prop.setProperty("file.resource.loader.path", webApppath + "webTemplate");// 设置template文件的目录
        Velocity.init(prop);
    }

    @Override
    protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) {
        try {
            String[] str = new String[] { "T1,T2,T3" };
            ctx.put("list", str);

            Template template = Velocity.getTemplate("hello.vm");
            return template;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值