Apache Velocity是一个模板引擎.这意味着您可以向上下文添加变量,加载引用这些变量的模板,并从此模板呈现文本,其中变量的引用将替换为变量的实际值。
它的目的是将设计和静态内容与代码分开.以一个网站为例.你不想在你的java代码中创建HTML,对吗?每次更改设计时都需要重新编译应用程序,并且会使用不必要的设计混乱来修改代码.您宁愿想要获取您的变量,无论是计算的还是来自数据库或其他任何变量,并让设计人员创建一个使用变量的HTML模板。
public String getVm(Map<String, Object> customProperties) {
Properties p = new Properties();
p.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH, legaoVmFilePath);
p.setProperty(Velocity.ENCODING_DEFAULT, Constants.ENCODING);
p.setProperty(Velocity.OUTPUT_ENCODING, Constants.ENCODING);
// 初始化Velocity引擎,init对引擎VelocityEngine配置了一组默认的参数
Velocity.init(p);
Template template = Velocity.getTemplate(legaVmFileName, Constants.ENCODING);
VelocityContext context = new VelocityContext(customProperties);
StringWriter stringWriter = new StringWriter();
template.merge(context, stringWriter);
return stringWriter.getBuffer().toString();
}
现在给出一个名为myTemplate.vm的文件
${welcome} ${user.name}!
You are an ${user.type}.
输出将是:
Hello, Foo!
You are an admin.
因此,使用像Velocity这样的模板引擎(还有其他人,例如Thymeleaf或Freemarker)可以让设计师完成设计师的工作,程序员可以完成程序员的工作,同时对彼此的干扰最小.