当前位置: 首页 > 图文教程 > Java技术 > Java基础 > Java基础:小编浅谈Spring基于三大模板的Web表示层技术

Java基础
Struts+Hibernate数据表示
JSP+MYSQL+Java类优化分页
利用JBuilder 2005 开发Spring
Java程序与C语言的接口
10分钟Hibernate体验
Tomcat配置技巧Top 10
JDBC+Hibernate将Blob数据写入Oracle
Java使用全屏幕模式
Java基础:小编浅谈C#与java的属性区别
Java基础:小编浅谈C#和Java的相似之处
Java基础:小编浅谈C#与java的事件区别
Java基础:小编浅谈C#与java的对象索引机制、指代的区别
Java基础:小编谈Java中获取系统属性
Java基础:浅谈Java Bean与EJB的那些区别
Java基础:Java中对文件读写操作概述
Java基础:Java中安全问题
Java基础:浅谈面向对象应用中的持续性
Java中多线程的实现
多线程使用中的问题
MIME详解

Java基础:小编浅谈Spring基于三大模板的Web表示层技术


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 535 ::
收藏到网摘: n/a

1.XSLT

XSLT是基于XML的表现层模板技术,伴随着XML的大量使用。XSLT也日渐成熟,并

迅速成为主流表现层技术之一。XSLT作为一个通用表现层框架,拥有最好的平台适应性,

几乎所有的主流程序设计语言都提供了XLST支持,现有的XLST模板可以简单的移植到不

同的语言平台,如将J2EE应用中的XSLT移植到.net平台,这样的可移植性是其他专用

模板技术,如Velocity和Freemarker难以达到的。

笔者在2001年在一个原型项目中采用了XSLT作为表现层实现,由于当时XSLT尚不

成熟,XSLT解析器效率低下,因此在正式产品开发中使用其他技术作为替代。在2003年

中,经过技术探讨,决定再次在项目实施中引入XSLT 技术,相对两年前,此时的XSLT

技术已经相当成熟,解析器的效率也大大改善。经过半年时间的项目研发,产品上线,并

取得了令人满意的表现。不过,在之后的项目回顾过程中,笔者认为,目前在项目中大量

采用XSLT技术尚不可取,上述项目开发过程中,XSLT技术提供了极佳的扩展性和重用性,

也保证了业务逻辑和表示逻辑的清晰划分,然而,最大的问题是,XSLT缺乏强有力的编辑

器支持。虽然通过XML/XSLT 技术成全了设计上近乎完美的表现,但却为界面开发带来了

极大难度,以至后期复杂界面的修改都需要消耗极大的人力,得不偿失。

笔者在项目开发中所用的XSLT 编辑器为StylusStudio 和XmlSpy,目前这两款编

辑器可以算是XSLT开发的首选,提供了丰富的特性和可视化编辑功能。但即便如此,XLST

繁杂苛刻的语法和调试上的难度也为开发工作带来了极大的障碍。

此外,也许是最重要的一点,xslt在性能上的表现尚不尽如人意。经过多年的发展,

XSLT解析/合成器的性能相对最初已经大为改观,但依然与其他模板技术存在着较大差距。

据实地测试,FreeMarker和Velocity对于同等复杂度的表现层逻辑,平均处理速度是XSLT 的10 倍以上,这是一个不得不正视的性能沟壑。同时,XSLT 的内存占用也是

FreeMarker 和Velocity 的数倍有余(XSLT 中,每个节点都是一个Java 对象,大量

对象的存储对内存占用极大,同时大量对象的频繁创建和销毁也对JVM 垃圾收集产生了较

大负面影响)。在上述项目中,由于硬件上的充分冗余(8G RAM, 4CPU),才使得这些

性能上的影响相对微弱。

因此,目前在项目中大量引入XSLT技术尚需仔细考量。

2.Velocity

Velocity是Apache Jakarta项目中的一个子项目,它提供了丰富强大的模板功能。

作为目前最为成熟的模板支持实现,Velocity 在诸多项目中得到了广泛应用,不仅

限于Web 开发,在众多代码生成系统中,我们也可以看到Velocity 的身影(如

Hibernate中的代码生成工具)。

3.FreeMarker

FreeMarker是Velocity之外的另一个模板组件。

与 Velocity 相比,FreeMarker 对表现逻辑和业务逻辑的划分更为严格,

Freemarker在模板中不允许对Servlet API进行直接操作(而Velocity可以),

如FreeMarker 中禁止对HttpServletRequest 对象直接访问(但可以访问

HttpServletRequest对象中的Attribute)。通过更加严格的隔离机制,牵涉逻

辑处理的操作被强制转移到逻辑层。从而完全保证了层次之间的清晰性。