打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SpringMVC与Struts2区别与比较总结

一、框架机制

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

二、拦截机制

1、Struts2

a、Struts2框架是类级别的拦截,每次请求就会创建一个Action[模型  多实例单线程],和Spring整合时Struts2的Action的作用域是原型模式(scope=prototype)prototype(否则会出现线程并发问题),然后通过setter,getter把request数据注入到属性(属性、模型、对象)。
b、Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。
c、Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了
 
2、SpringMVC
a、SpringMVC是方法级别的拦截,一个方法对应一个request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又和一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果通过Model/Map返回给框架。
b、在Spring整合时,SpringMVC的Controller[是控制器,不是模型  单实例多线程的] Bean默认单例模式Singleton,所以默认对所有的请求,只会创建一个Controller,没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@Scope注解修改。
三、性能方面
SpringMVC实现了零配置,由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。

而Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,所以,SpringMVC执行效率和性能高于Struts2,但是开发效率略比Struts2差一些。

四、拦截机制
Struts2有自己的拦截Interceptor机制,SpringMVC可以采用独立的Aop方式也有自己的拦截器AbstractInterceptor,但是Struts2的配置文件量还是比SpringMVC大。
五、配置方面
spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC类似的效果,但是需要xml配置的地方不少)。SpringMVC可以认为已经100%零配置。[javaConfig]

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

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
springMVC和struts2的对比
struts学习笔记
Spring MVC和Struts2的比较
Struts与Spring MVC的区别
struts源代码阅读(struts 的执行)
扩展struts
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服