velocity
简介
Velocity是一个基于java的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。它作为一款成熟的基于java的模板引擎,能够帮我们实现页面静态化,同时它将Java代码与网页分开,使网站在其生命周期内更加可维护,并为Java Server Pages(JSP)或PHP提供了可行的替代方案。
基本语法
#
Velocity关键字都是使用#开头的,如#set、#if、#else、#end、#foreach等
$
Velocity变量都是使用 开 头 的 , 如 : 开头的,如: 开头的,如:name、$msg
!
如果某个Velocity变量不存在,那么页面中就会显示$xxx的形式,为了避免这种形式,可以在变量名称前加上!如页面中含有$!msg,如果msg有值,将显示msg的值;如果不存在就会显示为空白(建议使用)
变量
变量的定义
#set($root = "www") //定义root变量值为www #set($name = "index") //定义name变量值为index #set($template = "$root/$name") //定义template变量值为www/index hello $template
输出结果
hello www/index
变量的赋值
赋值的左边必须是一个变量,或者是属性的引用。右边可以是:变量引用、字面字符串、属性引用、方法引用、字面数字、数组
#set($name = $bill) 变量引用 #set($name.pre = "monica") 字符串 #set($name.last = $address.num) 属性引用 #set($name.mid = $hotel.find($web)) 方法引用 #set($name.num = 123) 数字 #set($name.say = ["yes",$my,"yes"]) 数组
velocity会将属性解释为属性的get方法,如:
$foo.Bar 等同于 $foo.getBar() $foo.User("join") 等同于 $foo.getUser("join") $foo.Request.ServerName 等同于 $foo.getRequest().getServerName()
循环
#foreach( 单个元素名称 in 集合) .... #end
$velocityCount
在foreach中velocityCount表示循环的次数
$velocityCount是循环的索引值
$velocityCount都是从1开始计数
示例:
#foreach($ofl in $!obj.ofls) #if($velocityCount==1) <h1><span class="fl">创建时间:<em>$!ofl.addTime</em></span></h1> #end
注意:加1的情况可以正确计算出结果,并且能够正确显示,可是减1的语句直接作为一个字符串输出了,不能计算出结果。
解决方案:
v#set($temp=$velocityCount) $temp-1
示例
#foreach( $num in [2..-2]) this is $num. #end
输出
this is 2. this is 1. this is 0. this is -1. this is -2
条件
#if(condition) ...... #elseif(condition) ...... #else ...... #end
判断null或者false
#if( !$name) something code #end
判断null或者空字符串
#if( "$!name" == "") something code #end
关系和逻辑操作符
&& 并且 || 或者 ! 取反
注释
单行注释
这里写注释
多行注释#* *#
#* 这个写注释 可以写多行的注释 *#
基本的使用步驟
- 初始化Velocity。Velocity可以使用两种模式,作为“单独的运行时实例”的单例模式(在下面的内容会介绍),你仅仅只需要初始化一次。
- 创建一个Context对象(后面会介绍这是什么)。
- 把你的数据对象添加到Context(上下文)。
- 选择一个模板。
- ‘合并’ (merge)模板和你的数据输出。
结合springboot测试
<dependency> <groupId>org.springframework.boot
groupId> <artifactId>spring-boot-starter-velocity
artifactId>
dependency>
yml配置文件
spring.velocity.cache= false spring.velocity.charset=UTF-8 spring.velocity.check-template-location=true spring.velocity.content-type=text/html
spring.velocity.enabled=true
spring.velocity.resource-loader-path=/templates spring.velocity.prefix=/templates/ spring.velocity.suffix=.vm
Controller层
@Controller public class VelocityContoller {
@RequestMapping("/") public String index(Map map){
User user = new User(); user.setAge(23); user.setDate(new Date()); user.setId("1"); user.setName("张三"); map.put("message", "获取用户信息"); map.put("name", "张三"); //map.put("age", "24"); map.put("user",user); return "index"; } }
index.vm
<head lang="en"> <meta charset="UTF-8" /> <title>Insert title here
title>
head> <html> <body> $message $name $!age <br> $user.age $user.getId() $user.name $user.date <br> #if($user.getId()==2) id為:$user.getId() #else id為:null #end <br> #set($ljk="luojiankang") $ljk
body>
html>
总结
Velocity将Java代码从Web 页面中分离出来,使用Web站点从长远看更容易维护,并且提供了一种可行的JavaServer Pages替代解决方案。
Velocity是一种基于Java的模板引擎,但允许任何人使用简单而强大的模板语言来引用定义在Java代码中的对象。
Velocity就是MVC架构的一种实现,但它更多的是关注在Model和View之间,作为它们的桥梁。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176706.html原文链接:https://javaforall.net
