`

Velocity应用(一)

阅读更多


第一部分:简介
一、什么是Velocity?

    Velocity 是一个基于java的模板引擎(template engine). 它可以让视图的设计者在web页面中引用java代码中定义的数据对象和命令。Velocity彻底的将避免了在视图设计中出现的java代码, 从而保证了web site的长期可维护性.

    Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。 

       Velocity 的强大之处在于它严格的区分程序开发功能的职责划分。

       任何 Velocity 的应用都包括两个方面:
    第一是: 模板制作,如 hellosite.vm;

    第二是: Java 程序部分 Velocity

    真正的工作原理: Velocity 解决了如何在 Servlet 和 网页之间传递数据的问题,当然这种传输数据的机制是在 MVC 模式上进行的,也就是View 和 Modle , Controller 之间相互独立工作,一方的修改不影响其他方变动,他们之间是通过环境变量(Context)来实现的,当然双方网页制作一方和后台程序一方要相互约定好对所传递变量的命名约定。这样只要双方约定好了变量名字,那么双方就可以独立工作了。 无论页面如何变化,只要变量名不变,那么后台程序就无需改动,前台网页也可以任意由网页制作人员修改。这就是 Velocity 的工作原理。

二、Velocity Template Language (VTL): 介绍

    VTL使用引用(references )这种方式将dynamic content(动态内容,一般指java代码生成的数据对象)加入到你的web site,Velocity中的变量(variable)只是refernce中的一种. Variables是用来描述从引入到视图模板中的java数据对象。当然,java代码也可以从模板的VTL中获取数据.

    理解VTL基础的规则: 以$开头的表示“引用”意思是取得一些东东.而”指示”(Directives)则以#开头来表示,有点“做些什么动作”的意思.

1、注释:单行--##,多行--将它们放入#* 和*#间

2、References(引用)
       VTL中有三种references:变量引用(variables),属性引用(properties)(也是以$开头的合法VTL指示符,随后是”变量名字.变量属性”.)和命令引用(methods). 所有的引用在模板中都表现为一个字符串.

3、正规格式:规则的格式像下面,如你看到的变量名需要放到{}中

4、输出空白Velocity遇到一个不能处理的引用时,一般他会直接输出这个引用$email的写法,页面上会看到的是$email,我们可以在$后面加上一个!号,那么就会输出空白.

5、语义问题

       美元 $2.50输出正确
       转义字符”\”

详细参见:http://www.easyjf.com/easyjweb/velocity.htm
Velocity用户手册---中文版(学习修改版)

 
第二部分:基本模板引擎操作

1.使用 Velocity 模板语言创建模板

    Velocity 模板是文本文件(HTML、XML 等等),其中包括:

    (1)照原样合并的静态部分

    (2)将被要合并的数据替代的占位符

    (3)脚本语言中的指示符和指令

2.占位符与引用

    VTL 中的引用是一个命名元素,如 $customerName 。引用可以在 Velocity 模板中作为占位符。在模板合并过程中,这些占位符将被替换成相应的文本值,从而形成最终的输出。示例:

#set( $this = "Velocity")#set( $numericBase = 999 )#set( $booleanCondition = true )This page is generated using $this.There are ($numericBase + 1) pages in total. This page is generated using Velocity.There are (999 + 1) pages in total. 
#set( $newSum = $numericBase + 1)There are $newSum pages in total. 
There are 1000 pages in total. 
#set( $treeList = ["pine", "oak", "maple", "redwood"])您可以使用 $treeList.get(1) 列表中的第二个元素

3.选择性呈现和循环可以使用指示符 #if... #then... #else.... 有条件地呈现模板中特定的部分 

#if $customer.GoldMember  Thank you Mr. $customer.LastName, for flying with us.  Your loyal patronage is greatly appreciated.   This flight earns you an additional 5000 miles.#else Thank you for flying with us.  Please consider joining our frequent flyer program.#endif 
#foreach $name in $treeList<tr><td>     $name is a big tree!</td></tr>#end 4.Velocity 中的宏
Velocity 的一个主要特性是能够很容易地定义宏,称为 Velocimacros。宏使您能够很容易地封装和重用模板脚本。默认情况下,宏保存在 VM_global_library.vm 文件中。

第三部分:在Web中应用Velocity技术

    要把模板功能扩展到 Web 应用程序中,应该使用 Velocity 工具集中的VelocityViewServlet 。Velocity 工具是 Velocity 的一个子项目。该 Servlet 为 Velocity 用作一种视图层技术提供了更复杂的支持,既可以与 JSP 技术联合使用也可以代替后者。使用 VelocityViewServlet 可以减少许多冗余代码,因为它提供了:

    (1) 对请求对象和属性、会话对象和属性以及 servlet 上下文和属性的直接模板访问

    (2)正式的、可外部配置的“工具箱”,可以增加在模板中使用的自定义工具(这里讲的工具只是具有公共方法的已编译的类)

    (3)一个通用的、经过测试的、随时可用的工具库

    集成的步骤如下:

     1、类库。首先要保证 velocity-tools-view.jar 文件在应用程序的 lib 目录中。当然,这个 velocity JAR 文件和commons-beanutils.jar等一些commons包也应该在那儿。

        2、配置web.xml文件。在部署描述符 web.xml 文件中,包括 VelocityViewServlet 。初始化参数是一个工具箱描述 XML 文件。该 servlet 映射为处理所有扩展名为 .vm 的文件,如清单 20 所示: Tomcat 部署描述符(web.xml)

<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-app     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"    "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>  <servlet>    <servlet-name>velocityView</servlet-name>    <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>    <init-param>      <param-name>org.apache.velocity.toolbox</param-name>      <param-value>/WEB-INF/toolbox.xml</param-value>    </init-param>  </servlet>  <servlet-mapping>    <servlet-name>velocityView</servlet-name>    <url-pattern>*.vm</url-pattern>  </servlet-mapping></web-app>
       3、配置工具箱文件。该例子的工具箱描述符(toolbox.xml)文件中,包含了两个来自 Velocity 工具库的通用工具可以在模板 DateTool 和 MathTool 中访问。这两个工具使我们能够格式化日期和时间信息,并在模板中执行浮点运算,如清单 21 所示: 包括 DateTool 和 MathTool 的工具箱描述符 <?xml version="1.0"?><toolbox>  <tool>   <key>date</key>   <scope>application</scope>   <class>org.apache.velocity.tools.generic.DateTool</class> </tool><tool>  <key>math</key>  <scope>application</scope>  <class>org.apache.velocity.tools.generic.MathTool</class></tool>...

相关知识:在 VelocityViewServlet 中有一组常用的标准工具,如表 1 所示:

表 1. VelocityViewServlet 中的标准工具

工具名
描述 
LinkTool  处理 URI。该工具经常会用到,如果在模板中创建可点击的链接就要用到该工具,可以生成依赖于上下文的 URI 部分。
CookieTool  使模板能够创建或访问浏览器缓冲的 cookie。
ParameterParser  简化后面收到的请求参数的解析。

还有两个高度专门化的、不那么常用的工具,如表 2 所示:

表 2. 专门的 VelocityViewServlet 工具

工具名
描述 
ViewRenderTool  使模板能够解析包含 VTL 的字符串。
AbstractSearchTool  提供了一种骨架工具(必须使用自定义的 Java 代码来扩展),以便实现在线搜索和搜索结果分页。
注:打开模板源代码看一看所用的 Velocity 引擎、 LinkTool 和 CookieTool 。
  



待续。。。



随机文章:
Velocity应用(二) 2008-11-05
JSP页面缓存技术--浏览器缓存 2008-08-12
Junit应用 2008-06-05
Spring精髓 2008-06-03
UI解释 2008-05-07
分享到:
评论
1 楼 chenmingde 2012-02-17  

相关推荐

    Velocity模板应用案例

    【Velocity模板应用...总结来说,Velocity是一个强大的模板引擎,它简化了Web开发中的动态内容生成,使开发者能够更高效地组织和管理应用的视图层。通过熟练掌握Velocity的使用,可以提升项目的可维护性和开发效率。

    Velocity 应用示例

    在实际应用中,一个典型的 Velocity 示例可能是: 1. **创建模板文件**:例如 `user.vm`,其中包含: ```html 欢迎,${user.name}! 您的邮箱是:${user.email} ``` 2. **Java 代码处理**:在后端代码中,创建一个 ...

    Velocity Web应用开发

    #### 一、Velocity概述及应用场景 Velocity 是一款基于 Java 的模板引擎,主要用于生成动态内容,特别是在 Web 开发领域。它能够帮助开发者快速地构建出可读性强、易于维护的 Web 应用。Velocity 的主要特点包括: ...

    velocity-1.5.jar,velocity-1.6.2-dep.jar,velocity-tools-1.3.jar

    Velocity是Apache软件基金会的一个开源项目,它是一款强大的模板引擎,主要用于生成动态Web内容。 Velocity的主要优点在于其简单易用和高度可扩展性,使得开发者能够将业务逻辑与表现层分离,提高代码的可读性和维护...

    velocity web开发

    在Web开发领域,Velocity是一个非常重要的模板引擎,它被广泛应用于生成动态网页内容。Velocity由Apache软件基金会开发并维护,是Apache Jakarta项目的一部分。其设计目标是提供一个简单易用但功能强大的工具,用于...

    一套基于SpringMVC+velocity框架的web应用 ,基于注解

    SpringMVC是Spring框架的一部分,它是一个用于构建Web应用程序的轻量级、模型-视图-控制器(MVC)框架。基于注解的SpringMVC允许开发者在控制器类的方法上直接使用注解,如@RequestMapping,@RequestParam等,极大地...

    Velocity本地化应用举例

    Velocity是Apache软件基金会的一个开源项目,它是一款强大的模板引擎,常用于Java应用程序中的视图层。Velocity通过将逻辑与表示分离,使得开发者可以专注于业务逻辑,而设计师则可以专心于页面设计。本篇文章将深入...

    Velocity模板应用

    ** Velocity模板应用详解 ** Velocity是一款强大的Java模板引擎,它为开发者提供了一种与呈现逻辑分离的方式,使得HTML、XML或者其他格式的文档可以更清晰地与业务逻辑代码分开。Velocity被广泛应用于Web应用开发,...

    Velocity-API.chm--采用官方文档制作-超值的Velocity API参考文档。

    当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java...

    velocity的jar包

    Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态网站内容。Velocity被设计成一个轻量级的、快速的、非侵入式的模板语言,使得开发者能够将HTML页面的展示逻辑与业务逻辑分离,...

    velocity 入门文档及应用源码,很适合做自动代码生成

    Apache Ant是一个Java项目管理工具,可以用于编译、打包和部署应用程序。将Velocity与Ant结合,可以自定义模板生成符合特定需求的源代码,比如数据库访问层、实体类或者控制器代码。通过这种方式,开发者可以提高...

    velocity入门使用教程

    本部分将展示如何在Servlet环境中集成Velocity,并通过实例介绍如何将Velocity应用于Web开发。 1. 搭建Java Web工程,这里直接使用Maven的maven-archetype-webapp生成项目骨架。 2. 添加Tomcat运行环境,通过Maven...

    velocity插件

    Velocity 是一款基于 Java 的模板引擎,它被广泛应用于 Web 开发中,特别是作为 Apache Struts 和 Spring MVC 框架的一部分。Velocity 插件则是为了在开发环境中提供对 Velocity 模板语言的支持,使得开发者可以在 ...

    velocity中文

    Velocity通过简单的语法使得模板语言与Java代码隔离,提供了一种高效、灵活且易于维护的Web应用开发方式。 ### 1. Velocity简介 Velocity是由Apache软件基金会开发的一个开源项目,它最初设计用于生成静态网站内容...

    velocity所需的jar包

    Velocity是一个强大的模板引擎,常用于Java应用程序中的动态内容生成,比如HTML、XML或者电子邮件。它以其简洁、可读性强的语法以及与Java对象的紧密集成而受到开发者的欢迎。在开发Velocity项目时,确保拥有正确的...

    velocity-1.7.jar

    **Velocity-1.7.jar** 是一个用于Java应用程序的模板引擎,它允许开发者将静态页面内容与动态数据相结合,生成HTML、XML或者其他格式的输出。Velocity由Apache软件基金会开发,是Apache Turbine项目的一部分,后来...

    velocity-1.5.jar.zip( 359 k)

    当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码...

    《Velocity Web应用开发指南中文版》.doc

    **Velocity** 是一款高性能的模板引擎,常用于Web应用开发中生成HTML页面,同时也支持其他类型的文本输出,如XML、PDF等。它的主要优势包括: - **简洁性**:Velocity允许设计师无需深入理解编程语言就能创建动态...

Global site tag (gtag.js) - Google Analytics