`

Velocity总结资料

阅读更多
1 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模型进行开发。
2 生成代码实例
2.1 添加相关工具包
如图所示:


2.2 执行代码
package cn.winjoys.velocity;

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;

public class VelocityUtil {

/**
* Document Start
*
* Document End
* 2009-11-19 下午03:46:36
* 作者:梦中千万里
*/
public void generator() {
try {
Velocity.init("src/velocity.properties");

VelocityContext context = new VelocityContext();
context.put("list", getDatas());
context.put("author", "梦中千万里");
context.put("date", new Date());

Template template = Velocity.getTemplate("template/simple.vm");

// out
BufferedWriter writer = writer = new BufferedWriter(
new OutputStreamWriter(System.out));
if (template != null)
template.merge(context, writer);

writer.flush();
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* Document Start
*
* Document End
* 2009-11-19 下午03:46:39
* 作者:梦中千万里
* @return
*/
public List getDatas() {
List<Object> list = new ArrayList<Object>();
list.add("First Object");
list.add(new Date());
list.add(100);
return list;
}
}
2.3 模版文件
The first demo[$author][$date]
#foreach( $name in $list )
    the $name is $name.class!
#end
2.4 输出结果
The first demo[梦中千万里][Thu Nov 19 16:09:53 CST 2009]
    the First Object is class java.lang.String!
    the Thu Nov 19 16:09:53 CST 2009 is class java.util.Date!
    the 100 is class java.lang.Integer!

3 Velocity Template Language (VTL)
3.1 变量
$ [ ! ][ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ][ } ]
例如
简化形式:$author
完整形式:${author}
3.2 属性
$ [ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]* .[a..z, A..Z ][ a..z, A-Z, 0..9, -, _ ]* [ } ]
例如
$name.class
3.3 方法
$ [ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]* .[ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ]*( [ optional parameter list... ] ) [ } ]
例如
$name.getClass()
3.4 设置
# [ { ] set [ } ] ( $ref = [ ", ' ]arg[ ", ' ] )
例如
• Variable reference: #set( $monkey = $bill )
• String literal: #set( $monkey.Friend = 'monica' )
• Property reference: #set( $monkey.Blame = $whitehouse.Leak )
• Method reference: #set( $monkey.Plan = $spindoctor.weave($web) )
• Number literal: #set( $monkey.Number = 123 )
• Range operator: #set( $monkey.Numbers = [1..3] )
• Object list: #set( $monkey.Say = ["Not", $my, "fault"] )
• Object map: #set( $monkey.Map = {"banana" : "good", "roast beef" : "bad"})
3.5 条件语句
# [ { ] if [ } ] ( [condition] ) [output] [ # [ { ] elseif [ } ] ( [condition] ) [output] ]* [ # [ { ] else [ } ] [output] ] # [ { ] end [ } ]
Operator Name Symbol Alternative Symbol Example
Equals Number == eq #if( $foo == 42 )
Equals String == eq #if( $foo == "bar" )
Object Equivalence == eq #if( $foo == $bar )
Not Equals != ne #if( $foo != $bar )
Greater Than > gt #if( $foo > 42 )
Less Than < lt #if( $foo < 42 )
Greater Than or Equal To >= ge #if( $foo >= 42 )
Less Than or Equal To <= le #if( $foo <= 42 )
Boolean NOT ! not #if( !$foo
3.6 循环语句
# [ { ] foreach [ } ] ( $ref in arg ) statement # [ { ] end [ } ]
例如
#foreach( $name in $list )
    the $name is $name.getClass()!
#end
3.7 引用文件
# [ { ] include [ } ] ( arg[ arg2 ... argn] )
例如
#include("template/temp.txt")
说明
将文件temp.txt里的内容拷贝到生成的代码中,但此时不解析执行。

# [ { ] parse [ } ] ( arg )
例如
#parse( "lecorbusier.vm" )
说明
将文件temp.txt里的内容拷贝到生成的代码中,但此时解析执行。
3.8 停止模版引擎
# [ { ] stop [ } ]
主要是用于调试
例如
The first demo[${author}][$date]
#stop
#foreach( $name in $list )
    the $name is $name.getClass()!
#end

#include("template/temp.txt")
不会执行
#foreach( $name in $list )
    the $name is $name.getClass()!
#end
但会执行
#include("template/temp.txt")

3.9 计算
# [ { ] evaluate [ } ] ( arg )
例如
#evaluate( 'string with VTL #if(true)will be displayed#end' )
将执行字符串
3.10 定义索引块
# [ { ] define [ } ] ( $ref ) statement # [ { ] end [ } ]
例如
#define( $hello ) Hello $who #end #set( $who = "World!") $hello ## displays Hello World!
3.11 定义宏
# [ { ] macro [ } ] ( vmname $arg1 [ $arg2 $arg3 ... $argn ] ) [ VM VTL code... ] # [ { ] #end [ } ]
3.12 注释
## This is a comment.
多行采用如下形式
#*
This is a multiline comment.
This is the second line
*#
4 资源
【1】http://velocity.apache.org/index.html



  • 大小: 106.8 KB
0
0
分享到:
评论

相关推荐

    大数据学习总结.doc

    《大数据时代》读后感 学习总结 关于作者 维克托·迈尔-舍恩伯格(Viktor Mayer- Schönberger),他是十余年潜心研究数据科学的技术权威,他是最早洞见大数据时代发 展趋势的数据科学家之一。 关于大数据 大数据是...

    大数据培训心得.docx

    大数据的定义 也叫巨量资料,指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理的时间内达到采集、管理 、处理、并整理成为帮助企业营或政府更积极目的资讯。 2. 4V特点 规模性(volume)、高速性...

    大数据期末知识点总结.pdf

    ⼤数据期末知识点总结 ⼤数据特点: ⼤数据特点: 五个主要技术特点:5V Volume(⼤体量):即可从数百TB到数⼗数百PB、甚⾄EB规模。 Variety(多样性):即⼤数据包括各种格式和形态的数据。 Velocity(时效性):...

    一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)

    松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了,个人感觉这个是最好的 Vue.js 学习资料 ,因此在我的书里边就...

    大数据的介绍.pptx

    大数据的特点 Volume(大量) Velocity(高速) Variety(多样) veracity(真实性) 数据量大、数据种类多、 要求实时性强、数据所蕴藏的价值大。在各行各业均存在大数据,但是众多的信息和咨询是纷繁复杂的,我们需要搜索...

    大数据专题.pptx

    大数据的特点 Volume(大量) Velocity(高速) Variety(多样) veracity(真实性) 数据量大、数据种类多、 要求实时性强、数据所蕴藏的价值大。在各行各业均存在大数据,但是众多的信息和咨询是纷繁复杂的,我们需要搜索...

    [详细完整版]空间大数据.pptx

    目录 一、大数据的涵义与研究意义 二、与空间信息和位置相关的大数据 三、空间大数据的应用 四、空间大数据的存储 五、总结 空间大数据全文共34页,当前为第2页。 一、大数据的涵义与研究意义 大数据:大型复杂数据...

    大数据分析与挖掘(PPT30页).ppt

    大数据的基本特征可以用4个V来总结:Volume、Variety、Value和Velocity。 Volume指的是数据体量大,达到TB级别甚至PB级别。Variety指的是数据多样性,包括结构型数据和非结构型数据。Value指的是数据的价值密度低,...

    [详细完整版]5大数据.docx

    特点 大数据的特点可以总结为4个V,即Volume(体量浩大)、variety(模态繁多)、Velocity(生成快速)、Value(价值巨大但密度很低)。 首先,数据集合的规模不断扩大,已从GB到TB再到PB级,甚至开始以EB和ZB 来...

    [详细完整版]6大数据.docx

    对大数据,现在比较流行的是用 4 个"V"来总结其四个层面的含义:容量巨大(Volume),数据已从 TB 级别跃升至 PB 级别;数据类型多(Variety),从普通的文字、视频、图片到逐渐增多的地理位置信息等,类型纷繁,已...

    《大数据》第1章大数据概念与应用.pptx

    以下是关于大数据概念和应用的知识点总结: 大数据概念 大数据(Big Data)是指其规模超出了常规数据库工具获取、存储、管理和分析能力的数据集。该概念第一次被正式提出是在2008年9月,美国《自然》(Nature)...

    大数据技术研究.doc

    介绍了大数据的基本概念、特征,总结了大数据的热门应用领域并用典型案例 进行佐证,重点剖析了云计算、Hadoop、数据备份等三大核心技术及关键策略,最后对 大数据应用中滋生的信息安全隐患提出了相应的对策。...

    电子商城系统设计实习报告.doc

    16 7.1.1 实体联系图 16 7.2 逻辑结构 18 7.2.1 数据表结构详细设计 18 7.2.2 数据库表之间的关系设计 19 8 程序效果展示 20 8.1 前台功能模块 20 8.2 后台功能模块 22 9 实习总结体会 27 实习内容简述 1 实习期间...

    大数据研究综述.docx

    百度百科对大数据的定义是: 大数据( big data) ,或称 巨量资料,指的是所涉及的资料量规模巨大到无法透过目前主 流软件工具,在合理时间内达到撷取、管理、处理并整理成为帮 助企业经营决策更积极目的的资讯。...

    高中生对于大数据发展的思考——我眼中的大数据.docx

    通过查阅相关资料,并结合自身的理解,本文以高中生的视角来分析,思考大数据的发展以及应用方向。 关键词:大数据;高中生;发展应用 我们生活在一个日新月异的时代,科技的飞速发展让人们享受到了巨大的便利。随着...

    我对大数据的看法.pdf

    我对⼤数据的看法 我对⼤数据的看法 ⼤数据 ⼤数据(bigdata),或称巨量资料,指的是所涉及的资料量规模巨⼤到⽆法透过⽬前主流软件⼯具,在合理时间内达到撷取、管理、处理、并 整理成为帮助企业经营决策更积极⽬的...

    大数据专题.doc

    大数据特点 目前,学界和业界关于大数据特点,归纳总结为"4V",即Volume(大体量)、Vari ety(多样性)、Velocity(快变化)和Valve(含价值)。 、Volume:PB级数据成为常态;当然,"大"具有相对性,并非必须是PB级数据...

    大数据与专利分析.doc

    "大数据"相对于传统"小数据"的特点,传播非常广泛的是Gartner集团分析师L aney所总结出的三个"V",即容量(Volume)、种类(Variety)、速度(Velocity)。 以此为基础,IBM进一步将其扩充到四个"V",即:1、容量...

    数据挖掘-大数据选址问题(PPT+论文).pptx

    目录 1 大数据时代的4个"V" 2 关于商铺选址 3 如何用大数据来看"风水" 4 百度大数据实验室 5 慧选址 6 总结 数据挖掘-大数据选址问题(PPT+论文)全文共22页,当前为第2页。 1、大数据时代的4个"V" "大数据"的定义是...

Global site tag (gtag.js) - Google Analytics