快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门24小时官网:选择JSF不选Struts的十大理由



我的一个客户不知道该选用Struts照样JSF。就像你预感的那样,我平日会问:这2中框架之间有什么差别?当然,除了我的这个客户外很多人都面临这样的选择。

总的来说,我建议在新项目中优先斟酌JSF。虽然经常有一些商业上的身分迫使我们为现有的项目选择了Struts,而且那些办理规划还有待磨练,然则,让我们面对一个事实:JSF比Struts很多多少了。

下面是我选择JSF而不选Struts的十大年夜来由:

1.Components(组件)

2.Render Kits

3.Renderers

4.Value Binding Expressions(值绑定表达式澳门24小时官网)

5.Event Model(事故模型)

6.Extensibility(可扩展性)

7.Managed Beans(Dependency Injection 依附注入)

8.POJO Action Methods

9.JSF is the standard Java-based web app framework (JSF是java web利用法度榜样的标准框架)

10.There's only one Struts(只有一个Struts)

10.There's only one Struts(只有一个Struts)

Struts是一个开源产品,然而JSF是一个标准。这个细节经常被新的JSF进修者轻忽,着实这是显而易见的,由于我们有多个JSF的实现。虽然JSF还很不成熟,然则我们已经有了2个优秀的JSF实现可以选择:Sun的参考实现和Apache的MyFaces。另一方面,我们只有一个Struts。

9.JSF is the standard(JSF是标准)

JEE 5.0要供给一个JSF的实现,这注解JSF不久将会无处不在。这可能与你无关,然则和对象供应商亲昵相关。现在大年夜概有50个j澳门24小时官网ava web利用法度榜样框架,对象供应商不会甘愿宁肯去支持一个特其余框架,然则他们会绝不踌躇的去支持一个标准。而且不止供应商,开源项目也会迅速的凑集在JSF的四周,争先恐后的去实现相同的功能。比如说,直到我们去实现本色上和Shale的Tapestry差不多的视图的时刻,我才知道Facalets。(从长远来看,我信托这种冗余是件好事,会给我们带来好处)

8.POJO Action Methods

Struts的行径是和Struts的API绑定在一路的,然则JSF的行径措施可以在POJPO中实现。这意味着你不用在表单和模型工具之间实现一个多余的行径层。顺便说一下,在JSF里面没有行径工具,行径在模型工具中实现。然则也请留意一点:假如你乐意你也可以天生与JSF自力的行径工具。在Struts里面,你有Form. Bean和Action Bean。Form. Bean包孕数据而Action Bean包孕逻辑。OO狂会想去合并前2者,在Struts你办不到。然则在JSF中,你可以分开数据和逻辑,也可以合并到一个工具中,统统由你抉择。

7.Managed Beans(Dependency Injection 依附注入)

和Spring一样,JSF也应用了依附注入(DJ)(或节制反转(IoC))去实例化和初始化Bean。Struts切实着实为你天生了Form. Bean和Action Bean,然则JSF可以为你天生各类各样的Managed Bean。

6.Extensibility(可扩展性)

这个很紧张。JSF有6个工具实现了这个框架的大年夜部分功能,而且你可以很轻易的用你自己的实现代替原有实现。比如你想加一个自定义参数在JSF表达式说话里面,或是添加一个自己的视图节制器以便于区分组件和HTML。事实上Shale实现了上面的功能。假如你还没有满意,JSF供给了几个地方你可以轻松的节制JSF的生命周期。Shale给你的会更多。

5.Event Model(事故模型)

JSF的事故模型使你可以对值改变,动作,JSF生命周期阶段变换等作出反映。在JSF1.1中,那些事故都是在办事器端处置惩澳门24小时官网罚的,这肯定是一个缺陷,好在JSF2.0计划支持客户端事故,拭目以待吧。

4.Value Binding Expressions(值绑定表达式)

在Struts中,你认真把数据从Form通报到模型工具。你实现的Action的execute措施是把Form作为一个参数。然后你再手动的把数据从Form. Bean里面掏出放到模型工具里面。你要为利用里面的每个Form做这些工作,然而在JSF里面,你只需像这样:#{model.property} 就够了,其他的交给JSF来处置惩罚。

3.Renderers

你有看过Struts的标签的源代码吗?它直接天生HTML。JSF组件标签什么都不天生,它和办事器上的一对component-renderer对应。Component掩护组件状态,rendered认真得到视图。重点是renderers是可插拔的,即你可以根据自己需求实现然后替代掉落默认实现。比如说我在NFJS上面的Felix发言中举例阐清楚明了怎么去实现一个自定义的labe澳门24小时官网l renderer。你只必要设置设置设备摆设摆设你的renderer,JSF就会自动在你的利用法度榜样里面应用他。

2.Render Kits

在几年前我曾经有份Struts咨询事情,我们必须同时支持浏览器和无线设备,异常苦楚。然则用JSF来完成那个义务异常轻易,由于你可以天生你自己的render kit-为一种特定显示技巧的renderers的聚拢-然后设置设置设备摆设摆设到JSF里面。

1.Components澳门24小时官网(组件)

组件是Struts和JSF之间最大年夜的差别。就像Swing一样,JSF供给富厚的底层构件去开拓组件然后添加到标准的组件集。那些底层构件让你很轻易的天生自己的组件并且和别人共享。现在我们到处都能看到自定义组件跳出来,比如说Oracle的ADF和MyFaces,两者都供给了富厚的组件集,就像javascript日历,tree等等。当然,组件只是一部分。范例的是,组件都和一个自力的renderer对应,这给我们带来了真正的好处(看第3条)。然则和JSF中的很多器械一样,你不必然要墨守成规。只要你乐意,你可以实现render自己的组件,虽然这样你会掉去给组件加入其余renderer的能力。

您可能还会对下面的文章感兴趣: