Velocity是什么?

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人 员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。

Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。

Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也 可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。

1、maven加入依赖

<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>velocity-tools</groupId>
<artifactId>velocity-tools</artifactId>
<version>1.4</version>
</dependency>

2、velocity的语法符号大概分二类,

  • 一类用 # 开头,代表控制符号,#set表示定义变量;
  • 一类用 $ 开头,通常用于显示变量"#"用来标识Velocity的关键字,包括#set、#if 、#else、#end、#foreach、#end、#include、#parse、#macro等;
  • $ 用来标识Velocity的变量;如:$i、$msg、$TagUtil.options(...)等。
  • { } 用来明确标识Velocity变量;比如在页面中,页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这个变量的后面紧接着显示name字符,则上面的标签应该改成${someone}name。
  • ! 用来强制把不存在的变量显示为空白。如:当找不到username的时候,$username返回字符串"$username",而$!username返回空字符串""

velocity基本语法

变量定义

#set($name ="velocity")

变量赋值

#set($hello ="hello $name")

这个等式将会给$hello赋值为"velocity"

循环

#foreach($element in $list)
<span>$!element</span><br>
#end

Velocity引擎会将list中的值循环赋给element变量

条件语句

#if(condition)
...
#elseif(condition)

#else

#end

关系操作符

Velocity引擎提供了AND、OR和NOT操作符,分别对应 &&||!

例如:

#if($foo && $bar)
...
#end



Velocity中的宏可以理解为函数定义。定义的语法如下:

#macro(macroName arg1 arg2 ...)
...
#end

调用这个宏的语法是:

#macroName(arg1 arg2 ...)

这里的参数之间使用空格隔开,下面是定义和使用Velocity宏的例子:

#macro(sayHello $name)
hello $name
#end #sayHello("velocity")

输出的结果为 :hello velocity


#parse 和 #include

parse和#include指令的功能都是在外部引用文件,而两者的区别是:

  • parse会将引用的内容当成类似于源码文件,会将内容在引入的地方进行解析,

  • include 是将引入文件当成资源文件,会将引入内容原封不动地以文本输出。

分别看以下例子:

foo.vm文件中:

#set($name = "velocity")

parse.vm文件中:

#parse("foo.vm")

输出结果为:velocity

include.vm文件中:

#include("foo.vm")

输出结果为:#set($name = "velocity")


单行注释

##单行注释

多行注释

#\*
多行注释
\*#

单双引号:单引号不解析引用内容,

双引号:解析引用内容

#set ($var="hello")

'$var' ##结果为:$var
"$var" ##结果为:hello

属性通过 . 操作符使用变量内容

\$Identifier.Identifier
\$user.name

最新文章

  1. Linux服务器技术收集
  2. 为什么Java不适合游戏开发
  3. ACM/ICPC 之 Dinic+枚举最小割点集(可做模板)(POJ1815)
  4. PHP处理0e开头md5哈希字符串缺陷/bug
  5. 【HTML】字符(Glyphs)收集
  6. 【9-6】Centos学习笔记
  7. 关于C语言链表的学习
  8. vsm 的理解
  9. linux 如何让程序在开机时启动,关机前关闭
  10. 乐在其中设计模式(C#) - 备忘录模式(Memento Pattern)
  11. C#重写url
  12. JavaScript实现一个复数类
  13. iOS 开发人员不可缺少的75个工具
  14. Unity3D基本操作教程
  15. office 2016 破解教程
  16. python 条件语句和基础数据类型
  17. 数据科学家Docker历险记(1):windows下环境搭建
  18. dup and dup2的剖析
  19. 转码:gcc在代码中禁止某些warning
  20. python logging 模块记录日志

热门文章

  1. Springboot使用ehcache缓存
  2. 解决 cannot find reference &#39;LSHForest&#39; in &#39;__init__.py&#39;
  3. 《一起学mysql》1
  4. Java-100天知识进阶-JVM内存-知识铺(三)
  5. matplotlib画图相关
  6. C#中文转换为拼音NPinyin代码【转】
  7. 使用SolrJ客户端管理SolrCloud(Solr集群)
  8. C#面试基础知识点:值类型和引用类型(1)(填坑文)
  9. C# vb .NET生成QR二维码
  10. Java生鲜电商平台-高并发的设计与架构