这两个框架可谓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. 深入理解void以及void指针的含义

    void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型. void指针使用规范 ①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值. ...

  2. 【Codeforces Round #422 (Div. 2) A】I'm bored with life

    [题目链接]:http://codeforces.com/contest/822/problem/A [题意] 让你求a!和b!的gcd min(a,b)<=12 [题解] 哪个小就输出那个数的 ...

  3. POJ——T 1182 食物链

    http://poj.org/problem?id=1182 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 77012   ...

  4. glEnable(GL_DEPTH_TEST)作用

    glEnable(GL_DEPTH_TEST): 用来开启更新深度缓冲区的功能,也就是,如果通过比较后深度值发生变化了,会进行更新深度缓冲区的操作.启动它,OpenGL就可以跟踪再Z轴上的像素,这样, ...

  5. Id选择器和Class选择器

    http://www.runoob.com/css/css-id-class.html http://www.w3school.com.cn/css/css_syntax_id_selector.as ...

  6. Lesson 2 Building your first web page: Part 2

    Tag Diagram You may have noticed that HTML tags come in pairs; HTML has both an opening tag (<tag ...

  7. “DNS隧道”盗号木马分析——类似hjack偷密码然后利用dns tunnel直传数据发送出去

    摘自:http://www.freebuf.com/articles/network/38276.html# 运行后不断监控顶端窗口,一旦发现为QQ,就弹出一个自己伪造的QQ登陆窗口,诱导用户输入密码 ...

  8. HIVE JOIN_1

    HIVE JOIN 概述 Hive join的实现包含了: Common (Reduce-side) Join Broadcast (Map-side) Join Bucket Map Join So ...

  9. 访问API的方式为:localhost/api/customers, 创建自定义JSON格式化器

    注意的是,访问API的方式为:localhost/api/customers,在实际中将要根据情况替换合适的端口,默认所有的WEB API都是通过/api根目录的方式访问的 创建自定义JSON格式化器 ...

  10. OpenCV FileStorage类读写XML/YML文件

    本文转自:http://www.cnblogs.com/summerRQ/articles/2524560.html 在OpenCV程序中,需要保存中间结果的时候常常会使用.xml / .yml文件, ...