Velocity教程
- 格式:doc
- 大小:142.50 KB
- 文档页数:31
velocity快速⼊门1.velocity简介 velocity是⼀个基于Java的模板引擎,可以通过特定的语法获取在Java对象的数据,填充到模板中,从⽽实现界⾯和Java代码的分离。
这意味着可以使⽤velocity替代jsp的开发模式了,这使得前端开发⼈员可以和 Java 程序开发⼈员同步开发⼀个遵循 MVC 架构的 web 站点,在实际应⽤中,velocity还可以应⽤于很多其他的场景。
2.应⽤场景web应⽤程序:作为应⽤程序的视图,展⽰数据。
源代码⽣成:velocity可⽤于基于模板⽣成Java源代码。
⾃动电⼦邮件:⽹站注册,认证等的电⼦邮件模板。
⽹页静态化:基于velocity模板,⽣成静态⽹页。
3.velocity组成结构velocity主要分为app、context、runtime和⼀些辅助util⼏个部分app模块:主要封装了⼀些接⼝,暴露给使⽤者使⽤,主要有两个类,分别是Velocity(单例)和VelocityEnginecontext模块:主要封装了模板渲染需要的变量runtime模块:整个velocity的核⼼模块,runtime模块会将加载的模块解析成语法树,velocity调⽤mergeTemplate⽅法时会渲染整棵树,并输出最终的渲染结果runtimeInstance类为整个velocity渲染提供了⼀个单例模式,拿到了这个实例就可以完成渲染过程了4.快速⼊门4.1 需求分析使⽤velocity定义HTML模板,将动态数据填充到模板中,形成⼀个完整的HTML页⾯4.2 步骤分析(1)创建项⽬(2)引⼊依赖(3)定义模板(4)输出html4.3 velocity⼊门程序创建maven项⽬,然后引⼊如下依赖<!--velocity--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.0</version></dependency>在templates⽬录下新建⼀个模板⽂件 demo1.vm,内容如下:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body>hello,${name}!</body></html>编写测试类,使⽤velocity⽣成html⽂件@Testpublic void test1() throws IOException {// 1.设置velocity的资源加载器Properties properties=new Properties();properties.put("file.resource.loader.class","org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");// 2.初始化velocity引擎Velocity.init(properties);// 3.创建velocity容器VelocityContext context=new VelocityContext();context.put("name","张三");// 4.加载模板⽂件Template template = Velocity.getTemplate("templates\\demo1.vm", "utf-8");// 5.合并数据到模板FileWriter fw=new FileWriter("D:\\idea_code\\cat-movie-main\\cat-movie-main\\movie-server\\src\\main\\resources\\static\\demo1.html");template.merge(context,fw);// 6.释放资源fw.close();}执⾏单元测试,就可以看到static⽬录下⽣成了demo1.html,并且数据显⽰<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body>hello,张三!</body></html>5.基础语法5.1 VTL介绍Velocity Template Language(VTL),是velocity中提供的⼀种模板语⾔,旨在提供最简单和最⼲净的⽅法来将动态内容合并到⽹页中,简单来说VTL可以将程序的动态数展⽰到⽹页中。
Velocity用户指南什么是Velocity?Velocity是基于Java的模板引擎。
它允许Web页面开发者引用Java代码中定义的方法。
Web设计者可以和Java程序开发者并行开发遵循MVC模式的Web 站点。
这意味着,Web设计者可以将精力放在好的Web站点设计上,而Java 程序开发者可以将精力放在编写代码上。
Velocity将Java代码从Web页面中分离,使Web站点更具长期可维护性,并提供了一种替代JSP或PHP的方案。
VTL(Velocity Template Language)介绍VTL提供一种简单、容易和干静的方法将动态内容合并到Web页面。
VTL使用引用(references)将动态内容插入到Web页面中。
变量是一种引用,可以指向Java代码中的定义内容,或者由Web页面中的VTL语句来获得值。
下面是一个可以插入到HTML文档的VTL语句的例子:#set( $a = "Velocity" )VTL语句以#开头,并包含指令(set)。
变量以$开头,用引号引起。
引号可以是单引号,也可以是双引号。
前者引用具体的String值;后者可以包含Velocity 引用,例如”hello, $name”,$name会用其当前的值替换。
上面的例子是将值Velocity赋值给变量a。
当变量被赋值后,就可以在HTML文档的任何地方引用,下面是Hello Velocity World!的例子:<html><body>#set( $foo = "Velocity" )Hello $foo World!</body><html>注释VTL支持单行注释(以##开始)和多行注释(包括在#*和*#之间),下面是一个例子:This text is visible. ## This text is not visible.This text is visible.This text is visible. #* This text, as part of a multi-line comment,is not visible. This text is not visible; it is also part of themulti-line comment. This text still not visible. *# This text is outsidethe comment, so it is visible.## This text is not visible.引用VTL有3种类型的引用:变量、属性和方法。
Velocity用户手册--中文版1 关于Velocity用户指南旨在帮助页面设计者和内容提供者了解Velocity和其简单而又强大的脚本语言(Velocity Template Language (VTL))。
本指南中有很多示例展示了用Velocity来讲动态内容嵌入到网站之中,但是所有的VTL examples都同演示用于所有的页面和模版。
感谢选择Velocity!2 Velocity是什么?Velocity是一个基于java的模板引擎(template engine)。
它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。
Velocity也可以为Turbine web开发架构提供模板服务(template service)。
Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。
3 Velocity能为我们作什么?3.1 The Mud Store Example假设你是一家专门出售泥浆(Mud)的在线商店的页面设计人员,让我们暂且称它为“在线MUD商店”。
你们的业务很旺,客户下了各种类型和数量的mud 订单。
他们都是通过输入用户名和密码后才登陆到你的网站,登陆后就允许他们查看订单并购买更多的mud。
现在,一种非常流行的mud正在打折销售。
另外有一些客户规律性的购买另外一种也在打折但是不是很流行的Bright Red Mud,由于购买的人并不多所以它被安置在页面的边缘。
所有用户的信息都是被跟踪并存放于数据库中的,所以某天有一个问题可能会冒出来:为什么不使用velocity 来使用户更好的浏览他们感兴趣的商品呢?Velocity使得web页面的客户化工作非常容易。
1. 什么是velocity2.0?velocity2.0是一个模板引擎,用于在Web开发中,特别是在Java Web开发中,用于生成HTML、XML等静态文件。
velocity2.0可以将模板文件中的变量替换为具体的数值,也可以执行一些简单的逻辑操作,比如条件判断、循环等。
它的主要作用就是将模板和数据整合在一起,生成最终的文件输出。
2. velocity2.0的入门指南想要学习和使用velocity2.0,首先需要了解它的基本语法和用法。
下面是velocity2.0入门的一些基本概念和内容。
3. 变量在velocity2.0中,变量用来表示一些数值、字符串或者对象,在模板中可以通过变量名来引用这些值。
变量的命名规则和作用域和Java中的情况很类似,这些都是需要在学习velocity2.0时需要注意的地方。
4. 变量定义与赋值在velocity2.0模板中,可以通过#set指令来定义和赋值一个变量,比如:```#set($name = "velocity2.0")```这样就定义了一个名为name的变量,并赋值为"velocity2.0"。
5. 变量的引用定义了变量之后,就可以在模板中引用这个变量了。
比如:```Wee to $name!```这样就会在生成的文件中,将$name替换为具体的数值,也就是"velocity2.0"。
6. 变量的作用域velocity2.0中的变量和作用域和Java中的类似,有全局变量和局部变量之分。
全局变量是在整个模板中都可以访问的,而局部变量只在某个指令块中可以访问。
7. 方法除了变量之外,方法也是velocity2.0中比较重要的概念。
在模板中,可以通过方法来执行一些逻辑操作,比如字符串的拼接、条件判断、循环等。
8. 方法的定义与调用在velocity2.0模板中,可以通过#macro指令来定义一个方法,然后通过#call指令来调用这个方法。
java模板引擎velocity 方法【实用版4篇】目录(篇1)1.Java 模板引擎 Velocity 简介2.Velocity 的使用方法3.Velocity 的基本语法4.Velocity 的优点与局限性正文(篇1)一、Java 模板引擎 Velocity 简介Java 模板引擎 Velocity 是一款基于 Java 的模板引擎,它可以帮助开发者简化代码编写,提高工作效率。
Velocity 允许用户将输出结果与数据分离,通过定义模板和提供数据,可以生成各种格式的文档。
它具有很强的扩展性,可以轻松地与其他 Java 框架集成。
二、Velocity 的使用方法1.添加 Velocity 依赖在项目中使用 Velocity,首先需要将 Velocity 的依赖添加到项目中。
对于 Maven 项目,可以在 pom.xml 文件中添加以下依赖:```xml<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>2.0</version></dependency>```2.创建 Velocity 配置在项目中创建一个 Velocity 配置类,用于配置 Velocity 的属性。
例如:```javaimport org.apache.velocity.app.Velocity;import org.apache.velocity.context.Context;import org.apache.velocity.runtime.RuntimeConstants;import org.apache.velocity.runtime.RuntimeServices;public class VelocityConfig {public static Velocity getVelocityInstance() {Velocity velocity = new Velocity();velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LEVEL, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_LOG_PATH,"/tmp/velocity.log");velocity.setProperty(RuntimeConstants.RUNTIME_DIRECTIVE_LOG_LEV EL, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_DIRECTIVE_LOG_PAT H, "/tmp/directive.log");velocity.setProperty(RuntimeConstants.RUNTIME_CHAIN_LOG_LEVEL, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_CHAIN_LOG_PATH, "/tmp/chain.log");velocity.setProperty(RuntimeConstants.RUNTIME_TEMPLATE_LOG_LEVE L, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_TEMPLATE_LOG_PATH, "/tmp/template.log");velocity.setProperty(RuntimeConstants.RUNTIME_STATIC_LOG_LEVEL, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_STATIC_LOG_PATH, "/tmp/static.log");velocity.setProperty(RuntimeConstants.RUNTIME_FILE_LOG_LEVEL, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_FILE_LOG_PATH,"/tmp/file.log");velocity.setProperty(RuntimeConstants.RUNTIME_LOG_IGNORE_CASE, "true");velocity.setProperty(RuntimeConstants.RUNTIME_LOG_ENABLED, "true");velocity.setProperty(RuntimeConstants.RUNTIME_DIRECTIVE_ENABLED, "true");velocity.setProperty(RuntimeConstants.RUNTIME_TEMPLATE_ENGINE_E NABLED, "true");velocity.setProperty(RuntimeConstants.RUNTIME_STATIC_ENGINE_ENA BLED, "true");velocity.setProperty(RuntimeConstants.RUNTIME_FILE_ENGINE_ENABL ED, "true");return velocity;}}```3.创建 Velocity 模板在项目中创建一个 Velocity 模板文件,例如:test.vm。
一、什么是Java模板引擎Velocity?Java模板引擎Velocity是一种用于动态生成文本的工具,它能够通过预定义的模板和数据生成所需的文本。
它是Apache软件基金会的一个开源项目,因其灵活性和高效性而得到了广泛的应用。
二、Velocity的基本用法1. 引入Velocity库要使用Velocity,首先需要在项目中引入Velocity库。
可以通过Maven或手动下载并导入jar包的方式将Velocity集成到项目中。
2. 创建模板文件在使用Velocity时,需要预先创建模板文件,模板文件中可以包含一些占位符和逻辑控制代码,用来指示Velocity填充内容或执行相应的逻辑。
3. 创建模板上下文在Java代码中,需要创建一个模板上下文对象,该对象用于存储模板中需要填充的数据。
4. 渲染模板通过Velocity引擎的渲染方法,将模板文件和模板上下文传入,即可生成最终的文本内容。
五、Velocity的高级用法1. 模板继承Velocity支持模板继承的功能,可以在模板中定义块,然后在子模板中重写这些块的内容。
2. 自定义指令Velocity允许用户自定义指令,以满足特定的需求。
通过编写自定义指令的代码,可以扩展Velocity的功能。
3. 工具类集成Velocity本身并不包含太多实用的工具类,但它可以和一些常用的工具类集成,比如Apache Commons和Guava等,以提高模板中逻辑控制的灵活性和便利性。
六、Velocity的优缺点1. 优点(1)简单易学:Velocity的语法简单易懂,很容易上手。
(2)高效灵活:Velocity能够高效地生成文本,并且支持高度的灵活定制。
(3)可扩展性强:Velocity支持自定义指令,可以满足各种复杂的需求。
2. 缺点(1)性能一般:相比一些新的模板引擎,Velocity的性能并不算太突出。
(2)社区活跃度不高:作为一个老牌的模板引擎,Velocity的社区活跃度已经不如以前,新功能和bug修复相对较慢。
unity中velocity用法Unity中的velocity用法Velocity是Unity中一个非常重要的属性,它可以用于控制物体在三维空间中的运动速度和方向。
在游戏开发中,我们经常需要使用velocity来实现各种物体的运动效果,比如玩家角色的移动、敌人的追逐等。
在本文中,我们将一步一步地回答关于Unity中velocity的用法和使用技巧。
一、Velocity的基本概念在物理学中,Velocity(速度)是一个矢量量,表示物体在单位时间内的位移。
在Unity中,Velocity也是一个矢量量,它用来表示物体在三维空间中的运动速度和方向。
在Rigidbody组件中,velocity属性可以用来直接修改物体的速度和方向。
Velocity是一个三维向量,可以通过Vector3类型来表示。
在Unity中,我们可以使用Vector3的各种方法和属性来控制和操作velocity。
二、Velocity的基本使用方法要使用velocity控制物体的运动,首先需要在物体上添加Rigidbody组件。
Rigidbody是一个物理组件,可以用来实现物体的真实运动效果。
在Rigidbody组件中,有一个velocity属性,用于控制物体的速度。
csharppublic Rigidbody rb;void Start(){rb = GetComponent<Rigidbody>();}void Update(){rb.velocity = new Vector3(2, 0, 0); 将物体的速度设置为(2, 0, 0) }在上面的例子中,我们首先在Start方法中获取物体上的Rigidbody组件,然后在Update方法中通过设置rb.velocity属性,将物体的速度设置为(2, 0, 0)。
这样物体就会以每秒2个单位长度的速度,向x轴正方向移动。
需要注意的是,物体的速度是以每秒钟移动的距离来表示的。
第1章第一个VELOCITY程序Velocity工程首页Eclipse建立工程,导入velocity的jar,新建FirstExample.java,输入如下代码public class FirstExample{public static void main(String[] args) throws Exception{Velocity.init();VelocityContext context = new VelocityContext();context.put( "name", new String("卢斌晖"));context.put("dream","做有钱佬");Template template = null;try{template = Velocity.getTemplate("FirstExample.vm","UTF-8");}catch( ResourceNotFoundException rnfe ){System.out.println("couldn't find the template");}catch( ParseErrorException pee ){}catch( MethodInvocationException mie ){}catch( Exception e ){}StringWriter sw = new StringWriter();template.merge( context, sw );System.out.println(sw);- 1 -}}在src根目录建立velocity模版文件FirstExample.vm,将编码改为UTF-8。
输入如下代码:―――――――――――――――――――――――#set( $unitName = "中教科技" )#set( $dept = '研发部')我叫$name,好高兴见到你。
Velocity汉化步骤首先确认Velocity2.0门禁系统软件已经安装完毕。
1、将Customs.cst文件复制到C:\Programs Files\Hirschelectronics\Velocity目录下。
2、点击“开始”\“程序”\Hirsch Electronics Velocity\Velocity键,进入软件中。
3、点击Files\Import\Export\Customsation进入汉化文件导入界面,点击“Next”后选择“Import”进行汉化。
4、第3步完成后,点击“Console”目录下的最后一项“参数选择”,将“概要”中第2项打上“√”。
5、第4步完成后,在计算机屏幕右下角用右键点击“Services”\Setting,同样将“Database”中第2项打上“√”。
6、以上步骤完成后,退出软件,重新启动计算机进入Velocity软件。
软件使用说明1、首先确认系统硬件已经和计算机连接完毕(计算机通过Com口与控制器通讯)。
设置端口2、打开Velocity软件,在配置\DIGI*TRAC配置\SNET点击增加新SNET端口,在名称处给该端口一个新名称(一般设为Com1),然后在端口配置中选择波特率(一般选9600)和端口,然后点确认键完成该端口的添加。
添加控制器3、端口增加完毕后,点击该端口并继续点击增加新控制器,在新控制器属性界面内名称处给控制器设定一个新名称;在地址处给该控制器设定地址(控制器内的地址拨码开关是几则在该处就设定几);在型号处给该控制器设定型号(根据添加该控制器的具体型号而定,如2门控制器为M2、8门控制器为M8);在控制器时区处选择中国,其余均为默认值,点击确认键完成该控制器的添加。
门属性设置4、以8门控制器为例:控制器添加完毕后,点击该控制器并继续点击门,出现了Door1~Door8,双击Door1,在Door1的属性界面内点击报警输入,在设置界面内的报警模块处选择模块类型(一般默认值为DTLM2\MELM2),将出门按钮选中,选择触发继电器并屏蔽报警;其余均为默认值,点击确认键完成该Door1的设置。
Velocity初始化过程解析Velocity是一个表示层的模板框架,作为jsp的替代者,有着很多优势。
小巧方便,不必使用el或者其他表示层技术来展示页面,感觉是一个很新颖的技术。
Velocity作为MVC框架中的V存在,和普通jsp页面有着不同,它是一种template引擎,利用先编辑完的格式来作为大纲,把一些需要变化的地方作为参数传入,显示时将模板和参数合并,达到最终输出的样子。
本文使用目前最新的velocity1.6.2.jar包进行解析。
最根本的velocity就是由template,engine,context组成。
1、首先创建一个template(如果是用在web上就是一个html文件),将需要参数化或实例化的地方用跟context有关的符号标记出来,标记时使用velocity template language。
而template应该可以是任意的文本。
2、给context设定一些值,这些值用来替换在template中被标记的地方。
3、利用engine将template中需要替换的地方用context中的值替换掉,也就是所谓的merge,从而得到该模板的实例。
简单的用java代码来输出就是:VelocityEngine velocity = new VelocityEngine();VelocityContext context = new VelocityContext();context.put("name", "czy");Template template = velocity.getTemplate("/src/main/resources/test.vm"); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));template.merge(context, writer);writer.flush();writer.close();至于我们为什么使用VelocityEngine 而不是使用Velocity类,或者说两者有什么区别,请看《VelocityEngine 和Velocity类解析》我们假设使用普通的velocityEngine来作为引擎,来进入初始化的过程。
Velocity学习手册velocity学习手册01 一个完整的 velocity 应用包含三个文件:01 属性文件(.properties);02 模板文件(.vm);03 java解释文件(.java);02 velocity 整体编程流程(针对客户端):01 加载属性文件:Velocity.init("velocity.properties");或使用默认值:Velocity.init();02 获取上下文环境:VelocityContext context = new VelocityContext();03 向上下文环境中添加变量引用:context.put("list", getNames());04 获得一个输出流:BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));05 根据模板文件获取模板对象:Template template = Velocity.getTemplate(templateFile);06 将模板上下文环境和输出流合并:if ( template != null)template.merge(context, writer);07 输出数据并关闭输出流:writer.flush();writer.close();注:01 04-06 这三步的实质是根据已有的模板文件生成模板对象并和输出流合并,获得最终的数据输出,也可以这样写:StringWriter w = new StringWriter();Velocity.mergeTemplate("example2.vm", context, w );System.out.println(" template : " + w );02 模板文件可以动态的生成,保存在字符串中,针对 04-06 步改动如下:String s = "We are using $project $name to render this.";StringWriter w = new StringWriter();Velocity.evaluate( context, w, "mystring", s );System.out.println(" string : " + w );03 velocity 整体编程流程(针对Servlet):01 继承基础类:public class SampleServlet extends VelocityServlet02 加载配置文件,这个方法会在VelocityServlet 的初试化方法init() 中被调用:protected Properties loadConfiguration(ServletConfig config )throws IOException, FileNotFoundException{Properties p = new Properties();//===================================== =======================[通过程序设置] 01 设置(模板)文件资源的加载路径:String path = config.getServletContext().getRealPath("/");if (path == null){path = "/";}p.setProperty( Velocity.FILE_RESOURCE_LOADER_PATH,path );02 设置 velocity 日志的输出路径(这是动态的设置):p.setProperty( "runtime.log", path + "velocity.log" );//===================================== =======================[通过配置文件] 01 获取初试化配置文件的位置(通过 Servlet 的初始化参数);SampleServlet 在部属描述文件中的参数“properties”就对应着 VelocityServlet 中的“INIT_PROPS_KEY”参数;String propsFile = config.getInitParameter(INIT_PROPS_KEY);02 加载属性文件;if ( propsFile != null ){String realPath = getServletContext().getRealPath(propsFile);if ( realPath != null ){propsFile = realPath;}p.load( new FileInputStream(propsFile) );}03 修改 velocity 日志属性;String log = p.getProperty( Velocity.RUNTIME_LOG);if (log != null ){log = getServletContext().getRealPath( log );if (log != null){p.setProperty( Velocity.RUNTIME_LOG, log );}}04 修改(模板)文件资源的加载路径;String path = p.getProperty( Velocity.FILE_RESOURCE_LOADER_PATH); if (path != null ){path = getServletContext().getRealPath( path );if (path != null){p.setProperty( Velocity.FILE_RESOURCE_LOADER_PATH,path ); }}//===================================== ======================= 返回属性文件;return p;}03 处理过程:public Template handleRequest( HttpServletRequest request,HttpServletResponse response, Context ctx ){01 向上下文环境中添加数据:ctx.put("theList", personList );02 生成模板文件:Template template = getTemplate("sample.vm");03 返回:return template;}。
Velocity官方指南-使用Velocity如果你使用的是VelocityViewServlet或者其他的web框架,你不会直接调用到Velocity。
但是,如果在非web的应用中或者自己编写的web框架时,你将会像上面说的基本流程一样直接调用到Velocity 引擎。
另外一个需要记住的重点是,必须在使用Velocity合并模版之前,初始化Velocity引擎。
Velocity辅助类Velocity中包含一个叫做Velocity( org.apache.velocity.app.Velocity )的应用工具类。
这个类的主要是提供一些初始化Velocity时必须的方法,以及简化Velocity使用的一些常规方法。
这个在工程的javadoc中有描述,可通过阅读javadoc来获取更详细的说明。
本篇文档只是教程;所以,如果需要了解完整的API信息,javadoc是你最好的选择。
Velocity运行时引擎是为在同一个jvm中的其他使用者提供资源获取,日志记录等其他服务的单个实例。
因此,运行时引擎只会初始化一次。
你可以尝试初始化多次,但是只有第一次是有效的,后面的初始化操作都会被忽略。
Velocity工具类提供了五个用来配置运行时引擎的方法。
这五个配置方法如下:∙setProperty( String key, Object o )设置属性键key对应属性值为o。
值通常为字符串,在特殊情况下也可以是逗号分隔的一串值(如”foo,bar,woogie”),当然也可以其他值。
∙Object getProperty( String key )获取属性键key对应的值。
需要注意的是返回值的类型,不仅仅只是字符串类型∙init()使用jar包中的默认properties文件中配置的属性初始化运行时引擎∙init(Properties p)使用类型为java.util.Properties参数出入的属性来初始化运行时引擎∙init( String filename )使用文件名为filename的properties文件中的属性值初始化运行时引擎需要注意的是,在上面的这五个方法中,默认的properties是基础的配置,额外的properties是用来替换默认配置中对应的属性。
velocity教程Velocity是⼀个基于java的模板引擎(template engine)。
它允许任何⼈仅仅简单的使⽤模板语⾔(template language)来引⽤由java代码定义的对象。
当Velocity应⽤于web开发时,界⾯设计⼈员可以和java程序开发⼈员同步开发⼀个遵循MVC架构的web站点,也就是说,页⾯设计⼈员可以只关注页⾯的显⽰效果,⽽由java程序开发⼈员关注业务逻辑编码。
Velocity将java代码从web页⾯中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外⼜提供了⼀种可选的⽅案。
⼀、Velocity脚本语法摘要1. 变量(1)变量的定义:#set($name = "hello") 说明:velocity中变量是弱类型的。
当使⽤#set 指令时,括在双引号中的字⾯字符串将解析和重新解释,如下所⽰:#set($directoryRoot = "www" )#set($templateName = "index.vm" )#set($template = "$directoryRoot/$templateName" )$template输出将会是:www/index.vm注:在velocity中使⽤$2.5这样的货币标识是没有问题得的,因为velocity中的变量总是以⼀个⼤写或者⼩写的字母开始的。
(2)变量规范的写法${name} ,也可以写成:$name。
提倡⽤前⾯的写法。
例如:你希望通过⼀个变量$vice来动态的组织⼀个字符串。
Jack is a $vicemaniac.本来变量是$vice现在却变成了$vicemaniac,这样Veloctiy就不知道您到底要什么了。
所以,应该使⽤规范的格式书写: Jack is a ${vice}maniac现在Velocity知道变量是$vice⽽不是$vicemaniac。
Velocity教程关键字: velocity教程Velocity是一个基于java的模板引擎(template engine)。
它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。
Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。
官方网站:/velocity/Velocity脚本摘要1、声明:#set ($var=XXX)左边可以是以下的内容Variable referenceString literalProperty referenceMethod referenceNumber literal #set ($i=1)ArrayList #set ($arr=["yt1","t2"])技持算术运算符2、注释:单行## XXX多行#* xxxxxxxxxxxxxxxxxxx*#References 引用的类型3、变量Variables以"$" 开头,第一个字符必须为字母。
character followed by a VTL Identifier. (a .. zor A .. Z).变量可以包含的字符有以下内容:alphabetic (a .. z, A .. Z)numeric (0 .. 9)hyphen ("-")underscore ("_")4、Properties$Identifier.Identifier$hashtable user中的的name值.类似:user.get("name")5、Methodsobject user.getName() = $user.getName()6、Formal Reference Notation用{}把变量名跟字符串分开如#set ($user="csy"}${user}name返回csyname$username$!username$与$!的区别当找不到username的时候,$username返回字符串"$username",而$!username返回空字符串""7、双引号与引号#set ($var="helo")test"$var" 返回testhellotest'$var' 返回test'$var'可以通过设置stringliterals.interpolate=false改变默认处理方式8、条件语句#if( $foo )<strong>Velocity!</strong>#end#if($foo)#elseif()#else#end当$foo为null或为Boolean对象的false值执行.9、逻辑运算符:== && || !10、循环语句#foreach($var in $arrays ) // 集合包含下面三种Vector, a Hashtable or an Array #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>$</td></tr> #end11、velocityCount变量在配置文件中定义# Default name of the loop counter# variable reference. = velocityCount# Default starting value of the loop# counter variable reference.directive.foreach.counter.initial.value = 112、包含文件#include( "one.gif","two.txt","three.htm" )13、Parse导入脚本#parse("me.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#end17、Range Operator#foreach( $foo in [1..5] )Velocity用户手册---中文版(来源网络)Velocity是什么?Velocity是一个基于java的模板引擎(template engine)。
它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
当V elocity应用于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模型进行开发。
Velocity能为我们作什么?The Mud Store ExampleVelocity使得web页面的客户化工作非常容易。
作为一个web site的设计人员,你希望每个用户登陆时都拥有自己的页面。
你会见了一些公司内的软件工程师,你发现他们每个人都同意客户应该拥有具有个性化的信息。
那让我们把软件工程师应该作的事情发在一边,看一看你应该作些什么吧。
你可能在页面内嵌套如下的VTL声明:<html><body>Hello $!<table>#foreach( $mud in $nudsOnSpecial )#if ( $customer.hasPurchased( $mud ) )<tr><td>$flogger.getPromo( $mud )</td></tr>#end#end</table>Velocity Template Language(VTL):AN introductionVTL意味着提供最简单、最容易并且最整洁的方式合并页面动态内容。
VTL使用references来在web site内嵌套动态内容,一个变量就是一种类型的reference。
变量是某种类型的refreence,它可以指向java代码中的定义,或者从当前页面内定义的VTL statement得到值。
下面是一个VTL statement的例子,它可以被嵌套到HTML代码中:#set ( $a = “Velocity” )和所有的VTL statement一样,这个statement以#字符开始并且包含一个directive:set。
当一个在线用户请求你的页面时,Velocity Templating Engine将查询整个页面以便发现所有#字符,然后确定哪些是VTL statement,哪些不需要VTL作任何事情。
#字符后紧跟一个directive:set时,这个set directive使用一个表达式(使用括号封闭)――一个方程式分配一个值给变量。
变量被列在左边,而它的值被列在右边,最后他们之间使用=号分割。
在上面的例子中,变量是$a,而它的值是Velocity。
和其他的references一样以$字符开始,而值总是以双引号封闭。
V elocity中仅有String可以被赋值给变量。
记住以下的规则:使用$字符开始的references用于得到什么;使用#字符开始的directives用于作些什么。
Hello Velocity World!一旦某个变量被分配了一个值,那么你就可以在HTML文件的任何地方引用它。
在下面的例子中,一个值被分配给$foo变量,并在其后被引用。
<html><body>#set ( $foo = “Velocity” )Hello $foo World!</body></html>上面的实现结果是在页面上打印“Hello Velocity World!”为了使包含VTL directives的statement更具有可读性,我们鼓励你在新行开始每个VTL statement,尽管你不是必须这么作。
Set directive将在后面详细描述。
注释单行注释:## This is a single line comment.多行注释:#*Thus begins a multi-line comment. Online visitors won'tsee this text because the V elocity Templating Engine willignore it.*#文档格式:#**This is a VTL comment block andmay be used to store such informationas the document author and versioninginformation:@version 5@author*#References在VTL中有三种类型的references:变量(variables)、属性(properties)、方法(methods)。