

也就是前端程序员写velocity模板,后端程序员写数据模型,最后整合就是展示给用户的东西






以上就是创建了一个maven项目
我们要在项目中使用velocity,所以要导入对应的依赖

<dependencies>
<!-- velocity 的核心包-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<!-- 进行单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>以上是导入依赖。 现在开始创建模板,这个模块在什么地方都可以,最后只要路径对了就可以,我们习惯放到resources文件夹下

以上先创建一个HTML模板,之后修改这个文件的后缀,变为vm


以上是最简单的语法。
之后我们要写测试类,里面调用这个vm文件,将数据写到这个vm里面

public class quickstart {
@Test
public void test1() throws IOException {
// 1 设置velocity 的资源加载器
Properties properties = new Properties();
// 固定的写法
properties.put("file.resource.loader.class","org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
// 2 初始化velocity引擎
Velocity.init(properties);
// 3 创建velocity的容器
VelocityContext velocityContext = new VelocityContext();
// 这个容器里面要放一些数据
velocityContext.put("name","jing");
// 4 加载velocity的模板文件
Template template = Velocity.getTemplate("vms/01-quickstart.vm", "utf-8");
// 5 合并数据到模板
FileWriter fileWriter = new FileWriter("D:\\javacode\\velocity_01\\src\\main\\resources\\html\\01quick.html");
template.merge(velocityContext,fileWriter);
// 6 释放资源
fileWriter.close();
}
}执行完以上的语句,那么在新的文件夹下,就会生成一个HTML文件

就是前端写velocity模板,后端写代码,将数据填充到模板里面,生成HTML文件
以后就是 填充的内容需要是动态的,使用的模板是动态的,输出的HTML的路径是动态的,其他的都是固定的。

也就是根据这些语法,我们可以将在context里面的内容填充到模板中


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
## 这个是单行注释
#*
* 这个是多行注释
*
* *#
#**
* 这个是文档注释
* *#
你好,${name},我是好人
</body>
</html>在vm文件里面,写的注释,最后生成HTML文件,是不会出现在HTML里面的,但是会用空区域代替 有注释的地方,在HTML里面会有很多的空区域




也就是在模板里面写的什么,最后在HTML里面就会展示什么


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>引用变量</h1>
常规语法:$name11
正规语法:${name11}
常规语法: $!name11
正规语法 : $!{name11}
</body>
</html>也就是变量是一个对象,我们想要对象里面的属性,所以这个就是属性引用







模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
$user.username --- $user.password
$str.split(" ")
$now.getTime()
## 定义变量
#set($str = "hello")
#set($int = 10)
#set($arr = ["10","12"])
#set($boolean = true)
#set($map = {"key1":"values"})
#set($name = "jing")
#set($strt = "你好 $name")
## 获取变量
$str
$int
$arr
$boolean
$map.key1
$name
$strt
</body>
</html>生成的HTML


模板
#set($language = "java")
#if($language.equals("java"))
java
#elseif($language.equals("python"))
python
#end生成的HTML


在velocity里面存放list数据
ArrayList<String> strings = new ArrayList<>();
strings.add("152");
strings.add("452");
strings.add("8566");
String[] hobbi = new String[]{"ddd","888","8888"};
velocityContext.put("strings",strings);
velocityContext.put("hobbi",hobbi);在模板里面进行遍历
#foreach($item in $hobbi)
$item
#end
#foreach($item in $strings)
$item
#end