1. 拦截机制不同

  Struts2是类级别的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype,然后通过setter,getter吧request数据注入到属性。Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了,只能设计为多例。

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

2. 底层实现的不同

  Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现

  SpringMVC(DispatcherServlet)采用Servlet实现

  Filter在容器启动之后即初始化;服务停止以后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁。

3. 拦截机制不同

  Struts2有自己的拦截器机制 interceptor

  SpringMVC用的是独立的AOP方式

4. 与ajax的集成使用方式不同

  Struts2则需要自己手动将返回值数据转换成json格式,再手动写回浏览器。返回 NONE

  SpringMVC只需要在交互方法上加上@ResponseBody即可在返回值中返回数据,spring MVC会自动将返回值数据转换成json数据

5. 数据存取方式不同

  Struts2采用的是值栈存储请求以及响应数据,OGNL存取数据

  SpringMVC采用request来解析请求内容,然后由其内部的getParameter给方法中形参赋值,再把后台处理过的数据通过ModelAndView对象存储,Model存储数据,View存储返回的页面,再把对象通过request传输到页面去

6. 性能方面

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

部分参考来自原链接

最新文章

  1. 小吐槽Toolbar
  2. objective c, protocol
  3. DEDECMS网站数据备份还原教程
  4. mybatis数据库基本配置包括数据源事物类型等
  5. 解读Cardinality Estimation<基数估计>算法(第一部分:基本概念)
  6. 解决Win8不能上网攻略第二版!三步秒杀原驱动
  7. QT程序启动界面的使用
  8. Carmack在QUAKE3中使用的计算平方根的函数
  9. CGI编程学习----查询2000W开房数据
  10. python 数组过滤
  11. 关于oracle数据库(2)
  12. Bootstrap-table使用记录(转)
  13. PyTorch教程之Neural Networks
  14. linux dd使用记录
  15. Android艺术开发探索第三章——View的事件体系(上)
  16. react-navigation使用之嵌套和跳转
  17. flink部署操作-flink standalone集群安装部署
  18. Django回顾
  19. python 基础知识点二
  20. python 多个脚本

热门文章

  1. Flutter 让你的Dialog脱胎换骨吧!(Attach,Dialog,Loading,Toast)
  2. 初识python 之 ImportError: No module named _ssl
  3. hive 之 将excel数据导入hive中 : excel 转 txt
  4. Go标准库之html/template
  5. hadoop入门到实战(6)hive常用优化方法总结
  6. Flowable实战(五)表单和流程变量
  7. RHCSA 第七天
  8. 触发器中获取sql
  9. Spark-寒假-实验2
  10. 根据happens-before法则借助同步