您好,欢迎访问一九零五行业门户网

控制层SpringMVC和Struts2的区别

我们现在流行的常用的mvc层,控制层controller层的框架主要有struts2和springmvc两个框架,分别对应着action和controller。那么springmvc和struts的主要区别有那些呢?
一、框架机制
       我们知道struts2采用filter实现,而springmvc则采用servlet实现。
       struts2使用strutsprepareandexecutefilter,而springmvc使用dispatcherservlet。filter是一种特殊的servlet。filter在容器启动之后即初始化;服务停止以后坠毁,晚于servlet。servlet在是在调用时初始化,先于filter调用;服务停止后坠毁。
二、拦截机制
      1、struts2
struts2框架是类级别的拦截,每次请求就会创建一个action,和spring整合时struts2的action bean注入作用域是原型模式prototype(否则会出现线程并发问题),然后通过setter,getter吧request数据注入到属性。
     struts2中,一个action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。
2、springmvc
      springmvc是方法级别的拦截,一个方法对应一个request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果通过modemap返回给框架。
在spring整合时,springmvc的controller bean默认单例模式singleton,所以默认对所有的请求,只会创建一个controller,有应为没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@scope注解修改。
三、性能方面
      springmvc实现了零配置,由于springmvc基于方法的拦截,有加载一次单例模式bean注入。而struts2是类级别的拦截,每次请求对应实例一个新的action,需要加载所有的属性值注入,所以决定了springmvc更加快于struts2。
四、拦截机制
      struts2有自己的拦截interceptor机制,springmvc这是用的是独立的aop方式。
以上就是控制层springmvc和struts2的区别的内容。
其它类似信息

推荐信息