zoukankan      html  css  js  c++  java
  • spring3mvc与struts2比较

    目前企业中使用SpringMvc的比例已经远远超过Struts2,那么两者到底有什么区别,是很多初学者比较关注的问题,下面我们就来对SpringMvc和Struts2进行各方面的比较:

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

    2.控制器实例:Spring Mvc会比Struts快一些(理论上)。Spring Mvc是基于方法设计,而Sturts是基于对象,每次发一次请求都会实例一个action,每个action都会被注入   属性,而Spring更像Servlet一样,只有一个实例,每次请求执行对应的方法即可(注意:由于是单例实例,所以应当避免全局变量的修改,这样会产生线程安全问题)。

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

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

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

    6.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变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。

    7.spring mvc处理ajax请求,直接通过返回数据,方法中使用注解@ResponseBody,spring mvc自动帮我们对象转换为JSON数据。

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

    比较了一下strus2与spring3 mvc的差别 

    ============================================ 
    struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入
    struts2实际上是通过setter getter方法与request打交道的 
    struts2中,一个Action对象对应一个request上下文 

    spring3 mvc不同,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去
    在spring3mvc中,一个方法对应一个request上下文 

    好了 我们来整理一下 
    struts2是类级别的拦截, 一个类对应一个request上下文, 
    springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
    所以说从架构本身上 spring3 mvc就容易实现restful url 
    而struts2的架构实现起来要费劲 
    因为struts2 action的一个方法可以对应一个url 
    而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了 

    =================================== 
    spring3mvc的方法之间基本上独立的,独享request response数据 
    请求数据通过参数获取,处理结果通过ModelMap交回给框架 
    方法之间不共享变量 

    而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的 
    这不会影响程序运行,却给我们编码 读程序时带来麻烦 

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

  • 相关阅读:
    Sample XPS Documents Download
    触发器中的inserted表和deleted表
    Using freewheel.labs.autodesk.com to auto generate preview images of DWF files on your web site
    解除SQL对组件"Ad Hoc Distributed Queries"的"STATEMENT'OpenRowset OpenDatasource"的访问
    读写xps
    XPS文件,在Windows XP下的打开查看阅读和打印方法。
    Learning to Reference Inserted and Deleted Tables
    Get value from updated, inserted and deleted
    Reinstall Microsoft Helper Viewer
    如何查找文件的IFilter
  • 原文地址:https://www.cnblogs.com/wujixing/p/5593371.html
Copyright © 2011-2022 走看看