SpringMVC和Struts2的区别前端
1核心控制器(前端控制器,预处理控制器);对于使用过MVC框架的人来讲这个词应该不会陌生。核心控制器的主要用途处理全部的请求。而后对那些特殊的请求。统一的进行处理(字符编码,文件上传,参数接受,异常处理等等)spring mvc核心控制器是Servlet,而Struts2是Filterajax
2.控制器实例:SpringMVC会比Struts2快些(理论上),SpringMVC是基于方法的设计。而Struts2是基于对象,每次发一次请求都会实例一个Action,每一个Action都会被注入,属性,而Spring更像Servlet同样,只有一个实例,每次请求执行对应的方法便可(注意:因为是单例实例,因此应当避免全局变量的修改这样会残生线程安全问题)。spring
3.管理方式:大部门的公司的核心架构中。就会使用到spring而springmvc又是spring中的一个模块。因此spring对于springmvc控制器管理更加简单方便。并且提供了全注解方式进行管理,各类功能的注解都比较全面,使用简单,而Struts2须要采用xml不少的配置参数来管理(虽然也能够采用注解,可是几乎没有公司那么用)。json
4.参数传递:Struts2中自身提供多种参数接受。其实都是经过(ValueStack)进行传递和赋值。而SpringMVC是经过方法的参数进行接收。安全
五、学习难度:Struts2更加不少新技术点,好比拦截器,值栈以及OGNL表达式,学习成本比较高。SpringMVC比较简单,很较少时间上能够上手。restful
六、Interceptor的实现机制:struts2有以本身的Interceptor机制,spring mvc 用的是独立的AOP方式,这样致使struts的配置文件量仍是比spring mvc大,虽然struts的配置能继承,因此我以为论使用上来说。spring mvc使用更加简洁,开发效率确实Spring MVC确实比struts2高。spring mvc是方法级别的拦截,一个方法对应一个Request上下文,实现restful url要费尽,由于struts2 action 的一个方法能够对应一个url,而其类属性却被全部方法共享。这也就没法用注解或其余方式标识其所属方法了。spring mvc 的方法之间基本上独立的。独享Request,response数据,请求数据经过参数获取,处理结果经过ModelMap交回给框架方法之间不共享变量。而Struts2搞的就比较乱,虽然方法之间也是独立的。但其全部Action变量是共享的。这不会影响程序的运行,却给咱们编码,读程序带来了麻烦。架构
7.spring mvc 处理ajax请求,直接经过返回数据,方法中使用@reponseBody,Spring mvc 会自动帮咱们转换成json 数据、mvc