Java使用 VelocityEngine模板引擎快速生成HTML等各种代码

https://blog.csdn.net/icannotdebug/article/details/79725297

一、简介

Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上
说白了就类似于jsp,java中定义对应的对象,模板载入后,可以对象信息动态加载入模板

二、使用方式

1、引入pom(老生常谈)

<dependency>
     <groupId>org.apache.velocity</groupId>
     <artifactId>velocity-engine-core</artifactId>
     <version>2.0</version>
</dependency>

最新的开发包和maven配置

2、创建模板文件(Hellovelocity.vm)

#set( $iAmVariable = "good!" )
Welcome $name to velocity.com
today is $date.
#foreach ($i in $list)
    $i
#end
$iAmVariable

3、编写测试main

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;

import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * @author: <a href="mailto:wb-lzl282164@alibaba-inc.com">李智龙</a>
 * @date: 2018/3/28
 */
public class HelloVelocity {
    public static void main(String[] args) {
        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("hellovelocity.vm");
        VelocityContext ctx = new VelocityContext();
        // 域对象加入参数值
        ctx.put("name", "李智龙");
        ctx.put("date", (new Date()).toString());
        // list集合
        List temp = new ArrayList();
        temp.add("1");
        temp.add("2");
        ctx.put("list", temp);

        StringWriter sw = new StringWriter();
        t.merge(ctx, sw);

        System.out.println(sw.toString());
    }
}

4、打印结果

Welcome 李智龙 to velocity.com
today is Wed Mar 28 11:03:04 CST 2018.
    1
    2
good!

三、使用模板的目的

如果说使用模板生成java代码,或者开发对应的代码,目前有很多封装好的更好用的开源框架,
使用Velocity自己编写一个适用的框架也是可以的(很蛋疼吧)。
不过个人觉得Velocity最好的使用场景,是在文件模板的生成方面,现在有很多场景需要打印报表,
生成对应的文件,而Velocity便是一个过渡的比较好用的轻量的插件。后面也会提供相应的例子

Velocity模板引擎实战:动态生成HTML、Word、Excel等报表

四、模板的基本语法

1、定义变量

#set($name =“Jackie”)
#set($hello =“hello $name”)
Jackie赋值给$name,此时$hello的值为hello Jackie

2、变量使用

模板文件可以使用name或

{name}定义变量,建议使用后者,name和

names 的两个变量,如果不选用大括号的话,引擎就没有办法正确识别$names 这个变量。

3、循环

#foreach($element in $list)
 This is $element
 $velocityCount
#end

4、条件语句

#if(condition)
...
#elseif(condition)
…
#else
…
#end

5、关系操作符

AND、OR 和 NOT 操作符,分别对应&&、||和! 

6、函数

#macro(macroName arg1 arg2 …)
...
#end
// 对应函数
#macroName(arg1 arg2 …)

示例

#macro(sayHello $name)
hello $name
#end
#sayHello(“velocity”)

7、解析和引入模板

temp.vm 文件:

#set($name =“velocity”)

parse.vm:

#parse(“temp.vm”)
输出结果为:velocity

include.vm:

#include(“temp.vm”)
输出结果为:#set($name =“velocity”)
原文地址:https://www.cnblogs.com/xiang--liu/p/9710205.html