`
kim
  • 浏览: 154089 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

转载 FreeMarker vs. Velocity

    博客分类:
  • java
阅读更多

1、概述<o:p></o:p>

l         Velocity是一个简单而且更加轻量级的工具,但是它没有达到FreeMarker能够做的许多任务,而且它的模板语言不是很强大<o:p></o:p>

l         我们认为对于大多数应用程序,FreeMarkerVelocity工作更简单,因为:<o:p></o:p>

Ø         使用Velocity,你需要寻找特定工具或各种工作环境来一次次的解决典型的模板创作任务,结果会浪费更多时间<o:p></o:p>

Ø         工作环境经常意味着在Velocity模板中直接使用Java对象的方法,这违反了简单、无编程HTML设计的观念<o:p></o:p>

Ø         或者将表示任务移到控制器代码中,这违反了MVC模式<o:p></o:p>

l         使用FreeMarker,可以以out-of-the-box(如何翻译确切?)的方式实现Velocity所能做的<o:p></o:p>

 <o:p></o:p>

2、特性比较清单<o:p></o:p>

下面是一个使用FreeMarker能够实现,而Velocity不能实现的不太全面的特性清单:<o:p></o:p>

1)数字和日期支持<o:p></o:p>

l         可以对任何数字类型进行算术运算和比较,包括精度类型<o:p></o:p>

l         可以比较和显示(格式化)日期/时间值<o:p></o:p>

2)国际化<o:p></o:p>

l         根据各种内建和定制的数字格式,格式化本地敏感的数字<o:p></o:p>

l         根据各种内建和定制的日期格式,格式化本地敏感和时区敏感的日期<o:p></o:p>

l         标识(变量名)可以包含非英语字符,如重音字符、阿拉伯字符、中文字符等<o:p></o:p>

3)循环处理<o:p></o:p>

l         可以跳出循环<o:p></o:p>

l         可以在循环外访问循环体内的控制变量<o:p></o:p>

l         可以测试是否达到最后一次循环<o:p></o:p>

4)模板级别的数组处理<o:p></o:p>

l         可以使用类似[i]语法的索引方式访问数组元素<o:p></o:p>

l         可以查询数组长度<o:p></o:p>

5)宏<o:p></o:p>

l         宏可以有局部变量<o:p></o:p>

l         可以递归调用宏,同样可以在模板的后面定义要调用的宏<o:p></o:p>

l         调用宏时,可以按位置或名字的方式传递参数<o:p></o:p>

l         宏参数可以有缺省值,使得在调用时忽略参数也有效<o:p></o:p>

l         调用的宏可以有嵌套的体内容(<@myMacro>body</@myMacro>),能够在宏被调用时进行处理<o:p></o:p>

l         宏是纯变量的,可以基于表达式来执行宏,或者作为参数传递给另一个宏<o:p></o:p>

6)命名空间<o:p></o:p>

l         可以对变量使用多命名空间,这对创建宏库很重要,因为这可以避免应用程序中指定的变量和宏库中变量的名字冲突<o:p></o:p>

7)使用内建的函数/操作符维护Java无关的stringlistmap<o:p></o:p>

l         可以将字符串转换成大/小写、首字符大/小写,对HTMLXMLRTF进行转义处理,substringsplit、查询字符串长度、find/replace子串等等<o:p></o:p>

l         通过索引访问list元素,获得子list,合并list,查询list长度,对list排序<o:p></o:p>

l         通过key变量访问map元素,检查map是否为空,获得key或值的list<o:p></o:p>

8)揭示模板中的错误<o:p></o:p>

l         当访问一个未定义的变量,FreeMarker不会沉默;你可以配置FreeMarker来停止render模板显示错误信息,或者跳过错误部分;无论哪种,FreeMarker会记录问题(日志)<o:p></o:p>

l         在写错指令名时,FreeMarker会抛出异常<o:p></o:p>

9)高级render控制<o:p></o:p>

l         可以使用一组标记来封装模板的一块区域,以便在块区中所有要修改的地方应用HTMLXML转义(或其它使用FreeMarker表达式表示的转换)<o:p></o:p>

l         FreeMarker有转换器,它们是模板的一块区域,在render时,通过转换过滤;内建的转换器包括空白字符压缩、HTMLXML转义;你可以实现自己的转换器;当然转换器可以嵌套<o:p></o:p>

l         可以使用flush指令显式的flush输出<o:p></o:p>

l         可以使用stop指令停止render<o:p></o:p>

10)文字<o:p></o:p>

l         除了通常的字符串、数字和布尔值文字,也可以在模板中定义listmap文字<o:p></o:p>

l         支持所有的Java转义文字:\b\t\n\f\r\”\’\\,也支持\xXXXX使用UNICODE指定字符<o:p></o:p>

11)高级空白字符移除<o:p></o:p>

l         FreeMarker坚持移除各行只包含不输出FreeMarker标记的空白字符<o:p></o:p>

l         对于明显要整修掉不需要的空白字符的指令来说,空白字符是个大问题
分享到:
评论

相关推荐

    freemarker2.3.23.jar(廉价资源,只求下载量)

    2. **创建配置对象**: 创建一个`freemarker.template.Configuration`实例,设置Freemarker的配置参数,如模板的加载方式(文件系统、类路径、URL等)。 3. **加载模板**: 使用配置对象加载模板文件,例如,`...

    freemarker.jar

    camel-freemarker-1.6.4.jar, camel-freemarker-2.8.1.jar, ...freemarker-1.4.1.jar, freemarker-2-3-18.jar, freemarker-2.1.5.jar, freemarker-2.2.5.jar, freemarker-2.2.8.jar,...freemarker.jar, freemarker2_03.jar

    jsp、freemarker、velocity简介和对比

    ### jsp、freemarker、velocity简介和对比 在Java Web开发领域,模板引擎是连接后端业务逻辑与前端展示层的重要桥梁。本文将重点介绍三种常用的Java Web模板引擎:JSP(Java Server Pages)、Freemarker以及...

    velocity和freemarker的比较

    标题“velocity和freemarker的比较”涉及到的是两个在Java Web开发中常用的模板引擎——Velocity和FreeMarker。它们都是用于将静态模板与动态数据结合,生成HTML或其他类型的文本输出,常用于MVC(模型-视图-控制器...

    Freemarker2.3.19.chm

    Freemarker2.3.19.chm Freemarker官方最新版的帮助文档,英文版。 自己手动生成,若有问题,留言或留邮箱,再给你发。

    freemarker&velocity的使用

    5. **模板配置**:可以通过`freemarker.cfg.properties`文件配置模板解析的全局选项,如编码、日期时间格式等。 **Velocity** Velocity是Apache软件基金会的一个项目,它的设计理念与Freemarker类似,但语法略有...

    FreeMarker文档.CHM

    这个“FreeMarker文档.CHM”文件很可能是FreeMarker的官方帮助文档,通常包含详尽的API参考、用户指南和示例,以帮助开发者更好地理解和使用FreeMarker。 在Web开发中,FreeMarker扮演着模板语言的角色,与后端数据...

    模板:velocity和freemarker的比较

    Velocity和Freemarker模板技术比较 模板技术在现代软件开发中扮演着重要角色,而在目前最流行的两种模板技术中, Velocity 和 Freemarker 独占鳌头。在 WebWork2 中,我们可以随意选择使用 Freemarker 或 Velocity ...

    freemarker-2.3.13.jar.zip

    在这个场景中,我们讨论的是"freemarker-2.3.13.jar.zip",这是一个包含Freemarker库2.3.13版本的压缩文件。 Freemarker的工作原理基于模板和数据模型。模板是纯文本文件,其中包含固定的文本和由特定语法表示的...

    Velocity 和 FreeMarker区别

    ### Velocity与FreeMarker的区别 在IT领域特别是Java开发中,模板引擎是不可或缺的一部分,它们用于将数据模型转换为HTML、PDF、Word文档等格式。在众多模板引擎中,Velocity和FreeMarker是两种非常受欢迎的选择。...

    freemarker-2.3.28.jar

    这个"freemarker-2.3.28.jar"是Freemarker库的一个具体版本,版本号为2.3.28,它是Java的一个可执行的JAR(Java Archive)文件,用于在Eclipse集成开发环境中作为插件使用。 在Freemarker的2.3.28版本中,我们可以...

    freemarker源码.rar

    这个"freemarker源码.rar"文件包含了Freemarker的源代码,对于想要深入了解其内部工作原理或者进行二次开发的开发者来说,是一份宝贵的资料。 源码分析通常包括以下几个方面: 1. **模板语言解析**:Freemarker...

    shiro.freemarker.ShiroTags已打包

    `com.jagregory.shiro.freemarker.ShiroTags` 是 Jagregory 开发的一个扩展,将 Apache Shiro 的安全功能与 Freemarker 模板引擎相结合。这个类库提供了一系列的 Freemarker 标签,允许开发者在 Freemarker 模板中...

    freemarker-2.3.23.jar

    freemarker-2.3.23.jar,下载

    freemarker-2.3.22

    `freemarker.jar`是Freemarker库的二进制文件,它是实际运行时需要导入到Java项目的类路径中的,以便使用Freemarker的功能,如创建模板、解析数据模型并生成最终输出。 `source`目录可能包含了Freemarker 2.3.22的...

    FreeMarker手册.pdf

    在实际应用中,FreeMarker通常与MVC框架结合,通过控制器准备数据模型,然后将模型传递给FreeMarker模板,最后由FreeMarker生成动态内容。这种解耦使得开发者能够更高效地维护和扩展Web应用的视图层。 了解并熟练...

    springboot如何使用Freemarker模版引擎

    spring.freemarker.template-loader-path=classpath:/templates/ ``` 或 ```yaml spring: freemarker: template-loader-path: classpath:/templates/ ``` 2. **创建Freemarker模板文件** - 在`src/main/...

    Spring4.0.2Hibernate4.3Freemarker2.3.20.zip.zip

    标题中的"Spring4.0.2Hibernate4.3Freemarker2.3.20.zip.zip"表明这个压缩包包含了三个关键的Java开发框架:Spring 4.0.2、Hibernate 4.3和Freemarker 2.3.20。这三者都是Java Web开发中的重要组件,下面将详细解释...

    FreeMarker Manual.pdf

    ### FreeMarker 手册知识点概览 #### 一、模板作者指南 ##### 1. 入门 **模板 + 数据模型 = 输出** - **数据模型简介:** 数据模型是 FreeMarker 模板处理的核心,它定义了模板可以访问的数据结构。在 ...

Global site tag (gtag.js) - Google Analytics