java velocity 使用_velocity的基本使用 && 实例讲解

velocity的简介

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象,这样的话其实在前后端分离而言又是一个较为合理的可选方案,

Velocity也可以配合其他的语言来完成使用,Velocity.js就是不错的选择,这样的话可以依靠nodejs和浏览器环境来实现模版的功能。

什么是Velocity模版?

Velocity模版可以是任意的文本文件,只要里面包含专门的模板语言(VTL)标记,就可以被Velocity模板引擎解析;

Velocity模版的工作机制:

Velocity可以通过获取Java对象的函数返回值、属性值,用于替换模板文件中的VTL变量标记,从而生成新的文件,模板文件的扩展名可以是".vm"、".htm"、".html"、".asp"、".sql",等等任

语法简介

大部分的模版引擎都是有自己的书写方式,不过{}这个大括号基本都是他们的通用符号,这里介绍语法的顺序是:

变量定义、使用

控制语句 if for之类

指令

变量

变量是任何语言都不可缺少的;

变量定义和使用

变量的定义和赋值基本方法:#set ( = )

#set ($name = "Sankhya") ##字符串

#set ($age = 30) ##数字

#set ($list = ["Sankara", ${name}, "Shankara"]) ##数组

#set ($dict = ["A":"va", "B":234, "C":${value}]) ##HashTable

在双引号之间的字符串将被Velocity引擎解释和重新解释;在velocity中使用$2.5这样的货币标识是没有问题得的,因为velocity中的变量总是以一个大写或者小写的字母开始的。

使用:

${name} ,也可以写成:$name。提倡用前面的写法。

例如:你希望通过一个变量$vice来动态的组织一个字符串。

Jack is a $vicemaniac.

本来变量是$vice现在却变成了$vicemaniac,这样Veloctiy就不知道您到底要什么了。所以,应该使用规范的格式书写 : Jack is a ${vice}maniac

现在Velocity知道变量是$vice而不是$vicemaniac。

例如:

#set ($desc = "${name} is ${age} years old;")

执行这条语句之后,输出$desc的值将是:Sankhya is 30 years old;

同时还需要注意:

(1).Velocity模版中的变量是弱类型的;等号"="右边的值可以是引用、字符串、数字、Array、Vector、HashTable或表达式;

(2).如果等号"="右边的值是null,则左边的变量不会被赋值,且仍然保留以前的值;

(3).模板中没有被定义的变量将被认为是一个字符串;

(4).模板引擎不会将reference解释为对象的实例变量;如:$foo.Name将被解释为对象Foo的getName()方法,而不是Foo对象的Name实例变量;$foo.getBar()就等价于$foo.Bar;

注释:

单行注释使用“##”开头就可: ## 这好似注释

多行注释 #* 多行注释 *#

文档注释: #** 文档编写 **#

控制语句

if条件控制语句

#if ()

##statement segment

#elseif ()

##statement segment

#else

##statement segment

#end

作为condition,Velocity引擎也支持关系运算符(>、>=、AND、||->OR、!->NOT);

"!"用来强制把不存在的变量显示为空白。

如当页面中包含$msg,如果msg对象有值,将显示msg的值,如果不存在msg对象同,则在页面中将显示$msg字符。这是我们不希望的,为了把不存 在的变量或变量值为null的对象显示为空白,则只需要在变量名前加一个“!”号即可。

如:$!msg

循环控制

#foreach ($element in $list)

##your statement

$velocityCount

#end

指令

#parse和#include指令:

这两者都是导入本地模板文件;

#parse指令只能导入一个文件,同时,被导入的文件的内容将会被Velocity模板引擎解析,意思就是把被导入的文件的内容copy到当前文件中;该指令也可以被递归调用;

#include指令可以导入一个或多个文件,当导入多个文件时,可以用逗号分隔;而且,被导入的文件的内容不会被Velocity模版引擎解析;

例如:

#include ("one.gif", "two.txt", "three.htm") ##不会被模版引擎解释;

#include (${file1}, ${file2}, ${file3}) ##不会被模版引擎解释;

#parse ("server.conf") ##会被模版引擎解释;

#stop停止执行模板引擎并返回,把它应用于debug是很有帮助的;

Velocity中的转义字符也是使用符号"";这就意味着执行"\"将会输出"",而执行"$"将会输出"$",执行"#"会输出"#";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值