Struts2与Spring 3

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

我尝试过遍寻networking,但是没有任何全面的答案。

Struts2实际上是把WebWork 2改名为Struts2。 想一想,Struts基本上利用自己的品牌名称来把WebWork作为新的基础,这应该告诉你,至less有一些人觉得这是非常引人注目的 – 一个并不总是扔掉他们的自己的代码库发布续集时重新开始。

也就是说,我不会告诉你,Struts2比Spring3 MVC更好/更差。 底线是,他们是绝对可比的。

如果你想了解他们如何比较的更多细节,我build议你查看过去几年中Matt Raible在这个话题上的陈述:

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

repository/presentations/ComparingJavaWebFrameworks-ApacheConUS2007.pdf

包括一个电子表格,比较几个不同程度的:

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

那么Struts2和Spring3在许多方面都非常相似。两者都是面向动作的框架,在stream程中也是一样的。由于Struts1的所有已知限制,Spring MVC出现了。 但是当你selectStruts2和Spring3 MVC的时候,你可以区分的不多,都是精心devise和优秀的框架。 Struts2作为其基于webwork的框架,但是对webwork有很大的改进。一个主要的优势是对于spring3 mvc的Struts2的UI标签的支持,同样好的和强大的积极的一面是它与Spring框架的良好和非常深入的整合。

我们在less数项目中使用Struts2和Spring DI以及一些使用Spring MVC的Transcationpipe理。 它只关乎你的select和你的品牌倾向。

编辑

在我看来,它不是一个很好的做法来比较像devise的框架,更好地提出你的要求什么是你的项目的要求比分析哪个框架提供最好和非常相似的要求根据您的需要,而不是做一个简单的比较

特征比较

Struts 2

  • 可configuration的MVC组件,存储在struts.xml文件中。 如果你想改变任何东西,你可以很容易地在XML文件中做到这一点。

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

  • 支持用于进行asynchronous请求的Ajax。 它只发送所需的现场数据而不是提供不必要的信息,最终提高了性能。

  • 支持与Hibernate,Spring,Tile等的集成。

  • 无论你想使用JSP,freemarker,velocity还是其他的东西,你都可以在Struts 2中使用不同types的结果types。

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

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

Spring MVC

  • 整齐明确的angular色分离。 无论是控制器,命令对象,表单对象还是其他任何东西,都可以通过专门的对象轻松实现。

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

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

  • 可定制的绑定和validation将启用手动parsing和转换为业务对象,而不是使用传统的string。

  • 灵活的模式转换使得易于与最新技术整合。

  • 可定制的语言环境和主题parsing,支持JSTL带有或不带有Spring标签库的JSP等等。

  • 利用来自simle,但function强大的JSP标签库称为Spring标签库。 它提供了对数据绑定和主题等各种function的支持。


    福利比较

Struts 2

  • 简化的devise

  • 易于使用插件

  • 简化的ActionForm和注释

  • 更好的标签function

  • OGNL集成

  • AJAX支持

Spring MVC

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

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

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

  • 在Spring中没有像ActionForm,但直接绑定到域对象。

  • 与Struts相比,代码也更具可测性。

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

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

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

我会以一种自以为是的方式回答,因为我没有多less使用过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中创build动作类甚至没有 注释和零configuration。 它只是为了使它看起来不错,但是在所有真正的大项目中,您都需要编写注释。 如果在运行时在注释中迷路了,有一种方法可以在dev模式下find浏览器中的configuration,请尝试config-browser-plugin。

请记住,Struts / spring MVC只包含Web应用程序的一小部分,只有前端控制器。

不要吝啬,但如果值得花时间考虑一个框架select,那么也值得花时间来对付最重要的几个高级用户故事。 Struts2和Spring MVC 3都可以很容易地设置演示环境,也就是说,在5分钟内就可以得到一个运行IDE的Maven原型。

我已经参与了关于哪个框架更好的小组讨论,我真的相信没有多less讨论是值得的。 在用例环境中使用框架可以更好地为您服务。

如果你知道支柱1和弹簧2.5之间的区别,那就问问自己,支柱1和2以及弹簧2.5和3之间有什么区别。 在后者中,还有webmvc的validation,xml编组,rest等。请参阅Spring 3.0中的新增function ,有关struts的信息,请参阅Struts 2.0中的新增function 。

正如Umesh所说,spring3 MVC的积极方面是它与Spring有着深度的融合。 在我的一个项目中,我使用了专有的DI框架,所以Struts2是显而易见的select(我们不希望将两个DI框架结合在一起)

Struts2是非常活跃的社区支持成熟和广泛使用的Web框架。 Spring3是包含spring mvc在内的许多模块的大框架。

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

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