`
zhang_xzhi_xjtu
  • 浏览: 535103 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Velocity开发手册学习笔记

阅读更多
原文地址
http://velocity.apache.org/engine/releases/velocity-1.6.4/developer-guide.html

How Velocity Works

1.Initialize Velocity. This applies to both usage patterns for Velocity, the Singleton as well as the 'separate runtime instance', and you only do this once.
2.Create a Context object.
3.Add your data objects to the Context.
4.Choose a template.
5.'Merge' the template and your data to produce the ouput.

To Singleton Or Not To Singleton
Singleton Model org.apache.velocity.app.Velocity
Separate Instance org.apache.velocity.app.VelocityEngine
不要改动org.apache.velocity.runtime
可以改动org.apache.velocity.app

The Context
数据容器。从java到模板的数据传输。
也算是一个API。
public Object put(String key, Object value);
public Object get(String key);
注意,like a Hashtable, the value must be derived from java.lang.Object, and must not be null.

Support for Iterative Objects for #foreach()
Object [],velocity自动把它包装成一个Iterator,并且,在1.6之后,可以直接在它之上调用List的方法。
java.util.Collection
java.util.Map
java.util.Iterator USE WITH CAUTION: This is currently supported only provisionally - the issue of concern is the 'non-resettablity' of the Iterator. If a 'naked' Iterator is placed into the context, and used in more than one #foreach(), subsequent #foreach() blocks after the first will fail, as the Iterator doesn't reset.
java.util.Enumeration USE WITH CAUTION: Like java.util.Iterator
Any public class with a public Iterator iterator() method that never returns null.

尽量不要把Iterator直接放入context,不可避免时要小心(大数据)。

Support for "Static Classes"

Context Chaining
Note:The changes to the context via #set() statements in a template will affect only the outermost context. 如果要在rendering后使用,注意不要扔掉outer context.

Objects Created in the Template
•The VTL RangeOperator [ 1..10 ] and ObjectArray ["a","b"] are java.util.ArrayList objects when placed in the context or passed to methods. Therefore, your methods that are designed to accept arrays created in the template should be written with this in mind.
•VTL Map references are unsurprisingly stored as java.util.Map.
•Decimal numbers will be Doubles or BigDecimals in the context, integer numbers will be Integer, Long, or BigIntegers, and strings will be, of course, Strings.
•Velocity will properly 'narrow' args to method calls, so calling setFoo( int i ) with an int placed into the context via #set() will work fine.

重要的问题
满足以下条件的情况下有可能内存泄露。
•You are iterating over the same template using the same VelocityContext object.
•Template caching is off.
•You request the Template from getTemplate() on each iteration.

其原因是VelocityContext (or any Context derived from AbstractContext) is node specific introspection caching.

解决办法
•Create a new VelocityContext for each excursion down through the template render process.
•Turn on template caching.
•Reuse the Template object for the duration of the loop iterations.


Using Velocity
可以调用Velocity的方法来实现Velocity的工作。
异常也设计的一看异常信息就知道错误在什么地方。


Application Attributes

Configuring Event Handlers

IncludeEventHandler
InvalidReferenceEventHandler
MethodExceptionEventHandler
NullSetEventHandler
ReferenceInsertionEventHandler

注册Handler,全局Handler,和一个Context建立关联。


Velocity Configuration Keys and Values
Configuring Logging
Configuring Resource Loaders
Template Encoding for Internationalization


Velocity and XML
转换xml文档。
分享到:
评论
3 楼 zhang_xzhi_xjtu 2010-07-25  
qljcly 写道
被骗了,以为你有自己整理过的文档呢!

不好意思,也许题目起的不好,这是一个精简版的备忘录。
2 楼 lqingle 2010-07-25  
这个模块技术,让我纠结的是,有时间变量变成数据的时候,会有许多空格,不知道怎么办
1 楼 qljcly 2010-07-23  
被骗了,以为你有自己整理过的文档呢!

相关推荐

    velocity学习笔记

    ### Velocity学习笔记精要 **一、Velocity简介与特点** Velocity是一种基于Java的模板引擎,用于将静态数据和动态内容结合在一起,生成最终的HTML、XML或其他格式的文档。其最大的特点是性能高、易于理解和使用,...

    Velocity用户手册 中文版

    阅读Velocity用户手册中文版,可以从基础语法开始学习,逐步掌握变量引用、条件控制、循环等基本操作。同时,了解如何将Velocity集成到你的项目中,以及如何调试和优化模板,是成为Velocity熟练使用者的关键步骤。 ...

    Velocity用户手册(中文版)

    1. **简洁性**:Velocity语法简单,易于理解和学习,有助于提高开发效率。 2. **可维护性**:通过分离模板和业务逻辑,使代码更易于维护和更新。 3. **性能优化**:Velocity在渲染时只处理模板中的变化部分,提高...

    Velocity用户手册_中文.docVelocity用户手册_中文.doc

    在Web开发中,Velocity 提供了Velocity Template Language(VTL),使得页面设计人员可以专注于页面布局和样式,而Java程序员则处理业务逻辑。例如,在一个在线MUD商店的场景中,Velocity 可以根据用户的购买历史...

    Velocity用户手册.doc

    在实际应用中,Velocity 不仅限于 Web 开发,还可以用于生成 SQL、PostScript、XML 等文档,或者作为独立工具生成源代码和报告。在 Turbine 框架中,Velocity 作为模板服务组件,帮助实现 MVC 架构,促进更清晰的...

    Velocity用户手册(中文)

    **Velocity简介** Velocity是一款强大的Java模板引擎,由Apache软件基金会开发并维护,是Apache Jakarta项目的一部分。...如果你在Web开发中追求更好的用户体验和更高的开发效率,那么学习和掌握Velocity将是值得的。

    velocity用户手册

    【Velocity用户手册】详解 Velocity是一款基于Java的模板引擎,它的主要作用是将Java代码与HTML等静态页面内容分离,从而实现MVC模式的Web应用开发。通过Velocity,Web设计师可以专注于网页设计,而程序员则专注于...

    velocity中文手册

    velocity中文手册 Velocity 是一个基于java 的模板引擎(template engine)。它允许任何人仅仅简单的使 用模板语言(template language)来引用由java 代码定义的对象。

    Velocity_中文手册

    例如,Velocity能够为Turbine Web开发框架提供模板服务,从而使得Web应用能够按照真正的MVC模式进行开发。 在Mud商店的例子中,我们看到了Velocity是如何具体应用的。页面设计人员可以利用Velocity向客户展示个性化...

    Velocity用户手册---中文版.doc

    Velocity允许通过模板语言(Template Language)来引用Java代码定义的对象,极大地简化了Web应用的开发流程。 【MVC架构】 Velocity在Web开发中的应用遵循Model-View-Controller(MVC)架构。Model代表业务数据,...

    velocity 用户手册 参考文档 详细讲解

    Velocity 是一个基于 Java 的模板引擎,它主要用于将静态页面内容与动态数据相结合,实现模板语言与 Java 代码的分离。...通过学习和掌握 Velocity,开发者能够更高效地构建出响应用户需求、易于维护的 Web 应用程序。

    velocity web开发

    【标题】:“Velocity Web开发” 在Web开发领域,Velocity是一个非常重要的模板引擎,它被广泛应用于生成动态网页内容。Velocity由Apache软件基金会开发并维护,是Apache Jakarta项目的一部分。其设计目标是提供一...

    Velocity用户手册---中文版

    学习和理解Velocity用户手册中文版,不仅能够提升你的Web开发技能,还能让你更好地理解MVC架构中的视图层实现,从而在项目开发中更加游刃有余。同时,对于熟悉源码和工具的开发者,这也将是一份宝贵的参考资料。

    Velocity用户手册

    通过学习和掌握Velocity用户手册,你可以提升你的Web开发技能,创造出更加用户友好、高度定制的Web体验。无论你是页面设计师还是Java开发者,Velocity都能帮助你更好地实现Web应用的MVC设计,并提高开发效率。

    velocity学习笔记与struts2整合

    Velocity是Apache软件基金会的一个开源项目,它是一款快速、强大且易用的模板引擎,用于生成动态Web内容。...在实际开发中,还需要考虑错误处理、国际化、缓存策略等高级话题,以提升整体性能和用户体验。

    Velocity用户手册中文版

    - Velocity 还提供了一个模板服务,能够在 Turbine web 应用框架中实现真正的 MVC 开发。 3. Velocity 模板语言(VTL): - VTL 是 Velocity 提供的一种简单而强大的脚本语言,用于定义模板。 - 它允许页面设计...

Global site tag (gtag.js) - Google Analytics