Spring MVC和Struts2的比较

前几天说起我们为什么要用Spring MVC?Spring MVC流行的根本原因是什么?Spring MVC是不是只是在处理ajax的请求更是方便而已,还有没有其他优点?

针对以上问题,我从网上查了些资料,比较了一下Spring MVC和Struts2的优劣:

1、核心控制器(前端控制器、预处理控制器):对于使用过mvc框架的人来说这个词应该不会陌生,核心控制器的主要用途是处理所有的请求,然后对那些特殊的请求 (控制器)统一的进行处理(字符编码、文件上传、参数接受、异常处理等等),SpringMVC核心控制器是Servlet,而Struts2是 Filter。

2、学习难度:Struts更加很多新的技术点,比如拦截器、值栈及OGNL表达式,学习成本较高,SpringMVC 比较简单,很较少的时间都能上手。

3、管理方式:大部分的公司的核心架构中,就会使用到Spring,而SpringMVC又是Spring中的一个模块,所以spring对于SpringMVC的控制器管理更加简单方便,而且提供了全 注解方式进行管理,各种功能的注解都比较全面,使用简单,而struts2需要采用XML很多的配置参数来管理(虽然也可以采用注解,但是几乎没有公司那 样使用)。

4、性能:SpringMVC会稍微比Struts2快。SpringMVC是基于方法的设计,而Sturts2是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而SpringMVC基于方法,粒度更细,但要小心把握像在servlet控制数据一样。SpringMVC是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在SpringMVC中,一个方法对应一个request上下文。而Struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;Struts2实际上是通过setter getter方法与request打交道的;Struts2中,一个Action对象对应一个request上下文。

5、参数传递:Struts2中自身提供多种参数接受,其实都是通过(ValueStack)进行传递和赋值,而SpringMVC是通过方法的参数进行接收。

6、设计思想上:Struts2更加符合oop的编程思想, SpringMVC就比较谨慎,在Servlet上扩展。

7、intercepter的实现机制:Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式。这样导致Struts2的配置文件量还是比SpringMVC大,虽然Struts2的配置能继承,所以我觉得论使用上来讲,SpringMVC使用更加简洁,开发效率SpringMVC确实比Struts2高。SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url。Struts2是类级别的拦截,一个类对应一个request上下文;实现restful url要费劲,因为Struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,而Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。

8、另外,SpringMVC的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可。

9、用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置。spring3 mvc可以认为已经100%零配置了(除了配置spring mvc-servlet.xml外)

时间: 2024-10-12 09:26:59

Spring MVC和Struts2的比较的相关文章

Spring、Spring MVC、Struts2、、优缺点整理(转)

Spring 及其优点 大部分项目都少不了spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢 Spring是什么: Spring是一个轻量级的DI和AOP容器框架. 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应用一般不依赖于spring的类.   DI:称作依赖注入(Dependency Injection),和控制反转一个概念,具体的讲,当一个角色需要另外一个角色协助的时候,

Spring MVC与struts2的区别

Spring MVC与struts2的区别: 1.易用性Spring MVC上手简单,并且可以与Spring无缝结合,毕竟都是一个公司的产品,学习起来也比较简单,比如从前端给对象填充值,他的处理就比Struts2简单多了,再比如对Restful风格的URL的支持,这些Spring MVC都比Struts2做的好N倍. 2.安全性说到安全性,现在又爆出了上述漏洞.Spring MVC到目前为止还没有发现比较严重的漏洞. 3.可扩展性Spring MVC依靠Spring这颗大树,Spring的实力我

[学习笔记]spring mvc 与struts2比较

Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二) 在上一篇文章中我详细的介绍了如何搭建maven环境以及生成一个maven骨架的web项目,那么这章中我将讲述Spring MVC的流程结构,Spring MVC与Struts2的区别,以及例子中的一些配置文件的分析. 一.Spring MVC 3.0介绍 Spring MVC是一个典型的MVC框架,是Spring内置的Web框架,可以作为应用项目的展示层,继Spring 2.0对Spring

Spring MVC和Struts2的比较的优点

我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置.spring3 mvc可以认为已经100%零配置了(除了配置spring mvc-servlet.xml外). Spring MVC和Struts2的区别: 核心控制器(前端控制器.预处理控制器):对于使用过mvc框架的人来说这个词应该不会陌生,核心控制器的主要用途是处理所有的请求,然后对那些特殊的请求 (控制器)统一的进行处理(字符编码.文件上传.参数接受.异常处理等等),spring mvc核心控制器是Servlet

Spring MVC和Struts2的区别

1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能:spring会稍微比struts快.spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样.spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mv

Spring MVC和Struts2的区别(转)

1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能:spring会稍微比struts快.spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样.spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mv

Spring MVC和Struts2的比较(二)

1.Spring MVC的controller+command object模式比Struts2的Action模式更安全一些.而在Struts2中,自动数据绑定发生在Action对象上.这样,在Action类中任何有Set方法的属性都有可能被http request的参数覆盖,在设计Action类时如果不小心,就可能会产生安全隐患.比如某个身份认证方案可能会依赖于Action的某个属性,如role来判断用户是否具有访问该action的权限.这样,恶意用户可以通过在request参数中包含一个ro

SpringMVC系列(十六)Spring MVC与Struts2的对比

? Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter? Spring MVC 会稍微比 Struts2 快些. Spring MVC 是基于方法设计, 而 Sturts2 是基于类, 每次发一次请求都会实例一个 Action.? Spring MVC 使用更加简洁, 开发效率Spring MVC确实比 struts2 高: 支持 JSR303, 处理 ajax 的请求更方便,只需要使用注解即可完成? Struts2 的 OGNL 表达式使页面的开发效率相比S

Spring MVC 和 Struts2 的比较

SpringMVC与Struts2的比较 1:框架核心机制:SpringMVC(DispatcherServlet)采用Servlet实现,Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现.Filter在容器启动之后即初始化:服务停止以后坠毁,晚于Servlet.Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁. 2:拦截机制 a.SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,所以方法直接基本上是独