velocity 模板

一、应用场景:
1.Web 应用:开发者在不使用 JSP 的情况下,可以用 Velocity 让 HTML 具有动态内容的特性。前后台隔离
2. 源代码生成:Velocity 可以被用来生成 Java 代码、SQL 或者 PostScript。有很多开源和商业开发的软件是使用 Velocity 来开发的。
3. 自动 Email:很多软件的用户注册、密码提醒或者报表都是使用 Velocity 来自动生成的。使用 Velocity 可以在文本文件里面生成邮件内容,而不是在 Java 代码中拼接字符串。
4. 转换 xml:Velocity 提供一个叫 Anakia 的 ant 任务,可以读取 XML 文件并让它能够被 Velocity 模板读取。一个比较普遍的应用是将 xdoc 文档转换成带样式的 HTML 文件。
二、利用模板生成 
package core.test.velocity;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.runtime.RuntimeConstants;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;

/**
 * velocity 生成代码,还有其他的功能,email模板,自动生成代码,web前后台分离,转XML模板
 * @author chenyd
 * 2017年10月17日
 */
public class hellovelocity {
    
    public static void main(String[] args) throws IOException {
        // 初始化模板引擎
        VelocityEngine ve = new VelocityEngine();
         ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
         ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
        ve.init();
        // 获取模板文件
        Template t = ve.getTemplate("core/test/velocity/hellovelocity.vm");
        // 设置变量
        VelocityContext ctx = new VelocityContext();
        ctx.put("name", "Velocity");
        ctx.put("flag", "true");
        List list = new ArrayList();
        list.add("1");
        list.add("2");
        ctx.put("list", list);
        // 输出
        File f=new File("E:/cyd/poject/maven/MSpringFrame/src/core/test/velocity/hellovelocity.txt");
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f)));
        t.merge(ctx,bw);
        System.out.println(bw.toString());
        bw.flush();
        bw.close();
    }
}

hellovelocity.vm

#set($greet = 'hello')

$greet $name
 
#foreach($i in $list)
$i
#end

#if($flag)
    true
#elseif($flag)
    false    
#else
    
#end

 

三、模板方式导出word文档
word以XML文件保存,动态生成数据。于利用模板生成文件类似。
 
 

 

posted @ 2017-11-29 18:37  litblack  阅读(822)  评论(0编辑  收藏  举报