这两个框架可谓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. 监控memcached服务

    #!/bin/bash #监控memcached服务 printf "del key\r\n" | nc 127.0.0.1 11211 &>/dev/null #使 ...

  2. next.js、nuxt.js等服务端渲染框架构建的项目部署到服务器,并用PM2守护程序

    前端渲染:vue.react等单页面项目应该这样子部署到服务器 貌似从前几年,前后端分离逐渐就开始流行起来,把一些渲染计算的工作抛向前端以便减轻服务端的压力,但为啥现在又开始流行在服务端渲染了呢?如v ...

  3. windows linux 双系统默认启动windows 的几种方法

    装了双系统后,在开机时总会有想让一个系统默认启动的时候,一般安装完Ubuntu和XP双系统后,开机时默认的是启动Ubuntu系统,可是当想让XP作为默认启动的系统时怎么办呢? 在早期的Ubuntu系统 ...

  4. Bootstrapbutton组

    button组同意多个button被堆叠在同一行上.当你想要把button对齐在一起时,这就显得很实用. 基本button组 给div加上class .btn-group <!DOCTYPE h ...

  5. Delphi的参数修饰const/var/output 与C++的对应关系

    delphi的const/input和默认的没有修饰, C++都是一样的 delphi的var,对应C++那边是指针,  调用方需要管理内存(负责分配内存及销毁) delphi的output , 对应 ...

  6. SpringMVC+MyBatis (druid、logback)

    数据库连接池是阿里巴巴的druid.日志框架式logback 1.整合SpringMVCspringMybatis-servlet.xml: <?xml version="1.0&qu ...

  7. 14.c语言dll注入

    #include <Windows.h> //dll不需要main函数 //导出接口 _declspec(dllexport) void go() { MessageBoxA(, ); }

  8. Google Nexus 5x Android 7.0 Root

    很久没有写东西了,准备重新养成这个好习惯.因为自己一直在用Nexus,前段时间自己的Nexus5老的不行了,所以买了台5x,一直没时间root,今天有时间终于有时间弄一下. 在这里整理分享一下. 开始 ...

  9. 关于viewport详解

  10. OpenSUSE42.3 leap 开启ssh登陆

    一.产看ssh是否安装 OpenSUSE:~ # rpm -qa | grep ssh libssh2-1-1.4.3-18.3.x86_64openssh-askpass-1.2.4.1-12.1. ...