对比Spring MVC和Struts2
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相关推荐
- Spring、Spring MVC、Struts2、、优缺点整理
Spring 及其优点 大部分项目都少不了Spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢 Spring是什么: Spring是一个轻量级的DI和AOP容器框架. 说它轻量 ...
- SpringMVC系列(十六)Spring MVC与Struts2的对比
• Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter • Spring MVC 会稍微比 Struts2 快些. Spring MVC 是基于方法设计, 而 St ...
- Spring MVC和Struts2
Web层面的框架学习了三个Struts1和2,SpringMVC,那他们之间肯定存在一个优劣和适用的环境,Struts1和2的异同点我已经做过对比<Struts1和Struts2>,这篇将 ...
- Spring MVC与Struts2对比
- Spring MVC 和 Spring 总结
1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合. 2). AOP编程的 ...
- Spring MVC 教程,快速入门,深入分析【转】
2019独角兽企业重金招聘Python工程师标准>>> 转自:赵磊 地址:http://elf8848.iteye.com 目录 一.前言 二.spring mvc 核心类与接口 ...
- spring mvc 思想
目录 一.前言 二.spring mvc 核心类与接口 三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说 ...
- Spring MVC 教程,快速入门,深入分析
目录 转载自:http://elf8848.iteye.com/blog/875830 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf 点击打开链接 SpringMVC核 ...
- spring mvc 总结
为什么80%的码农都做不了架构师?>>> 一.前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 ...
最新文章
- Science:比较基因组揭示银边鱼应对捕鱼行为的表型进化机制
- [Android疑难杂症]动态改变Background后Padding无效的问题
- cityscapes数据集_全景分割 UPSNet 源码分析 (1) - 数据格式
- AOP和IOC个人理解
- 结合我的创业经历,有一下3点感受
- 如何打造139团队(不同层次人员的选择与培养,大型研发团队,大型敏捷开发团队)...
- 2018年度报告单_2018年度最佳在线IT课程
- 两周,好多人的帮助解决select空列不显示的function
- 诺顿企业版密码遗失解决办法
- 苹果手机输入屏保后锁屏_苹果手机动态锁屏屏保怎么设置
- 面向未来的智慧道路解决方案与实践
- fullAvatarEditor富头像上传编辑器
- 2010版gmp 计算机系统,2010版GMP附录:计算机化系统 整体及条款解读
- [Deprecated!] Android开发案例 - 微博正文
- 远程升级单片机程序设计思路
- 前端token是什么?怎么进行封装使用
- Java代码实现奇数和偶数的判断
- java基础学习——Swing图形化用户界面编程
- Python在cmd下pip快速下载安装包的国内安装镜像
- 阿里云服务器qq邮箱无法推送问题