1
XSLT是基于XML的表现层模板技术,伴随着XML的大量使用。XSLT也日渐成熟XSLT作为一个通用表现层框架,拥有最好的平台适应性,
几乎所有的主流程序设计语言都提供了XLST支持,现有的XLST模板可以简单的移植到不
同的语言平台,如将J2EE应用中的XSLT移植到.net平台,这样的可移植性是其他专用
模板技术,如Velocity和Freemarker难以达到的。
不过,认为,目前在项目中大量采用XSLT技术尚不可取,
2
Velocity
Velocity 在诸多项目中得到了广泛应用,不仅
限于Web 开发,在众多代码生成系统中,我们也可以看到Velocity 的身影
3
FreeMarker
与Velocity 相比,FreeMarker 对表现逻辑和业务逻辑的划分更为严格,
Freemarker在模板中不允许对Servlet API进行直接操作(而Velocity可以)
。而FreeMarker 对JSP Tag 的支持似乎为这个问题又打开
了大门。这一点上,我们可以将FreeMarker看作是仅允许使用TAG的JSP页面(实
际上,FreeMarker的表达式语法与EL语法也非常类似。
freemarker
. 取Application范围的对象
${Application.myApplicationAttribute}
取session范围的对象
${Session.mySessionAttribute}
取request范围的对象
${Request.myRequestAttribute}
.取request parameter范围的对象
${Parameters.myParameter}
取context parameter范围的对象
${stack.findValue('#myContextParam')}
:D
一、 什么是FreeMarker
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。
所谓模板,就是一份已经写好了基本内容,有着固定格式的文档,其中空出或者用占位符标识的内容,由使用者来填充,不同的使用者给出的数据是不同的。在模板中的占位符,在模板运行时,由模板引擎来解析模板,并采用动态数据替换占位符部分的内容。
FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成 XML,JSP或Java 文等。
二、 FreeMarker的优点和缺点
(一) FreeMarker 的优点
1.使用FreeMarker的优点之一,可以彻底的分离表现层和业务逻辑。
使用JSP 开发过程中在页面中大量的存在业务逻辑的代码,使得页面内容凌乱,在后期大量的修改维护过程中就变得非常困难。
FreeMarker根本不支持Java脚本代码。
FreeMarker的原理就是:模板+数据模型=输出,模板只负责数据在页面中的表现,不涉及任何的逻辑代码,而所有的逻辑都是由数据模型来处理的。用户最终看到的输出是模板和数据模型合并后创建的。
2.使用FreeMarker的优点之二,可以提高开发效率。
在我们以往的开发中,使用的都是JSP 页面来展示数据的,即所谓的表现层。我们都知道,JSP在第一次执行的时候需要转换成Servlet类,开发阶段进行功能调适时,需要频繁的修改JSP,每次修改都要编译和转换,那么试想一天中我们浪费在程序编译的时间有多少。相对于JSP来说,FreeMarker模板技术不存在编译和转换的问题,所以就不会存在上述问题。而且开发过程中,我们在不必在等待界面设计开发人员完成页面原形后,我们再来开发程序。
3.使用FreeMarker的优点之三,使得开发过程中的人员分工更加明确。
以往用JSP展现数据时,作为程序员的我们,并不熟悉界面设计技术,反之界面开发人员,也并不熟悉程序语言。对两者而言,交替性的工作本身就有难度。有时候稍有不慎,可能会将某个页面元素删除或去掉了某个程序符号,使得页面走样或程序错误,这样就需要双方相互沟通协作,解决出现的问题。有时候因为项目中的时间,任务量等因素的存在,可能这个工作就由一个人来完成,这样就可能加大某一方开发人员的工作量。
使用FreeMarker后,作为界面开发人员,只专心创建HTML文件、图像以及Web页面的其他可视化方面,不用理会数据;而程序开发人员则专注于系统实现,负责为页面准备要显示的数据。
(二)FreeMarker的缺点
1. 使用FreeMarker的缺点之一,应用FreeMarker模板技术,在修改模板后,可能会看到已经过期的数据。如:生成静态的HTML页面后,如果一旦模板改变,而没有及时更新模板生成的HTML页面的话,用户看到的就是过期的数据。
2.使用FreeMarker的缺点之二,FreeMarker模板技术在应用过程中,FreeMarker中的变量必须要赋值,如果不赋值,那么就会抛出异常。想避免错误就要应用if/elseif/else 指令进行判段,如果对每一个变量都判断的话,那么则反而增加了编程的麻烦。
3.使用FreeMarker的缺点之三,FreeMarker的map限定key必须是string,其他数据类型无法操作
4.使用FreeMarker的缺点之四,FreeMarker不支持集群应用。为了编成的方便性,把序列化的东西都放到了Session中,如Session,request等,在开发的过程中确实方便,但如果将应用放到集群中,就会出现错误。
通过以上的阐述,希望可以令您清晰FreeMarker的优点和缺点,旨在抛砖引玉。有什么问题可以留下您的宝贵留言,我非常愿意与大家讨论。
分享到:
相关推荐
10. **与其他技术的集成**:FreeMarker 能很好地与Spring框架、Struts框架等结合使用,提供Web应用的视图层解决方案。同时,它也可以与各种数据源(如数据库、XML文件)交互,获取数据。 综上所述,FreeMarker是一...
Freemarker是一款强大的模板引擎,用于将数据模型与表示层分离,从而实现在Web开发中的动态页面生成。根据所提供的文件信息,我们可以详细探讨以下几个关键的知识点: ### 1. 创建配置实例 在Freemarker中,`...
它与Java语言紧密集成,允许开发者通过模板语言(Template Language)来分离应用程序的数据和表现层逻辑。在这个场景中,"freemarker格式化缩进文本或include指令"主要涉及了两个重要的FreeMarker特性:格式化输出...
- **基本内容**:讲解了FreeMarker中数值的表示方式以及各种类型的使用场景。 - **类型**:深入探讨了FreeMarker支持的不同数据类型及其特点。 #### 3. 模板 - **总体结构**:概述了模板文件的基本结构和组成部分...
4. **变量和表达式**:在FreeMarker中,`${}`用于表示表达式,它会计算表达式的结果并将其插入到输出中。变量可以直接引用数据模型中的对象或属性,如`${user.name}`。 5. **指令**:FreeMarker的指令以`<#...>`...
FreeMarker是一个开放源代码的模板引擎,它能够将数据模型与表现层分离,使开发人员能够更加专注于业务逻辑的实现,而让前端工程师或设计师专注于界面的设计。这种模式有助于提高开发效率,并且使得维护变得更加容易...
Freemarker是一个强大的模板引擎,常用于Web应用中的视图层开发,特别是在Java环境中,它作为MVC设计模式的一部分,负责生成动态HTML或其他格式的文本。本教程将深入讲解Freemarker的核心概念、语法和实际应用,帮助...
3. **MVC模式**: 在MVC模式下,FreeMarker负责视图层,即展示层,与控制器和模型层解耦,提高了软件的可维护性和扩展性。 #### 四、FreeMarker的核心功能 - **通用目标**: - **多类型文本生成**: 支持生成多种格式...
Freemarker是一个强大的、开源的模板引擎,常用于Java Web应用中的视图层技术,它允许开发者使用简单的标记语言(Markup Language)来控制显示逻辑,而无需深入理解HTML或者其他前端技术。这个“freemarker-2.3.23-...
Freemarker是一个强大的模板引擎,主要用于生成动态HTML、XML或其他文本格式的输出,常用于Web应用中的视图层。在Java开发中,它是一个轻量级的开源库,与Spring框架和其他MVC模式的框架结合使用广泛。这个...
1. **基本语法**:Freemarker使用简单的模板语言,主要包括变量表示(${})、控制结构(if/else、foreach)、条件表达式(?)和函数调用(例如,日期和时间的格式化)。 2. **模板设计模式**:如如何定义模板布局,...
- **预处理**:FreeMarker读取模板文件,编译成内部的中间表示(AST)。 - **合并**:当请求到达时,将数据模型与编译后的模板结合,生成最终的输出字符串。 - **安全隔离**:FreeMarker通过安全设计,防止恶意...
FreeMarker则是一个强大的、基于模板的Java模板引擎,常被用作Struts2中的视图层技术,帮助开发者将数据动态渲染成HTML或其他格式的文档。 在Struts2中使用FreeMarker,主要涉及以下几个核心概念和步骤: 1. **...
在Freemarker中,变量通过`$`符号引用,如`${user.name}`表示访问`user`对象的`name`属性。表达式可以包含算术运算、比较运算、逻辑运算等,支持链式调用和安全导航操作符防止空指针异常。 3. **指令** ...
7. **与Spring Framework集成**:在Spring MVC中,Freemarker可以作为视图解析器使用,通过配置`FreeMarkerConfigurer`和`FreeMarkerViewResolver`,可以轻松地将Freemarker与Spring的控制器层结合。 8. **模板继承...
3. **匿名访问与登录需求**:Shiro标签还提供了检查用户是否已登录的功能,例如`<@shiro.anonymous>`表示匿名用户可以访问,而`<@shiro.authc>`则表示只有登录用户才能访问。这些标签可以帮助你轻松地创建公共和私有...
总之,Freemarker作为一款强大的模板引擎,通过其灵活的模板语言和数据驱动机制,极大地简化了Web应用的视图层开发。"freemarker-2.3.13.jar.zip"这个文件是这个引擎的一个历史版本,它包含了一切运行和利用...
总的来说,FreeMarker是Web应用中生成动态内容的强大工具,它的灵活性和表达能力使得开发者能够将业务逻辑和视图层分离,提高代码可维护性和可扩展性。对于初学者来说,理解FreeMarker的基础知识,如变量类型、模板...