Struts2框架和SpringMvc框架的区别

Struts2框架和SpringMvc框架的区别html

1、拦截机制的不一样
  Struts2是类级别的拦截,每次请求就会建立一个Action,和Spring整合时Struts2的ActionBean注入做用域是原型模式
prototype,而后经过setter,getter吧request数据注入到属性。Struts2中,一个Action对应一个request,response上下
文,在接收参数时,能够经过属性接收,这说明属性参数是让多个方法共享的。Struts2中Action的一个方法能够对应一个url,
而其类属性却被全部方法共享,这也就没法用注解或其余方式标识其所属方法了,只能设计为多例。java

  SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,因此方法直接基本上是独立的,独享request,response
数据。而每一个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果经过ModeMap返回给框
架。在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,因此默认对全部的请求,只会建立一个Controller,
有应为没有共享的属性,因此是线程安全的,若是要改变默认的做用域,须要添加@Scope注解修改。spring

  Struts2有本身的拦截Interceptor机制,SpringMVC这是用的是独立的Aop方式,这样致使Struts2的配置文件量仍是比SpringMVC
大。安全

2、底层框架的不一样
  Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采用Servlet实现。
Filter在容器启动以后即初始化;服务中止之后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务
中止后销毁。框架

3、性能方面
  Struts2是类级别的拦截,每次请求对应实例一个新的Action,须要加载全部的属性值注入,SpringMVC实现了零配置,
因为SpringMVC基于方法的拦截,有加载一次单例模式bean注入。因此,SpringMVC开发效率和性能高于Struts2。函数

4、配置方面
  spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高。性能

附注:url

拦截器与过滤器的区别
  拦截器是基于java的反射机制的,而过滤器是基于函数回调。
  拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
  拦截器只能对action请求起做用,而过滤器则能够对几乎全部的请求起做用。
  拦截器能够访问action上下文、值栈里的对象,而过滤器不能访问。
  在action的生命周期中,拦截器能够屡次被调用,而过滤器只能在容器初始化时被调用一次spa

原文出处:https://www.cnblogs.com/Zzzzn/p/11732232.htmlprototype

相关文章
相关标签/搜索