博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2跟SpringMVC的区别
阅读量:4496 次
发布时间:2019-06-08

本文共 1320 字,大约阅读时间需要 4 分钟。

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。

 

部分参考来自

转载于:https://www.cnblogs.com/convict/p/10374384.html

你可能感兴趣的文章
蓝瘦香菇
查看>>
关于数组和List之间相互转换的方法
查看>>
Hybrid开发站点
查看>>
2014-软件工程基础-总结
查看>>
[linux]segvcatch简单使用
查看>>
webpack之傻瓜式教程及前端自动化入门
查看>>
Python学习-5.Python的变量与数据类型及字符串的分割与连接
查看>>
【TypeScript】TypeScript 学习 2——接口
查看>>
Failed to sync Gradle project 'XX'错误解决
查看>>
vue-router 重难点总结笔记
查看>>
GDI+绘图
查看>>
团队项目冲刺第七天
查看>>
数据库的持续集成和版本控制
查看>>
nginx反向代理nginx,RealServer日志打印真实ip
查看>>
Visual Studio蛋疼问题解决(1)
查看>>
98%的人没解出的德国面试逻辑题
查看>>
mysql 复制表结构 / 从结果中导入数据到新表
查看>>
fiddler---使用方法2--抓取其他电脑数据包
查看>>
python基础教程——切片
查看>>
android 获取坐标【转】
查看>>