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

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

1、簡介

Velocity 是一個基於 Java 的模板引擎框架,提供的模板語言可使用在 Java 中定義的對象和變量上
說白了就相似於jsp,java中定義對應的對象,模板載入後,能夠對象信息動態加載入模板java

2、使用方式

一、引入pom(老生常談)apache

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

最新的開發包和maven配置app

二、建立模板文件(Hellovelocity.vm)框架

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

三、編寫測試mainjsp

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());
    }
}

四、打印結果maven

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

3、使用模板的目的

若是說使用模板生成java代碼,或者開發對應的代碼,目前有不少封裝好的更好用的開源框架,
使用Velocity本身編寫一個適用的框架也是能夠的(很蛋疼吧)。
不過我的以爲Velocity最好的使用場景,是在文件模板的生成方面,如今有不少場景須要打印報表,
生成對應的文件,而Velocity即是一個過渡的比較好用的輕量的插件。後面也會提供相應的例子

Velocity模板引擎實戰:動態生成HTML、Word、Excel等報表函數

4、模板的基本語法

一、定義變量測試

#set($name =「Jackie」)
#set($hello =「hello $name」)
Jackie賦值給$name,此時$hello的值爲hello Jackie

二、變量使用spa

模板文件可使用name或.net

{name}定義變量,建議使用後者,name和

names 的兩個變量,若是不選用大括號的話,引擎就沒有辦法正確識別$names 這個變量。

三、循環

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

四、條件語句

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

五、關係操做符

AND、OR 和 NOT 操做符,分別對應&&、||和!

六、函數

#macro(macroName arg1 arg2 …)
...
#end
// 對應函數
#macroName(arg1 arg2 …)

示例

#macro(sayHello $name)
hello $name
#end
#sayHello(「velocity」)

七、解析和引入模板

temp.vm 文件:

#set($name =「velocity」)

parse.vm:

#parse(「temp.vm」)
輸出結果爲:velocity

include.vm:

#include(「temp.vm」)
輸出結果爲:#set($name =「velocity」)
相關文章
相關標籤/搜索