目录

工欲善其事

实践出真知

活跃标签: linux java mysql 待分类 js springboot win10 电路 vue macOS nginx esp32 git docker windows idea maven esp8266 python Arduino

存档:

X

Java 模板引擎 [ Velocity ]

Velocity 中加载 vm 文件的三种方式:

a. 加载classpath目录下的vm文件

Properties p = new Properties();
try {
    // 加载classpath目录下的vm文件
    p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
    // 定义字符集
    p.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
    // 初始化Velocity引擎,指定配置Properties
    Velocity.init(p);
} catch (Exception e) {
    throw new RuntimeException(e);
}

这种方式只能读取本jar包中的vm文件。初始化成功后,使用:Velocity.getTemplate( *templateFilePath* );加载文件!

b. 根据绝对路径加载

Properties p = new Properties();
// 初始化默认加载路径为:D:/template
p.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH, "D:/template")
p.setProperty(Velocity.ENCODING_DEFAULT, "UTF-8");
p.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8");
// 初始化Velocity引擎,init对引擎VelocityEngine配置了一组默认的参数 
Velocity.init(p);

vm文件置于硬盘某分区中,(如:D:/template/test.vm) 这种方式同上只能加载本地硬盘中的vm文件。不过注意 配置的地址在加载模板时不要写了。如vm文件的全路径是D:/template/test.vm 初始化时配置111生成Template时只需要写test.vm即可。

c. 使用文本文件

首先定义一个velocity.properties文件

input.encoding = UTF-8
file.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader

然后,已流的形式加载该文件

Properties p = new Properties();
// 加载properties文件
p.load(this.getClass().getResourceAsStream("/velocity.properties"));
// 初始化Velocity引擎,init对引擎VelocityEngine配置了一组默认的参数 
Velocity.init(p);

初始化成功后,使用:Velocity.getTemplate("test.vm");加载文件!其实这种方式和第一种加载的一样只是写法不同罢了。

velocity定义了模板文件:*.vm,通过VelocityEngine加载该模板,以流的形式读取该模板,然后加载一个java对象,并将模板填充。


标题:Java 模板引擎 [ Velocity ]
作者:llilei
地址:http://solo.llilei.work/articles/2023/09/11/1694415070866.html