网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.JVM技术,反射与动态代理.
.Java中鲜为人知的缺点(下).
.java 密碼學.
.信息系统中用Java访问SQLServer.
.JavaApplet编程之实现显示图像.
.Java基础入门:关于Java构造器.
.在Eclipse 3.1体验J2SE 5.0新特性.
.0. Preface: Core Technologies.
.关于J2ME——MIDP1.0中的碰撞检测.
.Java中调用SQL Server存储过程示.
.官方推广活动:SCJP 认证惊喜优惠.
.JAVA的安全结构.
.EJB 自管理的事务.
.JDBC的数据库连接池技术研究与应.
.台湾SUN的一位scea讲师介绍SCEA.
.Java调试教程--使用Jikes进行调试.
.使用RMI和CORBA进行分布式程序设.
.深入探究EJB应用技术的体系结构.
.JDBC基础教程之驱动设置.
.优先权顺序.

选择 JSF不选Struts的十大理由

发表日期:2008-1-5



  我的一个客户不知道该选用Struts还是JSF。就像你预料的那样,我通常会问:这2中框架之间有什么区别?当然,除了我的这个客户外很多人都面临这样的选择。
  
  总的来说,我建议在新项目中优先考虑JSF。虽然经常有一些商业上的因素迫使我们为现有的项目选择了Struts,而且那些解决方案还有待考验,但是,让我们面对一个事实:JSF比Struts好多了。
  
  下面是我选择JSF而不选Struts的十大理由:
  
  1.Components(组件)
  2.Render Kits
  3.Renderers
  4.Value Binding EXPressions(值绑定表达式)
  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个java 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中,那些事件都是在服务器端处理的,这肯定是一个缺陷,好在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谈话中举例说明了怎么去实现一个自定义的label renderer。你只需要配置你的renderer,JSF就会自动在你的应用程序里面使用他。
  2.Render Kits 在几年前我曾经有份Struts咨询工作,我们必须同时支持浏览器和无线设备,非常痛苦。但是用JSF来完成那个任务非常轻易,因为你可以生成你自己的render kit-为一种特定显示技术的renderers的集合-然后配置到JSF里面。
  1.Components(组件) 组件是Struts和JSF之间最大的区别。就像Swing一样,JSF提供丰富的底层构件去开发组件然后添加到标准的组件集。那些底层构件让你很轻易的生成自己的组件并且和别人共享。现在我们到处都能看到自定义组件跳出来,比如说Oracle的ADF和MyFaces,两者都提供了丰富的组件集,就像 javascript日历,tree等等。当然,组件只是一部分。典型的是,组件都和一个独立的renderer对应,这给我们带来了真正的好处(看第3 条)。但是和JSF中的很多东西一样,你不一定要墨守成规。只要你愿意,你可以实现render自己的组件,虽然这样你会失去给组件加入别的 renderer的能力。
上一篇:Struts网站导航系统设计新思路探讨 人气:685
下一篇:如何在Web工程项目中使用Struts 人气:515
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐