`
xitongyunwei
  • 浏览: 959456 次
文章分类
社区版块
存档分类
最新评论

Velocity 模板介绍

 
阅读更多

1.Velocity概述 ?

Velocity是一个基于java的模板引擎(template engine:模板引擎的作用就是取得数据并加以处理,最后显示出数据 )。

它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

2.Velocity的应用领域

Web应用的开发。作为模板产生SQL,XML或代码等。作为其他系统的集成组件使用

3. Velocity工作流程和原理

当 Velocity 应 用 于 application
program或 a servlet,你通常将做
下面的事情
初始化Velocity.
创建Context对象
添加数据到Context
选择模板
合并模板和数据产生输出页面

3.1Velocity原理举例说明

public static void main(String[] args)
throws Exception {
Velocity.init();
VelocityContextcontext = new
VelocityContext();
context.put("name", “Velocity");
BufferedWriterwriter = new
BufferedWriter(new OutputStreamWriter(
System.out));
Template template =
Velocity.getTemplate("src/velocity/hell
o.vm");
template.merge(context, writer);
writer.flush();
writer.close();
}

Velocity 文件(hello.vm)
<html>
<body>
<table>
<tr><td>
hello $name;
</td></tr>
</table>
</html>
这个例子的输出效果为:
Hello Velocity

4. VTL介绍

VTL提供一种简单、容易和干静的方法将
动态内容合并到Web页面。VTL使用引
用(references)将动态内容插入到Web页
面中。变量是一种引用,可以指向Java
代码中的定义内容,或者由Web页面中
的VTL语句来获得值。
例如:#set( $a = "Velocity" )
VTL语句以#开头,并包含指令(set)。变
量以$开头,用引号引起
VTL语法包括:
1,注释
2,引用(References)
3,指令(Directives)

4.1VTL---注释

VTL支持单行注释(以##开始)和多行注
释(包括在#*和*#之间),下面是一个
例子:
## This text is not visible.
#* This text, as part of a multi-line
comment,
is not visible. This text is not visible; it
is also part of the
multi-line comment. This text still not
visible. *#

4.2VTL---引用(References)

VTL有3种类型的引用:变量、属性和方法。
(1)变量
变量的格式:$VTL标识符
VTL标识符以字母开始,由字母、数字、
横划线(-)或下划线(_)组成。
例如下面的例子:
#set( $foo = "gibbous" )
$moon = $foo
输出结果是:$moon = gibbous

(2)属性
属性的格式:$VTL标识符. VTL标识符下面是属性引用的例子:
$customer.Address
$purchase.Total
拿第一例子来说,有两种意思:
返回Hashtable对象customer中键值为Address的值
$customer.getAddress()方法引用的缩写(JavaBean属性的getter方法)至于是哪种情况,Velocity会做决定,返回合适的值。

(3)方法
方法的格式:$VTL标识符(参数列表)下面是方法引用的例子:
$customer.getAddress()
$purchase.getTotal()
$page.setTitle( "My Home Page" )
$person.setAttributes( ["Strange", "Weird", "Excited"] )

4.3VTL---指令(Directives)

详解以下VTL常用指令:
1. #set
2. #if / #elseif / #else
3. 循环:foreach
4. #include
5. #parse
6. #stop
7. #macro

4.3.1VTL---#set(1)

(1)#set
格式:#set( LHS = RHS )
LHS可以是变量引用或属性引用RHS可以是引用、字符串、数字、ArrayList或Map
例如:
#set( $monkey = $bill ) ## variable reference
#set( $monkey.Friend = "monica" ) ## string literal
#set( $monkey.Blame = $whitehouse.Leak )
## property reference
#set( $monkey.Number = 123 ) ##number literal
#set( $monkey.Say = ["Not", $my, "fault"] )
## ArrayList

RHS可以是简单的算术表达式
如果RHS的结果为null,是不会赋值给LHS的
String文字可以使用双引号或单引号括起。两者的主要区别是双引号中的引用会替换成相应的值,而单引号中的引用原样输出 例如:
#set( $value = $foo + 1 ) ##Addition
#set( $directoryRoot = "www" )
#set( $templateName = "index.vm" )
#set($template= $directoryRoot/$templateName" )
$template
输出结果是:www/index.vm

4.3.2VTL---#if#else

(2)#if / #elseif / #else
#if指令在条件成立时,显示#if和#end之间的内容,否则显示#else和#end之间的内容。下面是一个例子:
#if( $foo )
Velocity!
#end
条件成立有两种情况:
如果$foo是boolean,则$foo要为true;否则,$foo不为null
#if指令中可以使用的关系和逻辑符号包括:<、<=、==、>=、>、 &&(and)、||(or)、!(not)

(3)#foreach
#foreach( $product in $allProducts )
$product
#end
$allProducts的内容可以是Vector、Hashtable或ArrayList,每次取出一个值赋值给$product

(4)#include
#include指令导入本地文件到#include指令定义的地方。导入的文件内容不会被模板引擎解析。出于安全考虑,导入的文件应该放在TEMPLATE_ROOT目录下。

一次可以导入多个文件,文件名之间用逗号分隔;并且通常使用变量引用来替代文件名。下面是一个例子:
#include("greetings.txt", seasonalstock )

(5)#parse
#parse指令允许导入一个包含VTL的本地文件,并由模板引擎进行解析。例如:
#parse( "parsefoo.vm" )

(6)#stop
#stop指令停止模板引擎的执行并返回。这在Debug时很有用。

(7)#macro
#macro指令允许定义一段重复使用的VTL模板(称Velocimacros)。Velocimacros可以有0或多个参数。例如:
#macro( tablerows $color $somelist )
#foreach( $something in $somelist )
$something
#end
#end
tablerows的调用:
#set($greatlakes = ["Superior","Erie"] )
#set( $color = "blue" )
#tablerows( $color $greatlakes )

5.Velocity的国际化

Velocity本身支持模版的国际化编码转换,看看Velocity提供的方法:
Public Template getTemplate(String tem String encoding)另外,在Velocity的tools:MessageTool,提供了变量text包含国际化标签,这样只需要简单的编写标签代码即可,

如:$text.get(‘title’).

6. Velocity对Framework的支持

VelocityTools/VelocityViewServlet对 Servlet 的 支 持 , 使 用VelocityViewServlet 来 代 替Servlet
Velocity Tools / VelocityStruts对Struts的支持.Third party frameworks对 第 三 方 框 架 的 支 持 , 比如:Spring,Turbine等

分享到:
评论

相关推荐

    Velocity模板技术语法详细介绍

    Velocity模板技术语法详细介绍,包括很详细的示例代码 1.变量………………………………………………………………………………1 2.循环………………………………………………………………………………2 3.条件语句...

    Velocity模板入门DEMO

    Velocity模板语言(Velocity Template Language,简称VTL)是Apache软件基金会的Velocity项目中的一部分,它是一种用于生成动态网页内容的模板引擎。Velocity以其简洁、易读的语法,为Java开发者提供了一种高效的...

    Velocity模板语言介绍

    ### Velocity模板语言介绍 #### 一、Velocity简介 Velocity是一种基于Java的模板引擎(template engine),它使得非技术背景的人员能够轻松地使用一种简洁的模板语言来引用由Java代码所定义的对象。这种特性使得...

    velocity模板使用指南中文版

    * Velocity Template Language (VTL):介绍 * 输出第一个 VTL 页面! * 注释(Comments) * 参考(References) Velocity 的优势 ---------------- * 灵活的模板语言:Velocity 提供了一个灵活的模板语言,能够...

    Velocity模板实例

    Velocity模板实例 Velocity模板实例 Velocity模板实例 Velocity模板实例

    Velocity模板引擎Velocity模板引擎

    Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎

    Velocity模板使用指南中文版

    ** Velocity模板语言简介** Velocity是Apache软件基金会的一个开源项目,它是一种基于Java的模板引擎,用于将HTML、XML等静态页面与动态数据分离,使得开发者能够专注于业务逻辑,而设计师可以专注于页面布局和样式...

    SpringBoot Velocity 代码生成模板

    在Spring Boot项目中,利用Velocity模板引擎,我们可以创建一系列模板文件,如Mapper、Mapper.xml、Service和Controller等,这些模板在运行时会根据数据库中的表结构动态生成对应的Java源码。这不仅避免了手动编写...

    Velocity模板解析

    Velocity模板的主要目标是将业务逻辑与显示逻辑分离,让开发者专注于内容的展示,而不用关心页面布局和设计。 Velocity的工作原理基于模板语言和Java对象的结合。在模板中,开发者可以使用特定的指令(如#set、#if...

    SpringBoot集成Mybatis,velocity模板展示数据

    本项目主要探讨的是如何将SpringBoot与Mybatis、Velocity模板引擎进行整合,以便更高效地展示和处理数据。 首先,让我们深入了解SpringBoot的核心特性。SpringBoot的设计理念是“约定优于配置”,它内置了Tomcat...

    Velocity模板应用

    以上就是Velocity模板应用的基本介绍,它提供了高效、灵活的方式来构建动态内容,让开发者可以专注于业务逻辑,而将页面渲染的任务留给模板引擎。通过熟练掌握Velocity,我们可以提高Web应用的开发效率和代码质量。

    SpringBoot集成Mybatis,velocity模板

    5. **使用Velocity模板**:创建Velocity模板文件(如`templates/email.vm`),然后在服务类中使用VelocityContext填充数据,并通过VelocityEngine渲染模板。 ```java // EmailService.java public void sendEmail...

    Velocity模板引擎技术在Java Web中的应用.pdf

    "Velocity模板引擎技术在Java Web中的应用" Velocity模板引擎技术是Java Web开发中的一种重要技术,旨在解决Java Web页面视图和业务逻辑的耦合问题。通过使用Velocity模板引擎技术,可以将Java Web页面视图和业务...

    Velocity实现模板(详细步奏)

    Velocity 是一款开源的模板引擎,它为 Java 应用程序提供了灵活的模板处理能力,尤其适用于分离应用程序的表示层逻辑和业务逻辑。Velocity 提供了一种简单的模板语言(Velocity Template Language,VTL),使得非...

    Struts2与Velocity模板

    Struts2 与 Velocity 模板 Velocity 是一种基于 JAVA 的模板引擎,开发人员使用简单的模板语言就可以快速开发显示层,它使得显示层与程序代码分离。在 Struts2 框架中,Velocity 模板引擎可以与 Struts2 集成,实现...

    JavaScript模板引擎Velocity.js.zip

    Velocity.js 是velocity模板语法的javascript实现。Velocity 是基于Java的模板引擎,广泛应用在阿里集 体各个子公司。Velocity模板适用于大量模板使用的场景,支持复杂的逻辑运算,包含 基本数据类型、变量赋值和...

    使用了Struts结构和Velocity模板技术的BLOG

    本项目“使用了Struts结构和Velocity模板技术的BLOG”旨在演示如何结合这两种技术来创建一个功能完善的博客系统。 **Struts框架** Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。它为...

    Velocity模板应用案例

    【Velocity模板应用案例】 Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态内容。Velocity通过将逻辑与呈现分离,使得开发者可以专注于业务逻辑,而设计师可以自由地设计页面...

Global site tag (gtag.js) - Google Analytics