1.在controller类里面设置访问url和返回vm文件
package com.nowcoder.controller;
import org.springframework.web.bind.annotation.RequestMapping;
@org.springframework.stereotype.Controller
public class Controller {
@RequestMapping("/vm")
public String news(){
return "news";
}
}
第二,添加news.vm模板
<html>
<body>
<pre>
Hello VM!
</pre>
</body>
</html>
运行结果:
2.velocity模板的一些基础语法:
首先,在入口处添加一个变量
package com.nowcoder.controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@org.springframework.stereotype.Controller
public class Controller {
@RequestMapping("/vm")
public String news(Model model){
model.addAttribute("value1","vv1");
return "news";
}
}
接着,在vm模板中显示value1这个变量
<html>
<body>
<pre>
Hello VM!
$!{value1}
</pre>
</body>
</html>
结果为:
(注:在这里,提示大家如果真的想深入,而且有时间的话,尽可能去看官方文档,velocity的官方文档地址:https://velocity.apache.org/engine/devel/user-guide.html)
3.下面我们继续介绍一些velocity语法
变量的显示规则:
1.基本语法
$!{}
2.如果大括号里面的变量不存在,则不显示
3.若采用${},那么模板会当成文本处理显示,而不会识别为变量
我们接着采用定义变量的方法来说明一下其他特性:
//1.定义一些变量
#set($hello="hello")
#set($hworld1="$!{hello} world")
#set($hworld2='$!{hello} world')
//2.显示变量
Hworld1:$!{hworld1}
Hworld2:$!{hworld2}
结果为:
注释规范:
##这里是单行注释
#*这里
是多行
注释*#
循环规范
//1.控制层
//对象为array
List<String> colors = Arrays.asList(new String[]{"red","blue","green"});
model.addAttribute("colors",colors);
//对象为map
Map<String,String> map = new HashMap<String, String>();
for (int i = 0; i < 4; i++){
map.put(String.valueOf(i),String.valueOf(i^2));
}
model.addAttribute("map",map);
//2.vm模板
//对象为array
#foreach ($color in $colors)
Color: $!{foreach.index}/$!{foreach.count}:$!{color}<br>
#end
//对象为map
#foreach ($key in $map.keySet())
Number: $!{foreach.index}/$!{foreach.count}: $!{key} $map.get($key)<br>
#end
结果为:
propoties属性规范
//1.新建一个model层,并建一个User类,创建构造方法,生成getter和setter方法
package com.nowcoder.model;
public class User {
public String name;
//构造方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(String name){
this.name = name;
}
}
//2.控制层
model.addAttribute("user", new User("Yang"));
//3.模板
User:$!{user.name}
User:$!{user.getName()}
返回结果:
Include包含和Parse解析规范(头文件)
//1.新建一个头文件模板hello.vm,存储一个title变量作为头文件
Title <h>$!title</h>
//2.在news.vm中给变量赋值并分别用两种方法包含和解析
#set($title = "Yangyangyang")
Include: #include("hello.vm")<br>
Parse:#parse("hello.vm")
结果为:
可以看到,include包含的作用是整个<h></h>中间的文本包含进来,所以称之为包含;
而parse解析的作用就是可以对变量进行编译替换等等。所以称之为解析。
模板函数的编写和调用规则
//1.在模板中定义函数
##定义函数
#macro (render_color, $color, $index)
Color By Macro $index, $color
#end
//2.在模板中调用函数
#foreach ($color in $colors)
#render_color($color, $foreach.index)
#end
结果为:
调用其他方法,如:
$!{colors.size()}
结果为:
到这里,velocity模板语言的很多属性都介绍过了,其实还是不够详细,下面有一篇详细介绍的文章,大家可以去参考:
https://blog.youkuaiyun.com/u014282557/article/details/76193014
但是,个人还是建议去官方文档学习:
https://velocity.apache.org/engine/devel/user-guide.html
有时间一定去学习官方文档
https://velocity.apache.org/engine/devel/user-guide.html
大概最多也就一两天就能完全弄懂了
https://velocity.apache.org/engine/devel/user-guide.html
重要的事情说三遍!!