原文来源:http://blog.csdn.net/bjyfb/article/details/9000753
Web层面的框架学习了三个Struts1和2,SpringMVC,那他们之间肯定存在一个优劣和适用的环境,Struts1和2的异同点我已经做过对比《Struts1和Struts2》,这篇将对比下Struts2和SpringMVC的异同,下面数据基本来源于网络,本人是搜集整理所得,供大家参考。
一个项目使用什么样的技术,决定的因素很多,我所能想到的有:对系统的性能、开发的效率、团队学习的成本、业务场景等,下面尽量从这几个方面入手,来分析比较下他们之间存在的优劣。
首先说性能方面,通过一些测试人员的测试,对Jsp、Struts1、Struts2、SpringMVC的结论如下表:
名称 |
性能排名 |
结论 |
Jsp |
1 |
越原始效率越高 |
Struts1 |
2 |
采用单例Action模式,且本身的封装相比struts2简单,性能稳定高效。 |
SpringMVC |
2.5(略逊于struts1) |
springMVC有着不比struts2差的开发效率和解耦度,但性能却是struts2的好几倍。 |
Struts2 |
3 |
1. 由于采用值栈、OGNL表达式、拦截器等技术对请求参数的映射和返回结果进行了处理,另外还采用大量的标签库等,这些都增加了处理的时间; 2. struts2性能的瓶颈不在于它的多例Action模式 |
从以上性能角度来看,如果项目中使用框架,SpringMVC是首选;如果想把效能提升到最大,jsp是首选。
然后从开发效率来分析:
开发效率这点,大家做程序员的一般都会深有体会,越是靠后的产品,一般开发效率都会高一些,就像我们计算机语言的发展,从二进制到汇编语言,再到目前主流的java、C#等,都越来越接近人能理解的程度,开发效率越来越高。因此,从这个观点出发,得出的结论是:
由快到慢:SpringMVCand Strut2 > Struts1 > jsp
框架的出现很大程度就是为了提升开发效率,解决纯手工代码带来的不便,因此Struts1优于jsp毫无疑问;Struts2和SpringMVC出现的较晚,都是吸取了Struts1的经验教训而来。那Struts2和SpringMVC哪个的开发效率要更高一些呢?根据大家在网上的体会所得:
由高到低:SpringMVC> Struts2(存疑)
Springmvc可以认为已经100%零配置,但是Struts2并没有实现这点,SpringMVC高于Struts2具体理由公说公有理婆说婆有理,关于这两者的开发效率由于每个人对两者的熟悉程度不同,因此导致了不同的结果。在我看来,更愿意使用SpringMVC,如果项目中用到了Spring,那就更棒了。
团队学习成本:
Jsp当然是入门,如果这个都不懂,谈学习成本也毫无意义,从我个人来看,如果之前接触过Struts1和Spring,学习Struts2和SpringMVC的时间成本差不了多少,但是SpringMVC国内用的并不多,因此,相对来说SpringMVC的学习成本要大一些。
由大到小:SpringMVC> Struts2
大家可根据团队自身目前的情况,自由选择。上面这两个框架,不管学哪个,我认为Struts1都应该接触一下,这样才能更深的理解MVC框架设计的精妙之处。
业务场景,只要涉及到业务,就不能确定哪个框架好,哪个不好,因此,业务场景只能根据当前业务,加上对技术的深度理解,找到一款合适的框架为宜。
下面再贴一些Struts2和SpringMVC技术点的异同,其实,这些技术上的不同也正好反映在上面说到的几点中。
Struts2 |
Spring MVC |
类级别的拦截,一个类对应一个request上下文,很难实现restful url,而struts2的架构实现起来要费劲,因为action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了 |
方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上 spring3 mvc就容易实现restful url |
比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码读程序时带来麻烦;Struts2在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的 |
方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量 |
支持手动验证凭借validate方法和XWork验证框架 |
验证也是一个亮点,支持JSR303 处理ajax的请求更是方便只需一个注解@ResponseBody,然后直接返回响应文本即可 |
入口是filter |
入口是servlet |
目前所能整理出来的异同点只有这些,具体的感受需要大家自行尝试,下附的连接是一篇讨论Springmvc和Struts2的帖子,供大家参考。
相关推荐
spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 ...
总结来说,Struts1、Struts2和Spring MVC各有优劣,选择哪个框架主要取决于项目需求、团队熟悉程度以及对框架特性的偏好。在现代Java Web开发中,Spring MVC因其灵活性和强大的功能,成为更受欢迎的选择。
spring-webmvc-struts.jar对Struts和Spring整合时需要用到的包
接下来,Struts是另一款流行的MVC框架,虽然在Spring MVC广泛应用的现在,Struts的使用可能较少,但在本系统中,Struts可能被用来增强特定的控制器功能,或者作为Spring MVC的补充,提供额外的Action类和拦截器,以...
Spring MVC 和 Struts2.x 是两个广泛使用的Java Web开发框架,它们都在模型-视图-控制器(MVC)架构中提供了强大的支持。Spring MVC 以其灵活性、高效性和可扩展性在近年来逐渐受到开发者青睐,尤其是在Spring 3.0...
标题中的"spring-webmvc-struts.jar"和"aspectjweaver.jar"是两个重要的Java库文件,它们在Java Web开发中扮演着核心角色,特别是对于基于Spring框架的应用程序。现在让我们详细了解一下这两个库以及它们在实际开发...
Struts和Spring是Java Web开发中两种非常流行的MVC(Model-View-Controller)框架,它们都致力于解耦应用程序的业务逻辑和展示层,但各自有着不同的设计哲学和功能特性。 Struts是Apache软件基金会的一个开源项目,...
Spring MVC 和 Struts2.x 是两个广泛使用的Java Web开发中的MVC框架,它们各自具有不同的特点和优势。这里我们将深入探讨这两个框架的核心组件、工作原理以及它们之间的对比。 首先,让我们了解一下Spring MVC。...
在IT行业中,MVC(Model-View-Controller)和Struts2是两种广泛使用的Web应用程序开发框架,尤其在Java平台上。ACCP(Advanced Certified Computer Professional)5.0 Y2是某培训机构的一个课程版本,该课程可能涵盖...
标题中的"spring.jar"、"spring-webmvc-struts.jar"和"spring-webmvc.jar"都是Spring框架相关的Java库文件,通常以.jar结尾的文件是Java的归档文件,包含了类、资源和元数据,用于Java应用程序的运行。这些文件在...
spring-webmvc-struts-2.5.6-sources
相较于Struts2,Spring MVC避免了一些可能导致性能下降的特性,如值栈、OGNL表达式等。 二、Spring MVC核心类与接口:Spring MVC架构中包含许多核心组件,如DispatcherServlet、HandlerMapping、Controller、...
2. **性能**:Spring MVC 在性能方面优于 Struts,这得益于其更轻量级的设计和更好的优化。 3. **易用性**:两者都有各自的优点。Struts 由于历史悠久,文档和教程丰富,对于初学者来说上手更容易;而 Spring MVC ...
Spring3、Struts2和Ibatis的整合,构建了一个完整的MVC+持久层架构。Spring作为整个应用的调度中心,管理所有对象的生命周期,包括Struts2的Action和Ibatis的SqlSession。Struts2负责接收HTTP请求,调用Action执行...