??xml version="1.0" encoding="utf-8" standalone="yes"?>成人18在线,国产精品一二三视频,精品日韩欧美http://www.aygfsteel.com/wjttkx/category/23178.html学无止境zh-cnThu, 26 Jul 2007 17:28:33 GMTThu, 26 Jul 2007 17:28:33 GMT60Z模板的Web表示层技? -http://www.aygfsteel.com/wjttkx/archive/2007/07/26/132567.html王娟王娟Thu, 26 Jul 2007 08:06:00 GMThttp://www.aygfsteel.com/wjttkx/archive/2007/07/26/132567.htmlhttp://www.aygfsteel.com/wjttkx/comments/132567.htmlhttp://www.aygfsteel.com/wjttkx/archive/2007/07/26/132567.html#Feedback0http://www.aygfsteel.com/wjttkx/comments/commentRss/132567.htmlhttp://www.aygfsteel.com/wjttkx/services/trackbacks/132567.htmlZ模板的Web表示层技?(摘自《Spring开发指南?

传统的JSP技术ؓ(f)Web表现层技术提供了灉|、丰富的功能支持。然而,站在工程的角?br>而言Q过于凌qJSP Script也成为系l维护的头号大敌?br>JSP 代码几乎{同于Java 代码Q在提供了最丰富的特性支持的同时Q也为系l的开发带
来一些隐(zhn),E序员往往天马行空Q不为羁束,在JSP 中将业务逻辑、数据逻辑、表现逻辑?br>码相hQ代码重用性、系l可l护性极低?u>特别是在参与开发h员众多,技术水q莠不?br>的情况下Q纵使技术经理一再强调设计规范的U束Q但人本的约束L难以控制Q随着开发过
E进展和产品上线压力的增大,规范U束逐渐薄弱Q于是难以避免的造成代码的؜乱,可维?br>性的下降?br>面对q个问题Q众多组l和厂商开始研发自q表现层框Ӟ试图通过一个隔ȝ表现?br>框架Q强行将表现层和逻辑层相剥离。时间似乎退回到了最初Web 端只支持Servlet 技术的
时代Q那时候或多或各个公叔R有自q模板实现Q。不q,现在的模板技术经q长旉?br>发展Q已l将表现层的能力发挥得淋漓尽_(d)不失为JSP技术之外的一个明智选择?/p>

模板技术相对传lJSP技术有以下三个主要优势Q?br>1Q?在技术层面,表现逻辑与业务逻辑相分R?br>2Q?Zh员之间的分工提供了一个良好的分界炏V页面美工只需专著兛_模板的设计,而程序员则专注于业务逻辑的实现。二者重合点明显减少?br>3Q?如果需要,模板引擎可脱Web 容器单独q行Q这为系l可能的UL需求提供了更多的弹性空_(d)q一Ҏ(gu)在应用中也许ƈ不会(x)有太大的实际意义Q只是提供了一U附加选择Q?/u>

目前Spring支持一下几U模板技术:(x)
1Q?XSLT
XSLT是基于XML的表现层模板技术,伴随着XML的大量用。XSLT也日渐成熟,q?br>q速成Z表现层技术之一?u>XSLT作ؓ(f)一个通用表现层框Ӟ拥有最好的q_适应性,
几乎所有的LE序设计语言都提供了XLST支持Q现有的XLST模板可以单的ULC
同的语言q_
Q如J2EE应用中的XSLTUL?netq_Q这L(fng)可移植性是其他专用
模板技术,如Velocity和Freemarker难以辑ֈ的?br>W者在2001q在一个原型项目中采用了XSLT作ؓ(f)表现层实玎ͼ׃当时XSLT不
成熟QXSLT解析器效率低下,因此在正式品开发中使用其他技术作为替代。在2003q?br>中,l过技术探讨,军_再次在项目实施中引入XSLT 技术,相对两年前,此时的XSLT
技术已l相当成熟,解析器的效率也大大改善。经q半q时间的目研发Q品上U,q?br>取得了o(h)人满意的表现?u>不过Q在之后的项目回过E中Q笔者认为,目前在项目中大量
采用XSLT技术尚不可取,上述目开发过E中QXSLT技术提供了极佳的扩展性和重用性,
也保证了业务逻辑和表C逻辑的清晰划分,然而,最大的问题是,XSLT~Z强有力的~辑
器支持。虽焉过XML/XSLT 技术成全了设计上近乎完的表现Q但却ؓ(f)界面开发带来了
极大隑ֺQ以臛_期复杂界面的修改都需要消耗极大的人力Q得不偿失?/u>
W者在目开发中所用的XSLT ~辑器ؓ(f)StylusStudio 和XmlSpyQ目前这两款~?br>辑器可以是XSLT开发的首选,提供了丰富的Ҏ(gu)和可视化编辑功能。但即便如此QXLST
J杂苛刻的语法和调试上的隑ֺ也ؓ(f)开发工作带来了极大的障?br>此外Q也许是最重要的一点,xslt在性能上的表现不如人意。经q多q的发展Q?br>XSLT解析/合成器的性能相对最初已l大为改观,但依然与其他模板技术存在着较大差距?br>据实地测试,FreeMarker和Velocity对于同等复杂度的表现层逻辑Q^均处理速度?br>XSLT ?0 倍以上,q是一个不得不正视的性能沟壑?/u>同时Q?u>XSLT 的内存占用也?br>FreeMarker 和Velocity 的数倍有余(XSLT 中,每个节点都是一个Java 对象Q大?br>对象的存储对内存占用极大Q同时大量对象的频繁创徏和销毁也对JVM 垃圾攉产生了较
大负面媄(jing)响)(j)?/u>在上q项目中Q由于硬件上的充分冗余(8G RAM, 4CPUQ,才得这?br>性能上的影响相对微弱?br>因此Q目前在目中大量引入XSLT技术尚需仔细考量?br>2Q?Velocity
Velocity是Apache Jakarta目中的一个子目Q它提供了丰富强大的模板功能?br>作ؓ(f)目前最为成熟的模板支持实现QVelocity 在诸多项目中得到了广泛应用,不仅
限于Web 开发,在众多代码生成系l中Q我们也可以看到Velocity 的n影(?br>Hibernate中的代码生成工具Q?br>
3Q?FreeMarker
FreeMarker是Velocity之外的另一个模板组件?br>与Velocity 相比QFreeMarker 对表现逻辑和业务逻辑的划分更Z|
Freemarker在模板中不允许对Servlet APIq行直接操作Q而Velocity可以Q,
如FreeMarker 中禁止对HttpServletRequest 对象直接讉KQ但可以讉K
HttpServletRequest对象中的AttributeQ。通过更加严格的隔LӞ牉|?br>辑处理的操作被强制{Ud逻辑层。从而完全保证了层次之间的清晰性?br>
另外一个Velocity无法实现的特性,也是最具备实际意义的特性:(x)FreeMarker?br>JSP Tag提供了良好支持?/u>q一点可能存在一点争议,JSP技术的最大问题就是容?br>在页面中混入逻辑代码。而FreeMarker 对JSP Tag 的支持似乎ؓ(f)q个问题又打开
了大门。这一点上Q我们可以将FreeMarker看作是仅允许使用TAG的JSP面Q实
际上QFreeMarker的表辑ּ语法与EL语法也非常类|(j)?br>从开发角度而言Q只允许使用TAG的JSP面Q已l在很大E度上保证了面表现?br>辑与业务逻辑的分R?/u>E序员在JSP Script中؜杂逻辑代码的原因,大部分是Z
慉|Q只要无法在面模板中直接编写Java代码Q相信程序员也不?x)去专门~写一?br>JSP TAG来刻意违反层ơ划分原则?br>对JSP TAG 的支持ؓ(f)FreeMarker 带来了极大的zdQ目前开源社Z已经有了?br>C多的成熟TaglibQ如DisplayTag、Struts Menu{,q些功能丰富Q成熟可
靠的TaglibQ将Z品开发提供极大的便利。另一斚wQ这也ؓ(f)代码重用提供了另一
个可选途径Q避免了大部分模板实现在q一点上的不?br>q者的l验Q对于Web开发而言QFreeMarker在生产效率和学习(fn)成本上更具优势,
而Velocity 的相对优势在于更多第三方工具的支持和更广泛的开发和用户团体Q然
而对于一个轻量模板cd而言Q这L(fng)优势q不是十分明显)(j)?br>如果没有Velocity的技术储备,而又需要通过技术上的限定解册?模型的划分问
题,q里推荐采用FreeMarker作ؓ(f)Spring MVC中的表现层实现。以获得最好的Q学
?fn)、开发)(j)成本受益?br>



王娟 2007-07-26 16:06 发表评论
]]>
վ֩ģ壺 Ӽ| | | ī| ʡ| | üɽ| 㶫ʡ| ʱ| ն| | | ³ƶ| ʶ| | | | ½| | | | | | ͭ| | | ƶ| ͨ| ̫| ݰ| | ذ| ƽ| ֹ| | | | | ϳ| ˺| |