这些框架有什么区别啊!能和到一快用吗?
如果可以,怎么合作啊

解决方案 »

  1.   

    Struts Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。 Spring Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。 
    就是说可将两者一起使用,达到将两者自身的特点进行互补。 Hibernate Hibernate是一个免费的开源Java包,它使得与关系数据库打交道变得十分轻松,就像您的数据库中包含每天使用的普通Java对象一样,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。它解放了您,使您可以专注于应用程序的对象和功能,而不必担心如何保存它们或稍后如何找到它们。
    JSF 体系结构是一种 Web 应用程序框架。它是 Java Community Process (JCP) 推动的,有望成为 Web 应用程序开发的标准框架。目前用于开发 Web 应用程序的框架有 50 多个,这说明迫切需要实现框架的标准化,这正是 JSF 框架的目标! 
    JSF 框架利用了 Singleton、Model-View-Controller、Factory Method、State、Composite、Decorator、Strategy、Template Method 和 Observer 设计模式。因为它的体系结构建立在已经验证的设计模式的基础上,这是一个健壮的框架,模式在 JSF 框架中得到了很好的利用。
      

  2.   


    我的一个客户不知道该选用Struts还是JSF。就像你预料的那样,我通常会问:这2中框架之间有什么区别?当然,除了我的这个客户外很多人都面临这样的选择。总的来说,我建议在新项目中优先考虑JSF。虽然常常有一些商业上的因素迫使我们为现有的项目选择了Struts,而且那些解决方案还有待考验,但是,让我们面对一个事实:JSF比Struts好多了。下面是我选择JSF而不选Struts的十大理由:1.Components(组件)2.RenderKits3.Renderers4.ValueBindingExpressions(值绑定表达式)5.EventModel(事件模型)6.Extensibility(可扩展性)7.ManagedBeans(DependencyInjection依赖注入)8.POJOActionMethods9.JSFisthestandardJava-basedwebappframework(JSF是javaweb应用程序的标准框架)10.There'sonlyoneStruts(只有一个Struts)10.There'sonlyoneStruts(只有一个Struts)Struts是一个开源产品,然而JSF是一个标准。这个细节常常被新的JSF学习者忽略,其实这是显而易见的,因为我们有多个JSF的实现。虽然JSF还很不成熟,但是我们已经有了2个优秀的JSF实现可以选择:Sun的参考实现和Apache的MyFaces。另一方面,我们只有一个Struts。9.JSFisthestandard(JSF是标准)JEE5.0要提供一个JSF的实现,这表明JSF不久将会无处不在。这可能与你无关,但是和工具供应商密切相关。现在大概有50个javaweb应用程序框架,工具供应商不会情愿去支持一个特别的框架,但是他们会毫不犹豫的去支持一个标准。而且不止供应商,开源项目也会迅速的聚集在JSF的四周,争先恐后的去实现相同的功能。比如说,直到我们去实现本质上和Shale的Tapestry差不多的视图的时候,我才知道Facalets。(从长远来看,我相信这种冗余是件好事,会给我们带来好处)8.POJOActionMethodsStruts的行为是和Struts的API绑定在一起的,但是JSF的行为方法可以在POJPO中实现。这意味着你不用在表单和模型对象之间实现一个多余的行为层。顺便说一下,在JSF里面没有行为对象,行为在模型对象中实现。但是也请注意一点:如果你愿意你也可以生成与JSF独立的行为对象。在Struts里面,你有FormBean和ActionBean。FormBean包含数据而ActionBean包含逻辑。OO狂会想去合并前2者,在Struts你办不到。但是在JSF中,你可以分开数据和逻辑,也可以合并到一个对象中,一切由你决定。7.ManagedBeans(DependencyInjection依赖注入)和Spring一样,JSF也使用了依赖注入(DJ)(或控制反转(IoC))去实例化和初始化Bean。Struts的确为你生成了FormBean和ActionBean,但是JSF可以为你生成各种各样的ManagedBean。
    6.Extensibility(可扩展性)这个很重要。JSF有6个对象实现了这个框架的大部分功能,而且你可以很容易的用你自己的实现代替原有实现。比如你想加一个自定义参数在JSF表达式语言里面,或是添加一个自己的视图控制器以便于区分组件和HTML。事实上Shale实现了上面的功能。如果你还没有满足,JSF提供了几个地方你可以轻松的控制JSF的生命周期。Shale给你的会更多。5.EventModel(事件模型)JSF的事件模型使你可以对值改变,动作,JSF生命周期阶段变换等作出反应。在JSF1.1中,那些事件都是在服务器端处理的,这肯定是一个缺陷,好在JSF2.0计划支持客户端事件,拭目以待吧。4.ValueBindingExpressions(值绑定表达式)在Struts中,你负责把数据从Form传递到模型对象。你实现的Action的execute方法是把Form作为一个参数。然后你再手动的把数据从FormBean里面取出放到模型对象里面。你要为应用里面的每个Form做这些事情,然而在JSF里面,你只需像这样:#{model.property}就够了,其他的交给JSF来处理。3.Renderers你有看过Struts的标签的源代码吗?它直接生成HTML。JSF组件标签什么都不生成,它和服务器上的一对component-renderer对应。Component维护组件状态,rendered负责获得视图。重点是renderers是可插拔的,即你可以根据自己需求实现然后替代掉默认实现。比如说我在NFJS上面的Felix谈话中举例说明了怎么去实现一个自定义的labelrenderer。你只需要配置你的renderer,JSF就会自动在你的应用程序里面使用他。2.RenderKits在几年前我曾经有份Struts咨询工作,我们必须同时支持浏览器和无线设备,非常痛苦。但是用JSF来完成那个任务非常容易,因为你可以生成你自己的renderkit-为一种特定显示技术的renderers的集合-然后配置到JSF里面。1.Components(组件)组件是Struts和JSF之间最大的区别。就像Swing一样,JSF提供丰富的底层构件去开发组件然后添加到标准的组件集。那些底层构件让你很容易的生成自己的组件并且和别人共享。现在我们到处都能看到自定义组件跳出来,比如说Oracle的ADF和MyFaces,两者都提供了丰富的组件集,就像javascript日历,tree等等。当然,组件只是一部分。典型的是,组件都和一个独立的renderer对应,这给我们带来了真正的好处(看第3条)。但是和JSF中的很多东西一样,你不一定要墨守成规。只要你愿意,你可以实现render自己的组件,虽然这样你会失去给组件加入别的renderer的能力。有很多只能意会不能言传啊,比如Renderer等。翻译得不好,大家可以去看看原文。原文出自DavidGeary'sBlog,原文地址为:http://jroller.com/comments/dgeary/Weblog/
     
      

  3.   

    (一)优缺点 
            1、 Struts 优点:业界“标准”(很多成功案例),学习资源丰富,HTML标签非常优秀缺点:ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成) ;
            2、 Spring MVC 优点:Lifecyle for overriding binding, validation, etc.;易于同其它View框架(Titles等)无缝集成,采用IOC便于测试缺点:使用人数少、jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器 
            3、 WebWork 优点:结构简单易于扩展、标签库易于定制、拦截器非常出色缺点:文档示例很少、客户端验证技术不成熟 ;
            4、 Tapestry 优点:很好用只要你能学会、Html模板、Healthy and smart user community 缺点:文档太概念,不利于编程,学习曲线太陡,不能测试 ;
            5、 JSF 优点:J2EE标准、易于开发、丰富的导航框架缺点:JSP标签差、技术不成熟、No single source for implementation。
            (二) 排名
            第一  Struts 由于许多问题已经被解决,使用它开发容易。HTML标签是它最优秀的地方。
            第二 Spring MVC 它也不错,但缺乏很好的表单标签。
            第三 WebWork 客户端验证技术很差。
            第四 Tapestry Matt Raible目前还没学会怎么使用它。
            第五 JSF 需要多听听开发人员的意见。
            (三)框架选择
            项目时间紧迫且没有太高要求,Struts是首选;对于大规模的企业级项目,考虑Tapestry,因为它的可重用组件;如果你是一名开源项目的开发人员,考虑WebWork,因为它要求你对它本身的运行机制要清楚(强迫你分析它的源代码) 
      

  4.   

    每种框架都有自己的优缺点,不过一般来说,jsf很有可能会替换struts,而spring是一种黏合剂框架,它能把很多种框架集合起来而充分对它们扬长避短,当然它自己本身也能干很多事。
      

  5.   

    我有一点.NET背景,比较喜欢JSF,觉得很方便.
    JSF+HIB+SPRING
      

  6.   

    我是学TAPESTRY的,是刚学的,还没有做过什么项目,谢谢楼主的讲解
      

  7.   

    jsf我也正在学习,好累啊
    调试起来很困难,有时候就是不知道那里报的错
    这是jsf需要改进的一个很大的方向