模板语言:Velocity简介

来源:互联网 发布:机械原理 知乎 编辑:程序博客网 时间:2024/05/16 12:43

Velocity(http://velocity.apache.org/)是开源的模板技术,和JSP类似。在Web开发中是一种不错的选择。

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。

 

Velocity与Struts2(http://struts.apache.org/2.x/index.html)结合起来架构系统也是经常有的,Struts是非常经典的MVC模式的框架。我们在显示层使用Velocity技术,能够做到更好的分离,独立性更高。

 

Velocity的语法概要如下,具体的可以看官方网页(http://velocity.apache.org/engine/devel/user-guide.html)

1、声明:

#set ($var=XXX)
左边可以是以下的内容
Variable reference
String literal
Property reference
Method reference
Number literal #set ($i=1)
ArrayList #set ($arr=["yt1","t2"])
支持算术运算符。比如#set ($price=10+30),这个计算后这个变量的值就是40了。

 

2、注释:
单行## This is a single line comment.

多行#* xxx
xxxx
xxxxxxxxxxxx

*#


3、变量 Variables
以 "$" 开头,第一个字符必须为字母。character followed by a VTL Identifier. (a .. z or A .. Z).
变量可以包含的字符有以下内容:
alphabetic (a .. z, A .. Z)
numeric (0 .. 9)
hyphen ("-")
underscore ("_")


4、属性Properties
$Identifier.Identifier
$user.name
hashtable user中的的name值。类似:user.get("name")

 

5、方法Methods
$user.getName()


6、Formal Reference Notation
用{}把变量名跟字符串分开


#set ($user="csy"}
${user}name
返回csyname

$username
$!username
$与$!的区别
当找不到username的时候,$username返回字符串"$username",而$!username返回空字符串""

 

7、双引号 与 引号
#set ($var="helo")
test"$var" 返回testhello
test'$var' 返回test'$var'
可以通过设置 stringliterals.interpolate=false改变默认处理方式

 

8、条件语句
#if( $foo )
<strong>Velocity!</strong>
#end
#if($foo)
#elseif()
#else
#end
当$foo为null或为Boolean对象的false值执行.

 

9、逻辑运算符:

和java的语法一样。== && || !

 

10、循环语句

#foreach($var in $arrays )
#end
#foreach( $product in $allProducts )
<li>$product</li>
#end

#foreach( $key in $allProducts.keySet() )
<li>Key: $key -> Value: $allProducts.get($key)</li>
#end

#foreach( $customer in $customerList )
<tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#end


11、velocityCount变量在配置文件中定义
在检索结果显示的时候,循环一次,自动加1.

 

 

12、包含文件
#include( "one.gif","two.txt","three.htm" )

13、Parse导入脚本
#parse("header.vm" )

 

14、#stop 停止执行并返回

 

15、定义宏Velocimacros ,相当于函数 支持包含功能
#macro( d )
<tr><td></td></tr>
#end
调用
#d()

 

16、带参数的宏
#macro( tablerows $color $somelist )
#foreach( $something in $somelist )
<tr><td bgcolor=$color>$something</td></tr>
#end
#end

这个地方的宏可以减少重复代码,页面中类似的代码可以抽成宏。


17、循环操作范围
#foreach( $foo in [1..5] )

这个例子循环5次。

 

在VM中只操作对象和变量,比JSP中大量编码来说,页面更加干净。维护起来也容易一些。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小弟睡大嫂的电视剧 强入朋友妻在线播放 中午阳台上退掉表嫂裙子 被老公在厨房要到腿软 后妈的味道中文字幕 妻子和她的学生中文字幕 朋友的妻子和母亲hd高清中文字幕 丈夫面前侵犯入侵在线看 兄弟侵犯大嫂5中文字幕在线 暴风雨夜与妻子朋友独处 年轻的女老板3中文字 兄弟侵犯大嫂中文字幕迅雷视频 大香煮蕉伊在线网视频推手 91青青城线在人线免费人人人 91青青城人线在人线 95青青成线人人 青青成线小说 青青成线人线免 第一成一肉区免 费91 欧洲第一肉场 欧洲第一成肉区免 费91ap 免费欧洲第一成肉区免 费91 欧洲第一成一肉区免 费9 欧洲第一成一肉区免 费91人雨马 欧洲笫一肉区l1041 久碰人人澡人人澡人人澡人人澡 看欧洲第一成肉区免 免费在 线人擦人人搞人视频人人人 人人差人人搞人视频 人人看人人揉人人捏动漫 超越人人夜人人看视频 人人玩人人弄人槽视频动漫 草人人拍人人躁 人人人人看人谢97 免费在 线人擦人人搞人视频动漫视频 人人看人人揉人人捏视频 青青成线人线免费公开 亚成区1216成线人 青青成年在人线免费人人拍人人 人玩人人弄人人 人人看人人揉人人捏免费线看