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文件保存,动态生成数据。于利用模板生成文件类似。
![](https://images2017.cnblogs.com/blog/990457/201711/990457-20171129182414003-1724409947.png)
参考链接:
用例和语法详解 http://blog.csdn.net/qq_25237663/article/details/52262532
生成代码:https://www.ibm.com/developerworks/cn/java/j-lo-velocity1/