Velocity快速入门教程
velocity快速入门
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快速指南
在以上示例中我们引用变量时,使用“$”符紧接变量名,如$foo,除此之外还有一种正式的引 用方法,如下所示: ${foo} ${customer.Address} ${customer.getAddress()} 对于一般的使用,之前的章节所讲述的方法是完全够用的,但有些特殊情况我们必须使用本节 所讲的正式引用法。例如,我们引用一个变量$vice,对于如下语句: Jack is a $vicemaniac. $vice 不能够正常解析,因为“vice”和文本“maniac”紧挨着,造成变量名被解析成$vicemaniac。 正确的写法,是使用正式引用法: Jack is a ${vice}maniac. 这样就可以区分特殊情况下的变量名和普通文本。
例如,当我们写”Give me $9999 please!”这句话时不会出现什么问题,因为 VTL 标识符总是以字母 开头,所以$9999 不会被误解为变量引用,但当普通文本和现有变量引用存在冲突的时候,我 们可以使用右斜杠“\”转义。例如,
#set( $email = “foo” ) $email
变量
VTL 的命名规则很简单,第一个字符必须是字母(a..z 或 A..Z),其他的部分限于以下类型:
字母(a..z, A..Z)
数字(0..9)
减号(“-“)
下划线(“_”)
以下是标识符合法的变量:
$foo
$bosnMa
$bosn-ma
$bosn_ma
$bosnMa1
变量既可以通过 set 指令赋值(FE),也可以通过 Java 代码赋值(RD)。例如,如果一个 Java 变量$foo 的值为”abc”,当模板被请求时,所有页面上的$foo 都将被赋值”abc”。
velocity用法简单实例说明
velocity用法简单实例说明文章来源:/renxianzuo/archive/2009/08/18/4457381.aspx不少人看过或了解过Velocity,名称字面翻译为:速度、速率、迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts是如何联系,怎么看待Velocity呢?让我们来尝试一下,了解Velocity的概念,通过在这里的介绍,强调在技术选择上的问题,让大家在选择项目开发时,可以考虑Velocity,另外也让大家了解它的思想,毕竟它提供了一个很好的思维方式,给大家换换筋骨,换一种思考的方式。
本文基于你对Java开发有一定基础,知道MVC,Struts等开发模式。
Velocity是一种Java模版引擎技术,该项目由Apache提出,由另外一种引擎技术Webmacro引深而来。
那什么是官方的Velocity定义呢?Apache对它的定义是:一种基于Java的模板引擎,但允许任何人使用简单而强大的模板语言来引用定义在Java代码中的对象。
目前最新的版本是1.4,可以在/velocity/index.html查找更多信息。
其实说白了Velocity也就是MVC架构的一种实现,但它更多的是关注在Model和View之间,作为它们的桥梁。
对于MVC的最流行架构Struts来说,相信大家都不陌生,很多开发人员已经大量在使用Struts 架构,包括IBM的Websphere5以上的管理平台版本,Struts技术很好的实践了MVC,它有效的减少Java代码在View(Jsp)中的出现,但在Model和View之间还是依靠Struts的Taglib技术来实现,试想如果前台开发的网页设计师对Struts乃至Taglib不熟(相信也挺难熟的,包括后期的维护人员也一样),将会对网页设计师和前台开发工程师的相互协作开发带来很大的难度,现实开发中也还是存在这样事实,网页设计师和前台开发之间的工作或多或少还是存在一定的耦合,怎样最大限度的解决这个难题呢?还是让我们来看看Velocity或者说这个概念吧。
velocity入门使用教程
velocity入门使用教程V elocity入门使用教程一、使用velocity的好处:1.不用像jsp那样编译成servlet(.Class)文件,直接装载后就可以运行了,装载的过程在web.xml里面配置。
【后缀名为.vhtml是我们自己的命名方式。
也只有在这里配置了哪种类型的文件,那么这种类型的文件才能解析velocity语法】2.web页面上可以很方便的调用java后台的方法,不管方法是静态的还是非静态的。
只需要在toolbox.xml里面把类配置进去就可以咯。
【调用的方法$class.method()】即可。
3.可以使用模版生成静态文档html【特殊情况下才用】二、使用1、下载velocity-1.7.zip 、velocity-tools-2.0.zip2、解压后引用3个jar文件velocity-1.7.jar、velocity-tools-2.0.jar、velocity-tools-view-2.0.jar 还有几个commons-…..jar 开头的jar包三、配置文件:Web.xml<="" bdsfid="75" p="" xmlns:xsi="/doc/0310614676.html,/2001/XMLS chema-instance">xmlns="/doc/0310614676.html,/xml/ns/jav aee"xmlns:web="/doc/0310614676.html,/xml/n s/javaee/web-app_2_5.xsd"xsi:schemaLocation="/doc/0310614676.ht ml,/xml/ns/javaee/doc/0310614676.html,/xml/ns/javaee/web -app_2_5.xsd"version="2.5">velocityorg.apache.velocity.tools.view.VelocityViewServlet1velocity*.vmvelocity*.jspvelocity*.htmlToolbox.xml 【这个文件和web.xml放在一起,不要改名字,否则不会自动加载】...<tool< bdsfid="160" p=""></tool<>class="/doc/0310614676.html,parisonDate Tool"/>四、页面使用(html)"/doc/0310614676.html,/TR/html4/loose.dt d"><="" action="tree/tree!add.action" bdsfid="195" id="form1" name="form1" p="">method="post">序号:bdsfid="239" id="treeproduKey" maxlength="3" name="treeproduKey" onkeydown="keySel(event);" p="" type="text"/>value=$!{request.produKey_3}><font< bdsfid="242" p=""></font<> color="red"size="2px">*序列号请输入三位数字名字:1-50个字母、数字或者汉字’所属类别:#foreach($list in#if(!$/doc/0310614676.html,)<="" bdsfid="265" class="easyui-linkbutton" p="" plain="false"><="" bdsfid="267" class="easyui-linkbutton" p=""plain="false">iconCls="icon-save"href="#this"onclick="checkForm();">确认添加 #else<="" bdsfid="269" class="easyui-linkbutton" p="" plain="false"><="" bdsfid="271" class="easyui-linkbutton" p=""plain="false">iconCls="icon-save"href="#this"onclick="checkForm();">确认更新 #end。
Velocity模板学习(一)
Velocity模板学习(⼀)⼀、Velocity是什么Velocity是⼀个基于Java的模板引擎,允许任何⼈仅仅简单地使⽤模板语⾔就可以引⽤由Java代码编写的对象。
⼆、Velocity的基本语法1.变量变量的定义在Velocity中,变量的类型是弱类型的。
#set($name = 'xiaoqian');当⽤#set指令的时候,#set命令后⾯的括号中的字⾯字符串将被解析和重新解释。
#set($begin = 'www');#set($end = 'index.vm');#set($all = "$begin/$end");$all的值为www/index.vm变量规范的写法${name},也可以写成$name,提倡前⾯⼀种写法。
tom is a last $nameline;//这种情况下Velocity不能识别出您到底要使⽤什么变量tom is a last ${name}line;//⽤{}括起来就⽐较清晰但是在引⽤属性的时候不要加{}变量的赋值赋值的变量左边必须是⼀个变量或者属性引⽤,右边可以是下⾯6种值之⼀。
变量引⽤,字⾯字符串,属性引⽤,⽅法引⽤,字⾯数字,数组列表#set($aa = $bb);#set($aa.c = 'tomcat');注意:(1)如果上⾯例⼦的右边值为null,那么左值不会被赋值,会保留原来的值。
(2)Velocity模板中未被定义的变量将被认为是⼀个字符串(3)Velocity模板不会将reference解释成对象的实例变量2.循环#foreach ($element in $list)$VelocityCountThis is $element#end//举例#set($list = ['apple','pear','pink']);#foreach ($element in $list)$VelocityCountThis is $element上⾯例⼦输出的是1 This is apple2 This is pear3 This is pink3.条件语句#if(condition)#elseif(condition)#else#end4.语句的嵌套#foreach ($element in $list)#inner foreach5.将不存在的变量或者变量的值为null强制显⽰为空⽩$!name或者$!{name}因为如果不在前⾯加上!,那么在变量不存在或者变量值为null的时候,就直接会显⽰原来的字符举例:$name,当name不存在的话,就直接会显⽰$name,如果加上!的话,就会显⽰空⽩,这样才⽐较合理。
java模板引擎velocity 方法
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?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用法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轴正方向移动。
需要注意的是,物体的速度是以每秒钟移动的距离来表示的。
Velocity软件使用说明bak
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入门教程
</servlet> <servlet-mapping>
<servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> </web-app>
velocityContext.put("txt", "hello, world!");
StringWriter stringWriter = new StringWriter(); template.merge(velocityContext, stringWriter);
System.out.println(stringWriter.toString()); } }
代码中首先初始化一个 velocity 引擎,并载入一个.vm 文件,vm 就是 velocity 模板文
件的标准后缀,初始化 velocity 上下文,将一个叫做“hello, world!”的字符串以一个名
为“txt”的键,加入 velocity 上下文中,然后输出最终结果。
4
hello.vm 的内容为$txt
response); }
}
代码中,我们仅仅是向 request 域中放入了一个叫做“txt”的属性,然后指定了 vm
视图的路径,和使用 JSP 视图做法是一样的。
在/WEB-INF/views 下,创建一个 test.vm,内容如下
Velocity初始化过程解析
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 VTL入门介绍
velocity简介(二)
• Velocity可以和Struts,webwork等结合使用,我 们主要是和WEBWORK结合使用! • 使用步骤:1、加入包velocity-1.6.2.jar velocity-tools-1.4.jar commons-long-2.2.jar 2、 页面使用VTL写3、action中写对应的get方法 4 、将xwork.xml中的result的type属性改为 velocity
使用宏,注意事项
• Velocimacro必须被定义在他们被使用之前。也 就是说,你的#macro()声明应该出现在使用 Velocimacros之前。 • 特别要注意的是,如果你试图#parse()一个包 含#macro()的模板。因为#parse()发生在运行期, 但是解析器在parsetiem决定一个看似VM元素 的元素是否是一个VM元素,这样#parse()-ing 一组VM声明将不按照预期的样子工作。为了 得到预期的结果,只需要你简单的使用 velocimacro.library使得 Velocity在启动时加载你的VMs。
VTL指令
• • • • • • • 声明, #set 条件, #if( ) #elseif() #else #end 循环, #foreach 引入, #include 包含, #parse 停止执行并返回, #stop 宏,#macro
VTL指令--声明
• #set ($var=XXX) 左侧(var)必须是变量或属性; 右侧可以是: a. 变量的引用(reference) b. String类型 c. 属性的引用(reference) d. 方法的引用(reference) e. number类型 f. ArrayList g.MAP h.支持算术运算 • 右侧为空的特殊处理 “ ”和’ ’ 的区别
Velocity教程
#set($monkey = $bill)变量reference #set($monkey.Friend = “monica”)##String literal #set($monkey.Blame = $whitehouse.leak)##属性reference #set($monkey.Plan = $spindoctor.weave($web))##方法 #set($monkey.Number = 123)##Number literal #set($monkey.Say = [”Not” ,$my, ”fault”])##ArrayList 最后一个的取值方法是:$monkey.Say.get(0)
一次可以导入多个文件
#macro ( d ) <tr><td></td></tr> #end 上面的模板定义为d,调用时: #d() Velocity 将用<tr><td></td></tr>替换#d()
一个参数是color,另一个参数是一个数组: #macro( tablerows $color $somelist) #foreach( $something in $somelist ) <tr><td bgcolor=$color>$something</td></tr> #end #end
UED实习生
——欧阳涛
是基于java的模板引擎; 名称字面翻译为:速度、速率、迅速; Jsp的替代品; Apache对它的定义是:一种基于Java的模板引擎,但 允许任何人使用简单而强大的模板语言来引用定义在 Java代码中的对象;
在Velocity中,变量的定义都是使用“$”开头的,$作 为Velocity的标识符。字母、数字、中划和下划线都可 以作为Velocity的定义变量。未被定义的变量被看做字符串! 需要注意的是Velocity特色的变量定义,如: $student.No、$student.Address:
Velocity学习手册
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入门教程EasyJWeb-Velocity脚本简明教程“简易、实用才是硬道理”、“让J2EE应用开发变得更加轻松、简单”很多人下载了EasyJWeb的开源应用示例,但是对动态页面模板文件中的标签使用不是很熟悉,这里简单介绍一下。
EasyJWeb特定把视图限定为Velocity,因为我们觉得在Velocity在表现上从可维护性、简洁性乃灵活性上,比JSP及其它视力技术表现强得多。
虽然我们可以非常简单把EasyJWeb扩展成支持多种视力技术,但当前我们不打算这样做!使用EasyJWeb的目的,是在于把页面-程序完成分开,就也就是一个项目中,程序员使用专业Java开发工具(如Eclipse、JBuilder等)来编写、调试、测试程序,页面制作人员使用专业的网页制作工具(如Macromedia Dreamweaver)来设计制作网页,而两者之间的协调通过一个规范的接口协议来解决。
需要在页面里面加如一些标签,来生成动态内容,这一工作可以交由网页制作人员来完成。
因为使用Velocity 作为视图,由于他的语法、功能及使用方法都比较简单,因此一般情况下,一天以内就能让页面制作人员熟练掌握其用法。
Velocity是一个基于java的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
作为一个比较完善的模板引擎,Velocity的功能是比较强大的,但强大的同时也增加了应用复杂性。
一、基本语法1、"#"用来标识Velocity的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#iinclude、#parse、#macro等;如:#if($info.imgs)#else#end2、"$"用来标识一个对象(或理解为变量);如如:$i、$msg、$TagUtil.options(...)等。
Velocity官方指南
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标准化教程
Match symbols on cables to symbols on front of
23
Amplifier
放大器连接
● 每个模块连接都用颜色进 行编码。
● 每条缆线上都有特殊图标
培 训
可以和放大器上的接口端
部 一一对应,方便用户进行
连接。
● 连接任何缆线只需把标记 向上然后直接推入,如果 不是缆线所对应的接口是 无法连接的。
11
“新 BOB” 模块
● BOB组件在这一代系统就 不存在了,其功能被分割为 不同的小型硬件模块
● 这些模块既可以放在导管床 培 旁也可以直接放置在床上
训
部 ● 这些模块的连接缆线比原来 的BOB缆线要细的多,这 样会大大减少噪音干扰
12
导管连接模块(CathLink)
● 该模块用于没有合适的多导连接模块时连接导管尾线
培 训 部
27
EnSite连接示意图
● 这就取消了体表图分线器。 培 ● 当使用 CathLink 模块, ECG 连线需要连接在放大器前面。
训 部
17
多导连接(RecordConnect )模块
● 不同的多导记录系统需要通过不同的多导连接模块 (RecordConnect)与 EnSite Velocity 连接。
● 不同的RecordConnects 模块可以与 GE Cardiolab, Bard , SJM EP-WorkMate 和 Siemens 多导系统连接。
默认低通设置为100Hz –150Hz.
培 训
这有助于减少 NavX 和 Array定
部
位信号引起的噪音。
● 无论导航多少个电极,Array 的定位信号保持在 200Hz 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。
注意:当引用属性的时候不能加{}(3)变量的赋值:$name="hello"赋值的左边必须是一个变量或者是属性引用。
右边可以是下面六种类型之一:变量引用,字面字符串,属性引用,方法引用,字面数字,数组列表。
下面的例子演示了上述的每种类型:#set( $monkey = $bill ) ## variable reference#set( $monkey.Friend = "monica" ) ## string#set( $monkey.Blame = $whitehouse.Leak ) ## property reference#set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference#set( $monkey.Number = 123 ) ##number#set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList注意:①如果上述例子中的右值是null, 则左值不会被赋值,也就是说会保留以前的值。
②velocity模板中未被定义的变量将被认为是一个字符串。
例如:#set($foo = "gibbous")$moon = $foo输出结果为:$moon = gibbous③velocity模板中不会将reference解释为对象的实例变量。
例如:$将被解释为Foo对象的getName()方法,而不是Foo对象的Name实例变量。
例如:$foo.getBar() 等同于$foo.Bar ;$data.getUser("jon") 等同于$er("jon") ;data.getRequest().getServerName() 等同于$data.Request.ServerName等同于${data.Request.ServerName}2.循环#foreach ($element in $list)This is $element.$velocityCount#end例子:#set( $list = ["pine", "oak", "maple"])#foreach ($element in $list)$velocityCountThis is $element.<br>#end输出的结果为:1 This is pine.2 This is oak.3 This is maple.每次循环$list中的一个值都会赋给$element变量。
$list可以是一个Vector、Hashtable或者Array。
分配给$element的值是一个java 对象,并且可以通过变量被引用。
例如:如果$element t是一个java的Product类,并且这个产品的名字可以通过调用他的getName()方法得到。
#foreach ( $key in $list.keySet())Key: $key -> Value: $list.get($key) <br>#end提示:velocity中大小写敏感。
Velocity还特别提供了得到循环次数的方法,$velocityCount变量的名字是Velocity 默认的名字。
例子:First example:#foreach ( $foo in [1..5] )$foo#endSecond example:#foreach ( $bar in [2..-2] )$bar#endThird example:#set ( $arr = [0..1] )#foreach ( $i in $arr )$i#end上面三个例子的输出结果为:First example:1 2 3 4 5Second example:2 1 0 -1 -2Third example:0 13.条件语句#if (condition)#elseif (condition)#else#end4.语句的嵌套#foreach ($element in $list)## inner foreach 内循环#foreach ($element in $list)This is $element. $velocityCount <br>inner<br> #end## inner foreach 内循环结束## outer foreachThis is $element.$velocityCount <br>outer<br>#end语句中也可以嵌套其他的语句,如#if…#else…#end等。
5.注释(1)单行注释:## This is a single line comment.(2)多行注释:#*Thus begins a multi-line comment. Online visitors won’t see this text because the Velocity Templating Engine will ignore it.*#(3)文档格式:#**This is a VTL comment block andmay be used to store such informationas the document author and versioninginformation:@version 1.1@author xiao*#6.关系和逻辑操作符Velocity 也具有逻辑AND, OR 和 NOT 操作符。
如## example for AND#if($foo && $bar)<strong> This AND that</strong>#end例子中#if() 指令仅在$foo 和$bar 都为真的时候才为真。
如果$foo 为假,则表达式也为假;并且 $bar将不被求值。
如果 $foo 为真,Velocity 模板引擎将继续检查$bar 的值,如果 $bar 为真,则整个表达式为真。
并且输出This AND that。
如果 $bar 为假,将没有输出因为整个表达式为假。
7.Velocity 中的宏Velocity中的宏我们可以理解为函数。
①宏的定义#macro(宏的名称 $参数1 $参数2 …)语句体(即函数体)#end②宏的调用#宏的名称($参数1 $参数2 …)说明:参数之间用空格隔开。
8.#stop停止执行模板引擎并返回,把它应用于debug是很有帮助的。
9.#include与#parse#include和#parse的作用都是引入本地文件, 为了安全的原因,被引入的本地文件只能在TEMPLATE_ROOT目录下。
区别:(1) 与#include不同的是,#parse只能指定单个对象。
而#include可以有多个如果您需要引入多个文件,可以用逗号分隔就行:#include ("one.gif", "two.txt", "three.htm" )在括号内可以是文件名,但是更多的时候是使用变量的:#include ( “greetings.txt”, $seasonalstock )(2) #include被引入文件的内容将不会通过模板引擎解析;而#parse引入的文件内容Velocity将解析其中的velocity语法并移交给模板,意思就是说相当与把引入的文件copy到文件中。
#parse是可以递归调用的,例如:如果dofoo.vm包含如下行:Count down.<br>#set ($count = 8)#parse ("parsefoo.vm")<br>All done with dofoo.vm!那么在parsefoo.vm模板中,你可以包含如下VTL:velocity tag laugane$count#set($count = $count - 1)#if ( $count > 0 )<br>#parse( "parsefoo.vm" )#else<br>All done with parsefoo.vm!#end的显示结果为:Count down.87654321All done with parsefoo.vm!All done with dofoo.vm!注意:在vm中使用#parse来嵌套另外一个vm时的变量共享问题。
如:->a.vm 里嵌套 b.vm;->a.vm 里定义了变量 $param;->b.vm 里可以直接使用$param,无任何限制。
但需要特别注意的是,如果b.vm里同时定义有变量$param,则b.vm里将使用b.vm里定义的值。
10.转义字符'\'的使用如果reference被定义,两个’\’意味着输出一个’\’,如果未被定义,刚按原样输出。
如:#set($email = "foo" )$email\$email\\$email\\\$email输出:foo$email\foo\$email如果$email 未定义$email\$email\\$email\\\$email输出:$email\$email\\$email\\$email (前面三个斜线,这里两个)11.内置对象Velocity内置了一些对象,在vm模版里可以直接调用,列举如下:$request、$response、$session,另外,模板内还可以使用 $msg内的消息工具访问 Struts 的国际化资源,达到简便实现国际化的方法。