1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。
2、由上边原因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码 读程序时带来麻烦,每次来了请求就创建一个Action,一个Action对象对应一个request上下文。
3、由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的。
4、 拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。
5、SpringMVC的入口是servlet,而Struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。
6、SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。
7、SpringMVC验证支持JSR303,处理起来相对更加灵活方便,而Struts2验证比较繁琐,感觉太烦乱。
8、spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。
9、 设计思想上,Struts2更加符合OOP的编程思想, SpringMVC就比较谨慎,在servlet上扩展。
10、SpringMVC开发效率和性能高于Struts2。
11、SpringMVC可以认为已经100%零配置。
Action是多实例的并非单例,也就是每次请求产生一个Action的对象。原因是:struts 2的Action中包含数据,例如你在页面填写的数据就会包含在Action的成员变量里面。如果Action是单实例的话,这些数据在多线程的环境下就会相互影响,例如造成别人填写的数据被你看到了。
而struts 1的Action是单实例的,因为它的数据保存在Form类中,多线程环境下,Action只负责处理一些逻辑,并没有数据,也就是大家把它当做一个工具使用。同样servlet也是单实例的。
进行配置:
1
@Controller
@Scope("prototype") 进行的多例配置
2 spring.xml
<bean id="hellocontorller" class="com.*.hellocontorller"
scope="prototype"></bean>
<!-- 实例化常量类 -->
<!-- lazy-init spring创建applicationContext的时候,spring欲初始化所有该作用域的实例。 加上lazy-init就可以避免预处理 -->
<bean class="com.sicdt.utils.ConstantsUtils" init-method="init" lazy-init="false" destroy-method="destory"/>
struts2
参数:全局方法都可用,可读性强,重用性比较高
springmvc
参数:方法参数
分享到:
相关推荐
struts2介绍、和springmvc对比,mybatis介绍和hibernate对比
SpringMVC与struts2比较及技术特点
SpringMVC与struts的区别简单易懂对比理解
springMVC+struts+hibernate整合简单的增删改查
这是使用springmvc+struts+mybatis的基础项目,初学者可以下载研究。
SSM-SpringMVC-Struts2基础框架
springmvc,struts,mybatis jar包
主要介绍了简单了解SpringMVC与Struts2的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java面试题51.SpringMVC和Struts2的不同.mp4
springmvc框架原理(掌握) 前端控制器、处理器映射器、处理器适配器、视图解析器 springmvc入门程序 目的:对前端控制器、处理器映射器、处理器适配器、视图解析器学习 ...springmvc和struts2的区别
springmvc和mybatis整合,springmvc和hibernate整合,struts2和mybatis整合,struts2和hibernate整合
SpringMVC MyBatis Struts Spring Hibernate全套教学视频【4.3G】 网盘下载地址 【付费下载之后的用户,可留言获取更多下载资源】
java面试宝典
javaweb开发框架5个最新版本放一起了,包括Hibernate5.3.1、mybatis-3.4.6、spring5.0.7、Struts2.5.16
Struts2和SpringMvc区别.md
Java Web框架例子合集(spring,springmvc,mybatis,struts2,hibernate)
springmvc与strtus2的区别
springMVC与Structs2的区别
android 六种单例模式源码介绍,反序列化解决方案,编译环境为android studio 3.0.1
传智播客框架笔记学习资料,只有pdf和doc文件,传智播客框架笔记学习资料,只有pdf和doc文件