【问题标题】:Struts2 vs Spring 3 [closed]Struts2 与 Spring 3 [关闭]
【发布时间】:2011-07-04 16:11:09
【问题描述】:

有谁知道 Struts2 和 Spring 3 MVC 之间的区别。我知道 Struts 1 和 Spring 2.5 之间的区别,但是 Struts2 与 Spring 3 或其他相比有什么优势。

我试过在网上到处找,但到处都没有全面的答案。

【问题讨论】:

  • 春天的一个问题:有没有基于约定的配置? (也就是说,如果您按照约定命名所有内容,则不需要 xml 或注释)。

标签: java spring spring-mvc struts2


【解决方案1】:

Struts2 实际上是 WebWork 2 重命名为 Struts2。考虑一下 Struts 本质上利用自己的品牌名称来采用 WebWork 作为其新基础的事实,这应该向您表明,至少有一些人认为它非常引人注目——人们并不总是抛弃他们的自己的代码库在他们发行续集时重新开始。

也就是说,我不会告诉你 Struts2 比 Spring 3 MVC 更好/更差。底线是它们绝对具有可比性。

如果您想了解更多关于它们比较的详细信息,我建议您查看 Matt Raible 过去几年关于此主题的演示文稿:

http://raibledesigns.com/rd/entry/my_comparing_jvm_web_frameworks

http://static.raibledesigns.com/repository/presentations/ComparingJavaWebFrameworks-ApacheConUS2007.pdf

包括一个在不同程度上比较其中几个的电子表格:

http://spreadsheets.google.com/pub?key=0AtkkDCT2WDMXdC1HOEtnUHpCejJMbUhGeGJWUmh5dVE&hl=en&output=html

【讨论】:

    【解决方案2】:

    Struts2 和 Spring3 在许多方面都非常相似。两者都是面向动作的框架,在流程中也非常相似。Spring MVC 的出现是由于 Struts1 的所有已知限制。 但是当你选择 Struts2 和 Spring3 MVC 时,你可以区分的不多,两者都是精心设计和良好的框架。 将 Struts2 作为其基于 webwork 的框架,但对 webwork 有很多改进。一个主要优点是对 Struts2 的 UI 标记支持 关于 spring3 mvc,它同样优秀和强大的积极方面是它与 Spring 框架的良好且非常深入的集成。

    我们在少数项目和一些使用 Spring MVC 的项目中使用带有 Spring DI 和事务管理的 Struts2。 重要的是您的选择和您的品牌倾向。

    编辑

    在我看来,比较类似设计的框架并不是一个好习惯,最好提出您的需求,而不是根据您的需求分析哪个框架提供最好和非常相似的需求,而不是做简单的对比

    【讨论】:

      【解决方案3】:

      功能比较

      Struts 2

      • 可配置的 MVC 组件,存储在 struts.xml 文件中。如果您想更改任何内容,您可以在 xml 文件中轻松完成。

      • 基于 POJO 的操作。 Struts 2动作类是Plain Old Java Object,它阻止开发者实现任何接口或继承任何 类。

      • 支持 Ajax,用于发出异步请求。它只发送需要的字段数据,而不是提供不必要的 信息,最终提高性能。

      • 支持与 Hibernate、Spring、Tiles 等集成。

      • 无论您想使用 JSP、freemarker、velocity 还是其他任何东西,您都可以在 Struts 2 中使用不同类型的结果类型。

      • 您还可以利用各种标签,如 UI 标签、数据标签、控制标签等。

      • 为主题和模板提供了充足的支持。 Struts 2 支持三种不同的主题,包括 xhtml、simple 和 css_xhtml.

      Spring MVC

      • 角色划分清晰明了。无论是控制器、命令对象、表单对象还是其他任何东西,都可以轻松实现 在特殊对象的帮助下完成。

      • 借助控制器方法签名,利用适应性、非侵入性和灵活性。

      • 现在使用现有的业务对象作为命令或表单对象,而不是复制它们来扩展特定的框架基类。

      • 可自定义的绑定和验证将支持手动解析和转换为业务对象,而不是使用传统的字符串。

      • 灵活的模式转换可轻松与最新技术集成。

      • 可自定义的语言环境和主题解析,支持带有或不带有用于 JSTL 的 Spring 标记库的 JSP 等等。

      • 利用简单但功能强大的 JSP 标签库,称为 Spring 标签库。它为数据等各种功能提供支持 绑定和主题。


        优势比较

      Struts 2

      • 简化设计

      • 插件易用性

      • 简化的 ActionForm 和注释

      • 更好的标签功能

      • OGNL 集成

      • AJAX 支持

      Spring MVC

      • 控制器、JavaBeans 模型和视图之间的清晰分离在 Struts 中是不可能的。

      • 与 Struts 相比,Spring MVC 更加灵活。

      • Spring 可用于不同的平台,例如 Velocity、XLST 或各种其他视图技术。

      • 与 Spring 中的 ActionForm 不同,它直接绑定到域对象。

      • 与 Struts 相比,代码也更易于测试。

      • 它是一个完整的 J2EE 框架,由七个独立的层组成,简化了与其他框架的集成。

      • 它没有提供实现业务域和逻辑的框架,它帮助开发人员创建控制器和视图 应用程序。

      (来源http://www.cygnet-infotech.com/blog/struts-2-vs-springmvc

      【讨论】:

      【解决方案4】:

      我会以自以为是的方式回答,因为我没有太多使用 Spring MVC。

      使用struts2

      1)struts2 tags and 
      2)struts 2 plugins and 
      3)struts2 plugin framework using freemarker makes struts2-jquery-plugin and config-browser-plugin
      

      struts 2 约定允许您创建动作类没有甚至 注释 和 xml 中的零配置。这只是为了让它在纸上看起来不错,但是在所有真正的大型项目中,您都需要编写注释。 如果您在运行时迷失在注释中,有一种方法可以在开发模式下在浏览器中查找配置,请尝试 config-browser-plugin。

      请记住,Struts/spring MVC 仅由前端控制器的 Web 应用程序的一小部分组成。

      【讨论】:

        【解决方案5】:

        不要冷嘲热讽,但如果值得您花时间考虑选择框架,那么您也值得花时间为最重要的几个高级用户故事站稳脚跟。 Struts2 和 Spring MVC 3 都非常容易设置演示环境,即您可以在不到 5 分钟的时间内从 IDE 中获得一个 maven 原型。

        我参与了关于哪个框架更好的小组讨论,我真的相信再多的讨论都不值得花时间。在您的用例上下文中使用这些框架会为您提供更好的服务。

        【讨论】:

          【解决方案6】:

          如果您知道 struts 1 和 spring 2.5 之间的区别,请问问自己 struts 1 和 2 以及 spring 2.5 和 3 之间分别有什么区别。在后者中,通过验证、xml 编组、rest 等对 webmvc 进行了改进。参见 What's New in Spring 3.0,对于 struts,参见 What's new in Struts 2.0

          【讨论】:

          • Struts1 与 Struts2 的相似之处就像 JavaScript 与 Java 的相似之处。那就是他们共享相同的名称,但从那里结束。它们不共享相同的代码库。
          【解决方案7】:

          正如 Umesh 所说,spring3 MVC 的积极方面是它与 Spring 深度集成。 在我的一个项目中,我使用了专有的 DI 框架,因此 Struts2 是显而易见的选择(我们不希望两个 DI 框架一起使用)

          Struts2 是成熟且广泛使用的网络框架,拥有非常活跃的社区支持。 Spring3 是一个大框架,有很多模块,包括 spring mvc。

          【讨论】:

          • 你可能不想要两个 DI 框架!我在某处读到,struts 使用的依赖注入框架最终变成了 guice
          • Struts2 支持所有主要的 DI,并带有单独的插件。
          • 正确,Bob Lee 曾经是 Struts2 项目的贡献者,XWork 中的注入系统是 Guice 的早期版本。 Struts2 的一个优点是您可以通过覆盖 ObjectFactory 来插入任何 DI 框架。 Spring MVC 是否仅限于将 Spring 用于 DI?
          【解决方案8】:

          Struts 2 在过去两年中遭受了许多安全漏洞,应该考虑这一事实。 http://www.cvedetails.com/product/6117/Apache-Struts.html?vendor_id=45

          http://www.cvedetails.com/vendor/9664/Springsource.html

          【讨论】:

          • 这应该是评论,而不是答案。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-12
          • 2014-11-22
          • 2012-12-30
          • 1970-01-01
          • 2014-02-17
          • 2011-06-02
          • 2013-10-05
          相关资源
          最近更新 更多