这两个框架可谓Java中的经典,Java开发必懂的框架,这两天在面试中又问道两者的异同。这里简单做了整理供大家參考交流。

概念:

Spring MVC属于SpringFrameWork的兴许产品。已经融合在Spring Web Flow里面。

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC架构,从而在使用Spring进行WEB开发时。能够选择使用Spring的SpringMVC框架或集成其它MVC开发框架。如Struts1,Struts2等。

struts是开源框架。使用Struts的目的是为了帮助我们降低在运用MVC设计模型来开发Web应用的时间。假设我们想混合使用Servlets和JSP的长处来建立可扩展的应用。struts是一个不错的选择。

各自长处:

Spring MVC是一个典型的教科书式的mvc构架。而不像struts等都是变种或者不是全然基于mvc系统的框架,对于刚開始学习的人或者想了解mvc的人来说我觉得 spring是最好的,它的实现就是教科书!

第二它和tapestry一样是一个纯正的servlet系统,这也是它和tapestry相比 struts所没有的优势。并且框架本身有代码,看起来easy理解。

Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件。这是它的一大长处,使开发人员能更深入的了解其内部实现机制。除此之外。Struts的长处主要集中体如今两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活运用,能大大提高开发效率。另外,就眼下国内的JSP开发人员而言。除了使用JSP自带的经常使用标记外,非常少开发自己的标记,也许Struts是一个非常好的起点。关于页面导航。我觉得那将是今后的一个发展方向。其实,这样做,struts使系统的脉络更加清晰。通过一个配置文件,就可以把握整个系统各部分之间的联系,这对于后期的维护有着莫大的长处。尤其是当还有一批开发人员接手这个项目时。这种优势体现得更加明显。

MVC即Model-View-Controller的缩写,是一种经常使用的设计模式。

MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并依据J2EE的特点,做了相应的变化与扩展。

spring3 mvc开发效率高于struts,spring3 mvc能够觉得已经100%零配置。struts2是类级别的拦截, 一个类相应一个request上下文,springmvc是方法级别的拦截,一个方法相应一个request上下文,而方法同一时候又跟一个url相应所以说从架构本身上 spring3 mvc就easy实现restful url ,而struts2的架构实现起来要费劲。由于struts2 action的一个方法能够相应一个url。而其类属性却被全部方法共享,这也就无法用注解或其它方式标识其所属方法了 。spring3mvc的方法之间基本上独立的,独享request response数据
请求数据通过參数获取。处理结果通过ModelMap交回给框架。方法之间不共享变量,而struts2搞的就比較乱,尽管方法之间也是独立的。但其全部Action变量是共享的,这不会影响程序执行,却给我们编码 读程序时带来麻烦 。由于Struts2须要针对每一个Request进行封装,把Request,Session等Servlet生命周期的变量封装成一个一个Map,供给每一个Action使用,并保证线程安全。所以在原则上,是比較耗费内存的。

怎样取舍:

Struts2依靠技术上的革新赢得了程序猿的青睐。

可是,这些年来Struts2在技术革新上的作为似乎步子就迈得比較小。我们能够看到,在JDK1.5普及之后,Annotation作为一种新兴的Java语法,逐渐 被大家熟知和应用。这一点上SpringMVC紧跟了时代的潮流,直接用于请求-响应的映射。而Struts2却迟迟无法在单一配置源的问题上形成突破。

当然。这仅仅是技术革新上的一个简单的样例,其它的样例还有非常多。
  至少给人的感觉是这种。在这一点上Struts并非非常沾光。由于Spring的口碑和影响力也客观程度上加深了大家对SpirngMVC是技术领导者的印象。

SpringMVC & Struts2的更多相关文章

  1. springmvc和struts2的区别

    springmvc和struts2的区别 1.springmvc基于方法开发的,struts2基于类开发的. 2.单例和多例的区别:springmvc在映射的时候,通过形参来接收参数的,是将url和c ...

  2. springmvc和struts2的差别

    springmvc和struts2的区别相关内容   1.spring mvc的入口是servlet,而struts2是filter filter功能:用户可以改变一个request和修改一个resp ...

  3. 终于有SpringMvc与Struts2的对比啦

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

  4. SpringMVC 和Struts2的区别

    SpringMVC 和Struts2的区别 1. 机制: spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能: spring会稍微比s ...

  5. 终于有SpringMvc与Struts2的对比啦(转)

    本文转自:http://www.itsource.cn/web/news/5/20150318/370.html 目前企业中使用SpringMvc的比例已经远远超过Struts2,那么两者到底有什么区 ...

  6. <转>SpringMVC与Struts2 比较总结

    原链接:http://blog.csdn.net/chenleixing/article/details/44570681 个人整理: 1.级别不同:SpringMVC :方法  Struts是 类级 ...

  7. SpringMVC与Struts2配置区别

     Spring MVC模型与Struts2模型应用:  Html表单: 上述这两段代码无论是SpringMVC还是Struts2,都可以共用.而在请求响应处理类(也就是Controller)上的设计差 ...

  8. 最终有SpringMvc与Struts2的对照啦

    眼下企业中使用SpringMvc的比例已经远远超过Struts2,那么两者究竟有什么差别,是非常多刚開始学习的人比較关注的问题,以下我们就来对SpringMvc和Struts2进行各方面的比較: 1. ...

  9. SpringMVC和Struts2的比较

    整体的框架机制     1.Struts2的入口是StrutsPrepareAndExecuteFilter,SpringMVC的入口是通过DispatcherServlet实现.     2.Str ...

  10. JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别

    1. 学习计划   第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) Sp ...

随机推荐

  1. unity C# StackOverflowException

    有时候图省事,属性这样写public int pageCount{get{return pageCount;}set{pageCount=value;}}可能会报栈溢出的错误, StackOverfl ...

  2. Qt 在圆形中贴图片

    void Widget::paintEvent(QPaintEvent *) { QPainter p(this); QPixmap pix(":/images/a.jpg"); ...

  3. iOS 动画Animation - 5:UIBezier

    首先说明:这是一系列文章,參考本专题下其它的文章有助于你对本文的理解. 在之前的bolg中大家会发现总是会出现UIBezier,可是我也没有做过多介绍,今天就集中介绍一下UIBezier.首先.UIB ...

  4. POJ 2826 An Easy Problem!(简单数论)

    Description Have you heard the fact "The base of every normal number system is 10" ? Of co ...

  5. 三:redis的List类型相关操作

    </pre><pre name="code" class="php" style="font-size: 14px;"&g ...

  6. leetcode -day23 Construct Binary Tree from Inorder and Postorder Traversal &amp; Construct Binary Tree f

    1.  Construct Binary Tree from Inorder and Postorder Traversal Given inorder and postorder travers ...

  7. [UOJ#334][NOIP2017]列队 平衡树/线段树/树状数组

    题目链接 题意不说了,一辈子也忘不掉 解法1.平衡树 这题就是平衡树裸题,每一行开一棵维护前 \(m-1\) 个,最后一列单独维护,因为很多人没有用到,所以平衡树每个节点是一个区间(pair),分裂时 ...

  8. centos7 ssh免口令认证登录

    摘要:centos7, xshell, 公钥,  ssh ssh登录方式有口令认证登录和密钥认证登录 接下来本次介绍是ssh密钥登录方式 (1)产生公钥 (2)将公钥放置到centos7的(/root ...

  9. hbase启动报错:Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0

    输入HBASE_MASTER_OPTS只是为了快速寻找这个选项而已,如果你手工找也可以 刚才那个命令回车后直接跳到这 前面加#就好了 修改后保存.重新启动hbase就好了. 注意:各个节点都要修改哦. ...

  10. 1sting

    You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’ to be ‘2’, or lea ...