Spring MVC和Struts MVC的区别

48

Spring MVC和Struts MVC的主要区别是什么?


2
你想要将哪个版本的Struts与Spring MVC进行比较? - Buhake Sindi
1
如果您对Spring MVC感兴趣,请阅读我的博客文章http://blog.rafaelsanches.com/2012/02/02/spring-mvc-velocity-dcevm/。 - Rafael Sanches
6个回答

42

Spring MVC 和 Struts 的主要区别在于: Spring MVC 是一种松耦合框架,而 Struts 则是一种紧耦合框架。对于企业应用程序,您需要将应用程序构建为松耦合状态,以使应用程序更具可重用性、弹性和分布式。


依赖注入 - Faisal Naseer
4
可以为他们提供松耦合和紧耦合的例子吗? - Aritz
Struts 2 不是紧密耦合的。 - frank

22
如果你想比较Spring MVC和Struts,考虑以下Spring MVC相对于Struts的优势:
  1. Spring提供了控制器、JavaBean模型和视图之间非常清晰的分离。
  2. Spring的MVC非常灵活。与Struts强制将Action和Form对象转换为具体继承不同(因此夺走了你在Java中使用具体继承的唯一机会),Spring MVC完全基于接口。此外,Spring MVC框架的几乎每个部分都可以通过插入自己的接口进行配置。当然,我们也提供了方便的类作为实现选项。
  3. Spring像WebWork一样提供拦截器和控制器,使得易于分离出适用于处理多个请求的通用行为。
  4. Spring MVC真正地没有特定的视图。如果你不想使用JSP,则不会被推到使用JSP。你可以使用Velocity、XLST或其他视图技术。如果你想使用自定义的视图机制,例如自己的模板语言,则可以轻松地实现Spring View接口以集成它。
  5. Spring控制器和任何其他对象一样,是通过IoC进行配置的。这使得它们易于测试,并且与Spring管理的其他对象美观地集成。
  6. 与Struts Web层相比,Spring MVC Web层通常更易于测试,因为避免了强制具体继承和控制器对分发器Servlet的明确依赖。
  7. Web层变成了业务对象层的薄层。这鼓励了良好的实践。Struts和其他专门的Web框架让你自己来实现业务对象;Spring为应用程序的所有层提供了一个集成框架。

你能在Spring MVC中使用HAML吗?那真是锦上添花! - Chloe
2
这听起来像是一个有偏见的观点。我相信Struts相对于Spring也有其优势。 - Matt

11
主要区别在于strutsspring MVC之间的差异在于面向切面编程(AOP)和面向对象编程(OOP)之间的差异。
Spring通过使用依赖注入使应用程序松散耦合。Spring框架的核心是IoC容器。
OOP可以做到AOP所做的一切,但采用不同的方法。换句话说,AOP通过提供另一种思考程序结构的方式来补充OOP。
实际上,当您想要对许多文件应用相同的更改时,使用Struts添加大量文件的相同代码会很繁琐。相反,Spring将新更改编写到其他位置并注入到文件中。
AOP的一些相关术语是横切关注点、切面、依赖注入...

感谢您提供的信息。 - Krishna

8

Spring的Web MVC框架是围绕一个DispatcherServlet设计的,它将请求分派到处理程序,并具有可配置的处理程序映射、视图解析、区域设置和主题解析以及支持上传文件。默认处理程序是一个非常简单的Controller接口,只提供一个ModelAndView handleRequest(request,response)方法。这已经可以用于应用程序控制器,但您会更喜欢包含的实现层次结构,例如AbstractController、AbstractCommandController和SimpleFormController。应用程序控制器通常是这些子类。请注意,您可以选择适当的基类:如果没有表单,则不需要表单控制器。这是与Struts的主要区别。


6

Spring MVC与Spring深度集成,而Struts MVC则不是。


1

Spring提供了控制器、JavaBean模型和视图之间非常清晰的分离。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接