Spring MVC和Struts2的比较的优点

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

Spring MVC和Struts2的区别:

  1. 核心控制器(前端控制器、预处理控制器):对于使用过mvc框架的人来说这个词应该不会陌生,核心控制器的主要用途是处理所有的请求,然后对那些特殊的请求 (控制器)统一的进行处理(字符编码、文件上传、参数接受、异常处理等等),spring mvc核心控制器是Servlet,而Struts2是Filter。
  2. 学习难度:Struts更加很多新的技术点,比如拦截器、值栈及OGNL表达式,学习成本较高,springmvc 比较简单,很较少的时间都能上手。
  3. 管理方式:大部分的公司的核心架构中,就会使用到spring,而spring mvc又是spring中的一个模块,所以spring对于spring mvc的控制器管理更加简单方便,而且提供了全 注解方式进行管理,各种功能的注解都比较全面,使用简单,而struts2需要采用XML很多的配置参数来管理(虽然也可以采用注解,但是几乎没有公司那 样使用)。
  4. 性能:spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter
    getter方法把request中的数据注入;struts2实际上是通过setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。
  5. 参数传递:Struts2中自身提供多种参数接受,其实都是通过(ValueStack)进行传递和赋值,而SpringMvc是通过方法的参数进行接收。
  6. 设计思想上:struts更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展。
  7. intercepter的实现机制:struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,所以我觉得论使用上来讲,spring mvc使用更加简洁,开发效率Spring MVC确实比struts2高。spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring3
    mvc就容易实现restful url。struts2是类级别的拦截,一个类对应一个request上下文;实现restful url要费劲,因为struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。spring3 mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。
  8. 另外,spring3 mvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可。送上一段代码:
    @RequestMapping(value=“/whitelists”)
    public String index(ModelMap map) {
        Account account = accountManager.getByDigitId(SecurityContextHolder.get().getDigitId());
        List groupList = groupManager.findAllGroup(account.getId());
        map.put(“account”, account);
        map.put(“groupList”, groupList);
        return “/group/group-index”;
    }
    // @ResponseBody ajax响应,处理Ajax请求也很方便
    @RequestMapping(value=“/whitelist/{whiteListId}/del”)
    @ResponseBody
    public String delete(@PathVariable Integer whiteListId) {
        whiteListManager.deleteWhiteList(whiteListId);
        return “success”;
    }
时间: 2024-11-09 03:11:50

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?Spring MVC流行的根本原因是什么?Spring MVC是不是只是在处理ajax的请求更是方便而已,还有没有其他优点? 针对以上问题,我从网上查了些资料,比较了一下Spring MVC和Struts2的优劣: 1.核心控制器(前端控制器.预处理控制器):对于使用过mvc框架的人来说这个词应该不会陌生,核心控制器的主要用途是处理所有的请求,然后对那些特殊的请求 (控制器)统一的进行处理(字符编码.文件上传.参数接受.异常处理等等),SpringM

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的区别

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上下文,所以方法直接基本上是独