`
snoopy7713
  • 浏览: 1152109 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

velocity学习心得

阅读更多
目录
1. 常用的模版技术 2
1.1. Velocity 2
1.2. Freemarker 2
2. 参考资料 2
2.1. Java Compiler Compiler 2
2.2. WebMacro 3
2.3. Turbine 3
2.4. 模版技术讨论网站 3
2.5. Spring in Action 3
3. Velocity 基本知识 3
3.1. Velocity 的工作原理 3
3.1.1. Velocity模板 4
3.1.2. Velocity上下文 4
3.1.3. 业务数据 4
3.1.4. Velocity引擎 4
4. Velocity 的常用语法 4
4.1. 变量 4
4.2. 变量赋值 5
4.3. 变量的正式引用符号 5
4.4. 没有定义的变量引用 5
4.5. 引用符号!(Quit引用符号) 5
4.6. 转义符号\ 6
4.7. 算术表达式 7
4.8. 字符串处理 7
4.9. #if / #elseif / #else 7
4.9.1. 简单的if语句使用 7
4.9.2. 嵌套if语句 8
4.10. 循环:foreach 8
4.11. 注释 8
4.12. 变量为对象 9
4.13. Velocity引用变量的方法 9
5. Velocity模版中使用中文变量值 9
6. Velocity和一般文件集成使用 9
7. Velocity模板文件嵌套使用 10
8. Velocity engine的单例和多例 10
8.1. 单例模式使用Velocity引擎 10
8.2. 多例模式使用Velocity引擎 10
8.2.1. 在模版引擎的初始化参数文件中设置相关参数 10
8.2.2. 模版本身的字符设置 10
8.2.3. Velocity类上的设置 10
9. 宏 11
9.1. 定义宏 11
9.2. 使用宏 11
9.3. 使用全局宏 11
9.3.1. 定义全局宏模版文件 11
9.3.2. 定义Velocity的引擎属性文件 11
9.3.3. 在实际的模版文件中引用全局宏 12
10. 在Velocity模版中访问java类的static field 12
11. 使用Velocity 处理Word文档 12
12.1. 定义word格式的Velocity模版 12
12.2. 使用Velocity产生相应内容的word文件 13
12. 使用Velocity 处理Excel文档 13
12.1. 定义Excel格式的Velocity模版 13
12.2. 使用Velocity产生相应内容的Excel文件 13
13. Velocity的上下文链(Context Chaining) 14
14. 使用velocity定制个性化页面 14

1. 常用的模版技术
1.1. Velocity
http://jakarta.apache.org/velocity/index.html
1.2. Freemarker
freemarker
http://www.freemarker.org/
freemarker plugin :
http://freemarker.sourceforge.net/eclipse.html
2. 参考资料
2.1. Java Compiler Compiler
https://javacc.dev.java.net/
Velocity uses a grammar-based parser generated by JavaCC (Java Compiler Compiler) using the JJTree extension to create an Abstract Syntax Tree.
2.2. WebMacro
http://www.webmacro.org
Velocity's design concept is borrowed from WebMacro. Those involved in the Velocity project acknowledge and appreciate the development and design work that went into the WebMacro project.
2.3. Turbine
http://jakarta.apache.org/turbine/index.html
Velocity is a Java-based template engine. It can be used as a standalone utility for generating source code, HTML, reports, or it can be combined with other systems to provide template services. Velocity will be tightly integrated with the Turbine web application framework. Velocity-Turbine provide a template service by which web applications may be developed according to a true MVC model.
2.4. 模版技术讨论网站
http://www.matrix.org.cn/topic.shtml?forumId=30
2.5. Spring in Action
参考书籍《Spring in Action》这本书
3. Velocity 基本知识
3.1. Velocity 的工作原理
最好你了解模版方法的设计模式的大致意思(你可以参阅下Gof的设计模式)。
参考
http://dev.yesky.com/325/2061825.shtml
3.1.1. Velocity模板
采用Velocity定义的文本文件,该文件采用Velocity语言定义模板文件。
3.1.2. Velocity上下文
是Velocity的一个容器,用于保存相关业务数据。
3.1.3. 业务数据
这里指需要应用到模板的数据
3.1.4. Velocity引擎
用户把业务数据放置到Velocity 上下文,然后Velocity引擎使用Velocity把上下文应用到模板,按照模板格式输出数据。
简单来说Velocity引擎从Velocity上下文获取相关数据,然后把Velocity模版的相关内容进行处理,输出到指定的对象中。
4. Velocity 的常用语法
VTL(Velocity Template Language)的常用语法
4.1. 变量
采用以$作为前缀来标识一个标量
Hello $foo World!
上面的$foo表示在模板中引用了一个名字为foo的变量
4.2. 变量赋值
#set( $foo = "Velocity" )
设置变量foo的值="Velocity"
4.3. 变量的正式引用符号
一般来说 VTL的变量以$作为开始分隔符号,结束符号一般是以回车符号或者空格符号,逗号等分开。
name :$username
name: $username,usersex:$sex
对于在紧接变量后有其他字符或者变量的情况下,采用正式的引用(分隔)符号来识别变量。
#set( $vice = "klepto" )
Jack is a ${vice}maniac.
4.4. 没有定义的变量引用
对于没有定义的变量引用,Velocity原样返回。
Hello $foox World!
如果在Velocity的上下文中没有定义该变量的值,那Velocity引擎将输出的内容还是为:
Hello $foox World!
4.5. 引用符号!(Quit引用符号)
参考 \velocitybasictest\template\VarExample1.vm
<input type=”text” value=”$email”>
如果初始时,$email没有值,所以文本框中会显示值$email,而更希望是空
白。下面是使用Quit引用符号的例子:
<input type="text" value="$!email">
当$email没有值时,Velocity会用空串替代$email。
4.6. 转义符号\
参考目录 \velocitybasictest\template\ VarExample1.vm
#set( $email = "foo" )
email is :$email
email is :\$email
4.7. 算术表达式
参考目录 \velocitybasictest\template\ExpressExample.vm
#set( $ foo = 1 )
#set( $value = $foo + 1 ) ## Addition
#set( $value = $bar - 1 ) ## Subtraction
#set( $value = $foo * $bar ) ## Multiplication
#set( $value = $foo / $bar ) ## Division
#set( $value = $foo % $bar ) ## Remainder
4.8. 字符串处理
参考目录 \velocitybasictest\template\StringExample.vm
字符串的串联,双引号中的引用会替换成相应的值
#set( $size = "Big" )
#set( $name = "Ben" )
#set($clock = "${size}Tall$name" )
The clock is $clock.
单引号,单引号中的引用原样输出
#set( $template = '$directoryRoot/$templateName’ )
4.9. #if / #elseif / #else
参考 \velocitybasictest\template\ IfExample.vm
4.9.1. 简单的if语句使用
#if( $foo )
Velocity!
#end
4.9.2. 嵌套if语句
## embed if
#if($foo)
variable foo =true
#if($foo2)
variable foo2 =true
#else
variable foo2 =false
#end

#if($foo3)
variable foo3 =true
#else
variable foo3 =false
#end
#end
4.10. 循环:foreach
参考 \velocitybasictest\template\ LoopExample.vm
$velocityCount是Velocity表示循环计数的内部变量,缺省开始值为1。
例子如下:
#foreach ( $product in $allProducts )
The $velocityCount is--- $product.name
#end

可以在#foreach指令中使用范围操作符[n..m],其中n和m必须是整型,例子如下:
#foreach( $bar in [2..-2] )
$bar
#end
4.11. 注释
以##作为标识来定以一个注释,好像java中的//符号
Hello $foo World! ## This text is not visible
多行注释(包括在#*和*#之间)好像java中的/* */注释符号
4.12. 变量为对象
Velocity模板中的变量为对象类型,可以采用$VTL标识符. VTL标识符方式引用对象的属性。
User address is :$customer.Address
4.13. Velocity引用变量的方法
Set user name :$user.setName(“www”)
User name now is :$user.getName()
5. Velocity模版中使用中文变量值
参考目录
velocitytest\velocitybasictest\src\gbk
参考
http://www.j2medev.com/Article/Clas...00607/2765.html
注意:
不允许在模版中使用中文变量
6. Velocity和一般文件集成使用
使用#include来包含文件到模板中
例如在指定模版中包含文件:
#include("FileInTemplateExample.txt")
7. Velocity模板文件嵌套使用
例如在指定模版中包含模版文件:
below is TemplateInTemplateExample2.vm" content
#parse("TemplateInTemplateExample2.vm")
8. Velocity engine的单例和多例
参考目录 velocitytest\velocitybasictest\src\velocityengineuse
8.1. 单例模式使用Velocity引擎
直接使用Velocity类进行初始化,然后使用Velocity类获得模版
8.2. 多例模式使用Velocity引擎
通过VelocityEngine类创建Velocity引擎和创建模板

8.2.1. 在模版引擎的初始化参数文件中设置相关参数
假设velocity.properties为初始化参数文件,在velocity.properties中分别指定二者的值:
input.encoding = GBK
output.encoding = GBK
8.2.2. 模版本身的字符设置
Template template = engine.getTemplate("news.vm","GBK");
8.2.3. Velocity类上的设置
org.apache.velocity.app.Velocity 类的以下方法:
public static Template getTemplate(String name, String encoding)
public static boolean mergeTemplate( String templateName, String encoding, Context context, Writer writer )
一般是上面的第一和第二组合使用,当然上面的第一和第三组合使用也可以
9. 宏
宏使用的方法:先定义宏,然后再使用宏
参考目录: velocitybasictest\src\macro\MacroUse
9.1. 定义宏
## define a macro.the name of the macro is myMacro
#macro(myMacro)
this is the first line of my Macro
this is the second line of my Macro
#end
9.2. 使用宏
## use my defining macro:myMacro
myMacro content is :
#myMacro()
9.3. 使用全局宏
9.3.1. 定义全局宏模版文件
9.3.2. 定义Velocity的引擎属性文件
在该属性文件中,指定全局宏模版文件的名字
9.3.3. 在实际的模版文件中引用全局宏
10. 在Velocity模版中访问java类的static field
参考org.apache.velocity.app.FieldMethodizer
参考目录 \velocitybasictest\src\staticfield
类staticfield.WdzFieldMethodizer继承了FieldMethodizer,可以让Velocity模板访问java对象的非私有属性的值,但是不能在模板中直接修改这些没有public读写方法的非私有属性的值。
目前是可以访问static field,如果需要直接访问private或者其他属性的字段,可以考虑继承FieldMethodizer,然后在对象放入到上下文之前先用FieldMethodizer的后代包装再放入。
不过FieldMethodizer没有定义父接口,需要自己定义FieldMethodizer的后代才可以达到上述目的,不是很爽。

11. 使用Velocity 处理Word文档
要求Office2003以上。
12.1. 定义word格式的Velocity模版
新建一个word文件,在文件里面定义Velocity需要替换的变量,采用类似 $VarName格式或者${VarName}格式定义Velocity变量。
保存word文件为XML格式,一般来说,需要把保存的XML文件确认其encoding="GBK"
注意:定义的Velocity变量名字不能是中文名,采用英文名字作为Velocity变量名字。
参考
velocityofficeuse\template\Word的velocity模版1.doc
velocityofficeuse\template\ Word的velocity模版1.xml
12.2. 使用Velocity产生相应内容的word文件
使用Velocity引擎为word格式的Velocity模板产生word内容文件。
参考
velocityofficeuse\Word的velocity模版生成文件1.xml
velocityofficeuse\src\wordusevelocity\WordVelocityUse1.java
12. 使用Velocity 处理Excel文档
要求Office2003以上。
12.1. 定义Excel格式的Velocity模版
新建一个Excel文件,在文件里面定义Velocity需要替换的变量,采用类似 $VarName格式或者${VarName}格式定义Velocity变量。
保存Excel文件为XML格式,一般来说,需要把保存的XML文件确认其encoding="GBK"
注意:定义的Velocity变量名字不能是中文名,采用英文名字作为Velocity变量名字。
参考
velocityofficeuse\template\Excel的velocity模版1.doc
velocityofficeuse\template\ Excel的velocity模版1.xml
12.2. 使用Velocity产生相应内容的Excel文件
使用Velocity引擎为word格式的Velocity模板产生Excel内容文件。
参考
velocityofficeuse\Excel的velocity模版生成文件1.xml
velocityofficeuse\src\wordusevelocity\ExcelVelocityUse1.java
13. Velocity的上下文链(Context Chaining)
采用责任链模式建立应用的Velocity上下文链.
参考 velocitytest\velocitybasictest\src\contextchaining
参考类
org.apache.velocity.VelocityContext
org.apache.velocity.context.AbstractContext
AbstractContext 类的以下方法:
public Object get(String key)
public abstract Object internalGet( String key );
VelocityContext先从自己内部中寻找当前key的值,如果找不到,到它嵌套的VelocityContext里面去寻找当前key的值。
具体责任链式的Velocity上下文创建方式参考VelocityContext类
14. 使用velocity定制个性化页面
使用velocity来使用户更好的浏览他们感兴趣的内容,个用户登陆时都拥有自己的个性化页面。

 

分享到:
评论

相关推荐

    Struts2学习笔记与心得

    在探讨Struts2的学习心得之前,我们先来分析一下Struts2与Struts1之间的区别。 ##### 1.1 架构设计 - **Struts1**:采用MVC(Model-View-Controller)架构模式,其中控制器是由`ActionServlet`来实现的,该控制器...

    dbe财务大数据课程心得.docx

    【dbe财务大数据课程心得】 大数据,作为现代信息技术的焦点,已经在各行各业中发挥着越来越重要的作用,特别是在财务领域。秦永彬博士的讲座深入浅出地揭示了大数据的概念及其对现代社会的影响。大数据,顾名思义...

    大数据学习心得.docx

    它包括四个关键特征,即速度(Velocity)、多样性(Variety)、价值密度(Value)和体量(Volume),统称为4V模型。 大数据的核心在于通过收集、整合和分析海量数据,揭示其中的隐藏模式、关联和趋势,以支持决策...

    大数据学习心得(1).docx

    大数据的四个关键属性,通常被称为4V模型,即Volume(大量)、Velocity(高速)、Variety(多样)和Value(价值)。 大数据的“大”并非绝对意义上的大,而是强调数据的规模和复杂性,这种规模往往超过了传统数据...

    大数据学习心得(2).docx

    大数据的特点通常概括为4V:Volume(大量)、Velocity(高速)、Variety(多样)和Value(价值)。这些特性使得大数据超越了传统数据处理的能力,需要新的技术和方法来应对。 首先,大数据的“大”并非单纯指数量...

    大数据讲座学习心得(1).docx

    大数据的四个特征——速度(Velocity)、多样性(Variety)、价值密度(Value)和体量(Volume),被统称为“4V”。它们代表了大数据技术处理的即时性、丰富性、深度挖掘的难度和数据规模的巨大性。以往,传统的数据...

    大数据讲座学习心得.docx

    大数据的四个关键特征,即4V模型——Velocity(速度)、Variety(多样性)、Value(价值密度)和Volume(体积),揭示了大数据的复杂性和处理需求。在大数据时代,数据不再仅仅是数字,而是包含了各种类型的信息,如...

    dbe财务大数据课程心得.pdf

    本文主要围绕“dbe财务大数据课程”的学习心得展开,探讨了大数据在当前信息化社会中的重要性及其对企业决策、商业模式和生活方式产生的深远影响。作者通过引用秦永彬博士的讲座内容,深入浅出地解释了大数据的概念...

    大数据培训心得.docx

    在参加完大数据培训后,我对这个领域有了更深入的理解和一些个人的心得体会。 首先,大数据的核心在于其定义:巨量资料。这不仅仅是数据量的增加,而是数据的爆炸式增长,使得传统的数据处理方式无法应对。这些数据...

    总结Java部分的框架和开源项目

    【Java 框架与开源项目概述】 在Java开发领域,框架和开源项目扮演着至关重要的角色,它们为开发者提供了可复用的代码库和...在学习和使用这些框架时,配合相应的IDE插件和社区资源,可以极大地提升开发体验和效果。

    《大数据时代》读书心得.docx

    很抱歉,由于您提供的文件内容是一串无法解读的符号和数字,我无法直接从中提取《大数据时代》的读书心得或相关知识点。不过,我可以根据书名《大数据时代》来分享一些关于大数据的基础知识和重要概念。 大数据是...

    struts2学习总结

    这样设计的好处在于提高了代码的可重用性和灵活性,同时也降低了框架的学习曲线。 #### 架构模式的不同 1. **架构模式:** - **Struts1**采用的是MVC(Model-View-Controller)模式的一种变种,其中Action类充当...

    jfinal-3.0-all 附学习资源

    3. **视图渲染**:JFinal默认支持FreeMarker和Velocity两种模板引擎,同时也可扩展其他模板引擎,如Thymeleaf。这为开发者提供了丰富的选择,可以根据项目需求灵活配置。 4. **插件生态**:JFinal拥有丰富的插件...

    大数据心得[文].pdf

    2. Velocity(高速):数据生成和更新的速度非常快,需要实时或近实时处理。 3. Variety(多样):数据类型繁多,包括结构化、半结构化和非结构化数据。 4. Value(价值):数据中蕴含着巨大的潜在价值,需要通过...

    [详细完整版]大数据心得.doc

    ### 大数据心得知识点概述 #### 一、大数据时代的背景与意义 - **时代背景**:随着信息技术的迅速发展,互联网、移动通信等技术的进步,数据量呈现出爆炸性增长的趋势。这种现象不仅体现在日常生活中的社交媒体、...

    《大数据与人工智能》期末课程总结

    课程学习的心得体会表明,这门课程不仅加深了学生对大数据和人工智能的理解,还提高了他们的实际操作能力,如爬取网络资源和科学分析问题。学生认识到,尽管人工智能和大数据带来了巨大的变革,但它们并不能完全替代...

    大数据视野下《数据结构》课程教学方法的探索.zip

    2. 建立反馈机制:鼓励学生分享学习心得,教师根据学生反馈调整教学策略,提升教学质量。 综上所述,在大数据视野下,《数据结构》课程的教学应当与时俱进,结合大数据的实际需求,创新教学方法,更新教学内容,...

    Java+structs快速学习指南

    - 示例:学习如何使用Velocity模板引擎替代传统的JSP技术,以及如何优化整个Web应用的性能。 《Struts in Action》不仅适合初学者入门,也适合有一定经验的开发者进一步深化对Struts框架的理解。通过阅读此书,...

    IBM 大数据解决方案

    学习过程中,你需要理解大数据的四个V——Volume(量)、Velocity(速度)、Variety(多样性)和Veracity(真实性),并掌握如何利用IBM的工具和技术应对这些挑战。同时,熟悉Hadoop生态系统、SQL on Hadoop以及...

Global site tag (gtag.js) - Google Analytics