Springmvc与Struts区别?

在一个技术群里看到机器人解释的两者区别,在此Mark下。html

1、框架机制spring

spring mvc 和 struts2的加载机制不一样:spring mvc的入口是servlet,而struts2是filter。编程

一、Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采用Servlet实现。安全

二、Filter在容器启动以后即初始化;服务中止之后销毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务中止后销毁。并发

2、拦截机制mvc

一、Struts2框架

a、Struts2框架是类级别的拦截,每次请求就会建立一个Action,和Spring整合时Struts2的ActionBean注入做用域是原型模式prototype(不然会出现线程并发问题),而后经过setter,getter吧request数据注入到属性。性能

b、Struts2中,一个Action对应一个request,response上下文,在接收参数时,能够经过属性接收,这说明属性参数是让多个方法共享的。url

c、Struts2中Action的一个方法能够对应一个url,而其类属性却被全部方法共享,这也就没法用注解或其余方式标识其所属方法了spa

二、SpringMVC

a、SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,因此方法直接基本上是独立的,独享request,response数据。而每一个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果经过ModeMap返回给框架。

b、在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,因此默认对全部的请求,只会建立一个Controller,有应为没有共享的属性,因此是线程安全的,若是要改变默认的做用域,须要添加@Scope注解修改。

3、性能方面

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

4、拦截机制

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

5、配置方面

spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(固然Struts2也能够经过不一样的目录结构和相关配置作到SpringMVC同样的效果,可是须要xml配置的地方很多)。
SpringMVC能够认为已经100%零配置。

6、设计思想

Struts2更加符合OOP的编程思想, SpringMVC就比较谨慎,在servlet上扩展。

7、集成方面

SpringMVC集成了Ajax,使用很是方便,只需一个注解@ResponseBody就能够实现,而后直接返回响应文本便可,而Struts2拦截器集成了Ajax,在Action中处理时通常必须安装插件或者本身写代码集成进去,使用起来也相对不方便。

原文出处:https://www.cnblogs.com/Jashinck/p/10412424.html

相关文章
相关标签/搜索