SpringMVC和Struts2 的区别

如题所述

第1个回答  2016-08-09
第一,S2基于注解配置的需要写在struts.xml中的不比SpringMVC多。并且,S2也是基于默契编程的,和Spring中注解一样,你可以使用@Resource("想要指定的名字")或@Resource来配置。在Servlet3+环境,Spring可以真正的0配置(编程式),S2的配置剩下的配置可不可以配到(WebApplicationInitializer),下我没试。

第二,性能,说Spring比Struts2快可能是误把他用在页面处理上了。并且,Strut2拦截的是Action,是类级别还是方法级别取决于Action是怎么配的,和SpringMVC区别不大,至于每次请求都创建Action楼主理解错了。默认(使用Spring的@Scope注解)的是单例的并非每次都创建,所以才用@Scope("prototype")强制每次访问都创建一个新的来保证线程安全(牺牲性能)。

第三,参数传递确实存在共存的问题。@Scope("prototype")可以解决一部分。剩下的,如果在一个类中有多个Action,又有多个参数,可能会有A Action需要用到的参数A 而B Action不需要,而A、B Action都有操作A参数的能力,这是存在的问题。所以,Action的组织方式需要好好考虑,在一个Controller中配置的Action尽量REST化,每个Controller只解决一个资源的相关操作,不要把不相干的操作混合到一起。这样参数共享问题应该就是一个资源在不同状态下值的表现形式地异化。

第四,Strut2与Web容器解耦,它主要作为Controller,去处理请求和响应请求。

第五,intercepter 方面如果不是自定义的,Struts2默认的性能问题同上。如果自定义的可以使用Spring,SpringMVC也是Spring+SpringMVC才强大的,Struts2只是替换了部分功能而已而非主导,很少有单纯使用Struts2的吧。Ajax我还没研究,不知道Struts2 有没有插件,但是有JSON插件很方便。
最后,他俩可共存。。。

更多相关内容可参考http://www.viiboo.cn
相似回答