Spring MVC和Struts2框架都是时下比较流行的框架,于是乎很多人就把两者拿来比较,到底孰优孰劣。本文,我们就来对比Spring MVC和Struts2。
一、相同点
Spring MVC和Struts2框架的功能相似,也是实现视图层和控制层的分离,使得软件耦合度降低。并且,Spring MVC是Spring内置的Spring web框架,开发者可以在自己的项目中自由选择自己想要整合的Spring web框架,可以在Spring中整合Spring内置Spring web框架Spring MVC,也可以在Spring中整合第三方web框架如Struts2.
Struts2和Spring MVC都是web框架,工程中引入它们的目的都是将视图层和控制层分离,使得代码进一步解耦。只不过这两个开源项目的开发者不同,所以工作机制上也会有稍许差别。Spring MVC是Spring项目的内置web框架,而Struts2则和Spring组织没有直接的关联,至于开发者自己做项目时应该选择Spring MVC还是应该选择Struts2,这就要依据开发者所负责的实际项目去选择了。(Spring不仅支持其内置web框架Spring MVC,它还支持三方web框架如Struts2,这就使得开发者的选择更加灵活)
二、不同点
1.底层实现机制不同:spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。
2.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。
3.由上边原因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码 读程序时带来麻烦,每次来了请求就创建一个Action,一个Action对象对应一个request上下文。
4.设计思想不同,struts更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展。
5.由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的。
6.拦截器实现机制不同,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。
7.SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。
8.SpringMVC验证支持JSR303,处理起来相对更加灵活方便,而Struts2验证比较繁琐。
9.Spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然10.Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。
11.SpringMVC开发效率和性能高于Struts2。11、SpringMVC可以认为已经100%零配置。
12.SpringMVC开发效率和性能高于Struts2。
我们可以看到,在JDK1.5普及之后,Annotation作为一种新兴的Java语法,逐渐被大家熟知和应用。这一点上SpringMVC紧跟了时代的潮流,直接用于请求-响应的映射。而Struts2却迟迟无法在单一配置源的问题上形成突破。因为Spring的口碑和影响力也客观程度上加深了大家对SpirngMVC是技术领导者的印象。所以说,在某种程度上,对比SpringMVC和Struts2,SpringMVC略胜一筹。

对比Spring MVC和Struts2相关推荐

  1. Spring、Spring MVC、Struts2、、优缺点整理

    Spring 及其优点 大部分项目都少不了Spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢 Spring是什么: Spring是一个轻量级的DI和AOP容器框架. 说它轻量 ...

  2. SpringMVC系列(十六)Spring MVC与Struts2的对比

    • Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter • Spring MVC 会稍微比 Struts2 快些. Spring MVC 是基于方法设计, 而 St ...

  3. Spring MVC和Struts2

    Web层面的框架学习了三个Struts1和2,SpringMVC,那他们之间肯定存在一个优劣和适用的环境,Struts1和2的异同点我已经做过对比<Struts1和Struts2>,这篇将 ...

  4. Spring MVC与Struts2对比

  5. Spring MVC 和 Spring 总结

    1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合. 2). AOP编程的 ...

  6. Spring MVC 教程,快速入门,深入分析【转】

    2019独角兽企业重金招聘Python工程师标准>>> 转自:赵磊 地址:http://elf8848.iteye.com 目录  一.前言 二.spring mvc 核心类与接口 ...

  7. spring mvc 思想

    目录 一.前言 二.spring mvc 核心类与接口 三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说 ...

  8. Spring MVC 教程,快速入门,深入分析

    目录  转载自:http://elf8848.iteye.com/blog/875830 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf 点击打开链接 SpringMVC核 ...

  9. spring mvc 总结

    为什么80%的码农都做不了架构师?>>>    一.前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 ...

最新文章

  1. Science:比较基因组揭示银边鱼应对捕鱼行为的表型进化机制
  2. [Android疑难杂症]动态改变Background后Padding无效的问题
  3. cityscapes数据集_全景分割 UPSNet 源码分析 (1) - 数据格式
  4. AOP和IOC个人理解
  5. 结合我的创业经历,有一下3点感受
  6. 如何打造139团队(不同层次人员的选择与培养,大型研发团队,大型敏捷开发团队)...
  7. 2018年度报告单_2018年度最佳在线IT课程
  8. 两周,好多人的帮助解决select空列不显示的function
  9. 诺顿企业版密码遗失解决办法
  10. 苹果手机输入屏保后锁屏_苹果手机动态锁屏屏保怎么设置
  11. 面向未来的智慧道路解决方案与实践
  12. fullAvatarEditor富头像上传编辑器
  13. 2010版gmp 计算机系统,2010版GMP附录:计算机化系统 整体及条款解读
  14. [Deprecated!] Android开发案例 - 微博正文
  15. 远程升级单片机程序设计思路
  16. 前端token是什么?怎么进行封装使用
  17. Java代码实现奇数和偶数的判断
  18. java基础学习——Swing图形化用户界面编程
  19. Python在cmd下pip快速下载安装包的国内安装镜像
  20. 阿里云服务器qq邮箱无法推送问题

热门文章

  1. 五步搭建属于自己的个人网站
  2. 量子计算机与人脑接口,首次实现25个量子接口之间量子纠缠 清华刷新纪录
  3. 银行卡的交易与结算流程(转)
  4. arduino之灯带编程
  5. 基于ssm开发的图书管理员系统
  6. WIN10环境下安装ubuntu关于GPT+legacy+无法启动ubuntu+无法启动WIN10的问题解决方法
  7. 记互联网创业公司二三事
  8. 用JGroups实现一个分布式任务分发系统
  9. 【认证系统】win7主题下载
  10. Webpack3之雪碧图插件(WEBPACK-SPRITESMITH配置简述)