Struts2 和 SpringMVC 的区别?

发布时间:2024-10-14 点击:58
struts2 和 springmvc 的区别?
一、框架机制
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%%u96f6配置。
六、设计思想
struts2更加符合oop的编程思想, springmvc就比较谨慎,在servlet上扩展。
七、集成方面
springmvc集成了ajax,使用非常方便,只需一个注解@responsebody就可以实现,然后直接返回响应文本即可,而struts2拦截器集成了ajax,在action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。
推荐教程:《php》《java教程》

虚拟主机如何暂停
请问如何在手机端或者邮箱客户端收取到被拦截到邮件
备案域名是否需要收费吗
云服务器租用具备哪些条件
独享为什么我的上有其他两个站点
请问一下如果我备案这个域名
虚拟主机系统
OSCAR开源产业大会重磅来袭,六大亮点抢先看!