一. Velocity 的介绍
Velocity 的官方网址: https://velocity.apache.org/
与 FreeMarker 一样,也是模板引擎。
二. Java 使用Velocity
二.一 前期准备
创建一个 Maven 项目, 在 pom.xml 中添加 依赖
<dependencies> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.3</version> </dependency> <!--测试junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!--lombok依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.16</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>
二.二 模板开发
这儿不与 Web 进行关联,不采用页面展示, 采用控制台输出。
二.二.一 基本信息展示
二.二.一.一 基本信息模板 vm
创建 basic.vm 文件
## Velocity Hello World <html> <body> ## followed by Hello,我是你们的老朋友,${name} ## 放置读取的信息. #set($name="周小欢") #* 如果同时设置的话,以 #set 为主。 *# Hello,介绍一个新的朋友,${name} ## 放置普通的对象信息 ${info.name} 的年龄是 ${info.age} </body> </html>
有基本的信息 name, 有对象的信息 info.name 和 info.age
可以通过 set 设置一个新的属性。
二.二.一.二 基本信息开发
@Test public void basicFill() throws Exception{ //1. 初始化模板引擎 VelocityEngine ve=new VelocityEngine(); //2. 设置相应的属性信息 ve.setProperty(RuntimeConstants.RESOURCE_LOADER,"classpath"); ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName()); //3. 进行初始化 ve.init(); //4.获取模板文件 Template template=ve.getTemplate("basic.vm","utf-8"); //5.设置变量 VelocityContext root=new VelocityContext(); root.put("name","岳泽霖"); Map<String,Object> info=new HashMap<>(); info.put("name","YJL"); info.put("age",26); root.put("info",info); //6.进行合并,调用模板的 merge 方法, 将其进行填充。 StringWriter stringWriter=new StringWriter(); template.merge(root, stringWriter); System.out.println("输出信息值:" +stringWriter.toString()); }
二.二.二 If 条件语句 展示
二.二.二.一 If 条件语句 vm
创建 if.vm 文件
## 放置if ## 可以使用条件表达式,进行处理。 #if(${age}>120) 年龄输入错误 #end 你的性别是: #if(${sex}=='男') 男性 #else 女性 #end 你的成绩是: #if(${score}>90) 优 #elseif(${score}>80) 良 #elseif(${score}>70) 中 #elseif(${score}>60) 及 #else 差 #end