焉萎Ⅵ潞器-㈦
J2EE开发框架Javaser ver Faces(J SF)个人经验
张文
(同济大学软件学院上海200092)
[摘要]J S F这项技术是由C r ai g M c C l an ahan为主设计的,而c r ai g M c C l an ahan i E是如日中天的St r ut s的主设计师(J avaJ k.都知道),故JSF大体上与St r ut s一脉相承。St r ut s是典型的f r a m ew or k,侧重架构设计,而JSF则侧重于JSP的快速开发功能.
[关键词]J a vaSer ver F a ces(JS F)M V C M ana ged B eans
中图分类号:TP3文献标识码:A文章编号:1671--7597(2008)1110044--01
参加J2E E的项目开发也有3年了,其表现层的框架使用过S t r ut s和JSF,目前主要述是使用JSF为丰,因为JSF在许多方面相对于St r ut s还是
有很多的优势的。总结这几年的开发经验再结合网上一些朋友对JsF一些评价,我对JSF这项技术进行一些分析和点评。
J SF这项技术是由C r ai g M cC l anah an为主设计的,而C r ai g
M c C l a nahan正是如日中天的St r ut s的主设计师(Java人都知道),故J SF大体上与st r u t s一脉相承。以笔者初试的体验,St r ut s是典型的f r am ew or k。侧誊架构设计,而JsF则侧重于JSP的快速开发功能。jsp用什么前端框架
一、什么是M V C
M ode l—V i ew-C ont r ol l e r(M vc)模式的目的是从数据表示(V i ew)中将数据(即M ode l)分离出来。如果应用程序有多种表示,可以仅替换视图层而重用控制器和模型代码。类似的,如果需要改变模型,可以在很大程度上不改变视图层。控制器处理用户动作,用户动作可能造成模型改变和视图更新。当用户请求一个JSF页而时,请求发送到F ac es S er vl e t。Fac es S e rvl e t是JSF使用的前端控制器se r vl et。和其他很多W eb应用程序框架一样,J S F使用M V S模式消除视图和模型之间的耦合。为了集中处理用户请求,控制器s er v l et改变模型并将用户导航到视图。
F a ces S er vl et是JSF框架中所有用户请求都要经过的控制器元素。
F a ces S e r vl et分析用户请求,使用托管bea n对模型调用各种动作。后台(ba cki ng)或托管(m a nage d)be a n就是该模型的例子。J S F用户界面(U I)组件是视图层的例子。M V C模式把任务分解给具有不同技能的开发人员,使这些任务能够同时进行,这样
G U I设计人员就可以使用丰富的uI组件创建JSF页面,同时后端开发人员可以创建托管bea n来编写专门的业务逻辑代码。
:、JSF i s t he s t a ndar d(J S F墨标准)
J2E E5.0要提供一个J SF的实现,这表明JSF不久将会无处不在。这可能与你无关,但是和工具供应商密切相关。现在大概有50个Java w eb应用程序框架,工具供应商不会情愿去支持一个特别的框架,但是他们会毫不犹豫地去支持一个标准。而且不止供应商,开源项目也会迅速的聚集在JSF的四周,争先恐后的去实现相同的功能。
三、—∞O A ct i on M et hoc l s
JSF的行为方法可以在PO JPO中实现。这意味着你不用在表单和模型对
象之间实现一个多余的行为层。顺便说一下,在JSF里面没有行为对象.行为在模型对象中实现。
四、M a nage d B eans(D ependency I nj ect i on依赣注入l
在J S F中不仪使用了PO J O技术。而且还使用了类似Spri ng的控制反转(I oC)(或称为依赖注入一D I)技术,在J S F的B a cki ng Bean中,我们可以把视图所需要的数据和操作放进一个B ac ki ng B e an
中.同时得益于J S F使用的D I技术,我们可以在配置文件中初始化M a naged B e an,同时我们也可以通过这样的技术很便的和使用类似技术的Spr i ng进行
Ⅲ习
整合。
五、E xt en si bi l i t y(可扩晨性)
JSF有6个对象实现了这个框架的大部分功能,而且你可以很容易的用你自己的实现代替原有实现。比如你想加一个自定义参数在JSF表达式语言里面,或是添加一个自己的视图控制器以便于区分组件和H TM L.事实上Sha l e实现了上面的功能。如果你还没有满足,JSF提供了几个地方你可以轻松的控制JSF的生命周期。Shal e给你的会更多。
六、V al ue B i nd i ng E xpr ess i ons(位绑定寰达式)
在St r ut s中,你负责把数据从F or m传递到模型对象。你实现的A c t i on的e xec ut e方法是把For m作为一个参数。然后你再手动的把数据从For m B ean里面取I叶{放到模型对象里面。你要为应用坦面的每个Fom做这些事情,然而在J SF里面,你只需像这样:#{m odel.pr op er t y)就够了,其他的交给JSF来处理。
七、C om pon ent s(组件)
就像阳i ng一样,JSF提供丰富的底层构件去开发组件然后添加到标准的组件集。那些底层构件让你很容易的生成自己的组件并且和别人共享。现在我们到处都能看到自定义组件跳出来,比如说O r a cl e的A D F和M yFa ces,两者都提供了丰富的组件集,就像j ava scr i pt日历,t r ee等等.当然,组件只是一部分。典型的是,组件都和一个独立的r end er er对应,这给我们带来了真正的好处。但是和JSF中的很多东西一样,你不一定要墨守成规。只要你愿意,你可以实现r end er自己的组件,虽然这样你会失去给组件加入别的r ender er的能力。
八、程序量和圈页设计人员的分工
在JSP中,程序员和网页设计人员的工作有时候是互相交织、无法区分的。这是因为JSP贞面中掺入了网页设计人员所不熟悉的一些JSP标签,甚至是晦涩的Ja va代码。要求网页设计人员理解这些标签和代码是不现实的,不符合分工合作的原则。在JSF中,框架为网页设计人员提供r一套标准的uI组件,在工具的支持下,可以通过拖放简单地添加到网页上,然后设置某些显示属性来满足视觉要求。
网页设计人员不需要知道uI组件背后的复杂代码,那是程序员的事,而程序员也不需要再处理任何与视觉相关的细节,程序员所做的只是给uI组件绑定类的属性或方法。虽然程序员和网页设计人员需要修改同一份文件,但他们备司其职,各得其所,互不干扰。程序员和网页设计人员工作的明确划分,
是JSF在易用性方面迈出的一大步.
参考文献:
[1儿美】曼.J S F实战.北京:人民邮电出版社.
[2][美]C hr i s Schal k.J avaSer ver.Faces完全参考手册.北京1人民邮电出版社.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。