一、框架机制

1、Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采用Servlet实现。
2、Filter在容器启动之后即初始化;服务停止以后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁。

二、拦截机制

1、Struts2

a、Struts2框架是类级别的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype(否则会出现线程并发问题),然后通过setter,getter吧request数据注入到属性。
b、Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。
c、Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了

2、SpringMVC
a、SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果通过ModeMap返回给框架。
b、在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的请求,只会创建一个Controller,有应为没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@Scope注解修改。

三、性能方面
SpringMVC实现了零配置,由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。而Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,所以,SpringMVC开发效率和性能高于Struts2。

四、拦截机制
Struts2有自己的拦截Interceptor机制,SpringMVC这是用的是独立的Aop方式,这样导致Struts2的配置文件量还是比SpringMVC大。

五、配置方面
spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。
SpringMVC可以认为已经100%零配置。

六、设计思想
Struts2更加符合OOP的编程思想, SpringMVC就比较谨慎,在servlet上扩展。

七、集成方面
SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。

转载于:https://www.cnblogs.com/pan-my/p/10383094.html

struts2和springmvc的区别相关推荐

  1. Struts2和SpringMVC简单配置以及区别总结

    Struts2: struts 2 是一个基于MVC(mode-view-con)设计模式的Web应用框架,是由Struts1和WebWork两个经典框架发展而来的. 工作流程: 1客户端浏览器发出H ...

  2. struts1,struts2,springMVC对比

    struts1,struts2,springMVC对比 [参考原文:http://blog.csdn.net/xiaokui008/article/details/8980429] Struts1官方 ...

  3. Struts1、Struts2及SpringMVC对比

    Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 简 ...

  4. Spring是什么?SpringMVC是什么?Spring和springMVC的区别?

    Spring:Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. Spring的两大核心AOP与IOC,可以单独用于任何应用,包括与Struts等MVC框架与Hibernat ...

  5. 三层架构,Struts2,SpringMVC实现原理图

    三层架构,Struts2,SpringMVC实现原理图 三层架构实现原理 Struts2实现原理 SpringMVC实现原理 转载于:https://www.cnblogs.com/xdzy/p/99 ...

  6. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    2019独角兽企业重金招聘Python工程师标准>>> 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制 ...

  7. Struts2、SpringMVC、Servlet(Jsp)性能对比 测试 。 Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照...

    2019独角兽企业重金招聘Python工程师标准>>> Struts2.SpringMVC.Servlet(Jsp)性能对比 测试 . Servlet的性能应该是最好的,可以做为参考 ...

  8. java开发web使用struts2,springMVC和spring,Jquery的理由?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2 迁移到springMVC,我突然有了一个新的 ...

  9. Spring与SpringMVC的区别

    Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring. 简单点的话可以将SpringMVC类比于Strut ...

最新文章

  1. 什么是Scala的收益?
  2. MySQL如何找到表与表之间的关系?
  3. html5 判断手机电脑,H5_0006:JS判断PC,平板,手机平台的方法
  4. 编程之美-程序改错方法整理
  5. [ARM异常]-ARM Core中与中断相关的寄存器
  6. java泛型程序设计——反射和泛型
  7. Stackoverflow的见解:投票最多的是Spring 4问题
  8. 使用ITEXT操作PDF文件
  9. 特别推荐:系统性能提升优先法宝 | 缓存应用实践
  10. 安卓隐藏摄像_【快讯:诺基亚发布三款安卓机;全面屏手机的最终形态,目标是去掉摄像头;iPhone 打电话不息屏或挂断电话后不亮屏是什么问题?】...
  11. filter以及reduce的用法
  12. 初学Sockets编程(四) 发送和接收数据
  13. 关于WIN10下NVIDIA安装驱动后没有控制面板的解决办法
  14. 教程|最新空白昵称与透明头像设置方法教程,让自己在微信中隐藏掉
  15. 3 计算机网络的主要功能,计算机网络的功能主要有哪些?
  16. 图说当下——人生感悟
  17. python:2019新年贺词的词云制作以及基于TF-IDF的关键词提取
  18. 英伟达发布528.02 WHQL 新驱动,支持4070 Ti
  19. C语言 switch语句举例说明(类比坐电梯来理解)
  20. JS + 递归实现细胞分裂

热门文章

  1. QEMU KVM 虚拟机移植之性能提高篇小结(android 虚拟机双系统方案)
  2. 微信终端跨平台组件 Mars 系列(三)连接超时与IPPort排序
  3. VNC over reverse SSH
  4. 【译】Getting Up to Speed on Ethereum
  5. android WebView详解,常见漏洞详解和安全源码(上)
  6. 挖洞经验 | 看我如何发现“小火车托马斯”智能玩具APP聊天应用漏洞
  7. 区块链学堂(6):以太坊生产网络/测试网络/私有网络
  8. PaddlePaddle, TensorFlow, MXNet, Caffe2 , PyTorch五大深度学习框架2017-10最新评测
  9. 360脱壳-native函数还原笔记-2017-06-25
  10. es创建索引库,无法使用InetSocketTransportAddress