SpringMVC & Struts2
这两个框架可谓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的更多相关文章
- springmvc和struts2的区别
springmvc和struts2的区别 1.springmvc基于方法开发的,struts2基于类开发的. 2.单例和多例的区别:springmvc在映射的时候,通过形参来接收参数的,是将url和c ...
- springmvc和struts2的差别
springmvc和struts2的区别相关内容 1.spring mvc的入口是servlet,而struts2是filter filter功能:用户可以改变一个request和修改一个resp ...
- 终于有SpringMvc与Struts2的对比啦
目前企业中使用SpringMvc的比例已经远远超过Struts2,那么两者到底有什么区别,是很多初学者比较关注的问题,下面我们就来对SpringMvc和Struts2进行各方面的比较: 1. 核 心控 ...
- SpringMVC 和Struts2的区别
SpringMVC 和Struts2的区别 1. 机制: spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能: spring会稍微比s ...
- 终于有SpringMvc与Struts2的对比啦(转)
本文转自:http://www.itsource.cn/web/news/5/20150318/370.html 目前企业中使用SpringMvc的比例已经远远超过Struts2,那么两者到底有什么区 ...
- <转>SpringMVC与Struts2 比较总结
原链接:http://blog.csdn.net/chenleixing/article/details/44570681 个人整理: 1.级别不同:SpringMVC :方法 Struts是 类级 ...
- SpringMVC与Struts2配置区别
Spring MVC模型与Struts2模型应用: Html表单: 上述这两段代码无论是SpringMVC还是Struts2,都可以共用.而在请求响应处理类(也就是Controller)上的设计差 ...
- 最终有SpringMvc与Struts2的对照啦
眼下企业中使用SpringMvc的比例已经远远超过Struts2,那么两者究竟有什么差别,是非常多刚開始学习的人比較关注的问题,以下我们就来对SpringMvc和Struts2进行各方面的比較: 1. ...
- SpringMVC和Struts2的比较
整体的框架机制 1.Struts2的入口是StrutsPrepareAndExecuteFilter,SpringMVC的入口是通过DispatcherServlet实现. 2.Str ...
- JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别
1. 学习计划 第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) Sp ...
随机推荐
- yii2-Ueditor百度编辑器
今天在网上看了下有关图片上传的教程,历经挫折才调试好,现在把相关代码及其说明贴出来,以供初次使用的朋友们参考. 资源下载 yii2.0-ueditor下载路径: https://link.jiansh ...
- 【转】 我的java web登录RSA加密
[转] 我的java web登录RSA加密 之前一直没关注过web应用登录密码加密的问题,这两天用appscan扫描应用,最严重的问题就是这个了,提示我明文发送密码.这个的确很不安全,以前也大概想过, ...
- HDFS 文件系统流程图。PB级文件存储时序图。
大小文件通吃, 热点hash功能. 全局唯一KV索引. 百度网盘模式.断点续传功能.MR分析功能. 来自为知笔记(Wiz)
- C/C++里面的struct和typedef
今天看到这样的代码 typedef struct _Abc { uint64_t unit_id; ...... } Abc; 开始不理解这个的意思,后来看到这个解释: https://stackov ...
- android动画-拖动
先上图看效果 实质上说是动画有点不妥,确切的说应该是手势的处理,废话不多说看代码 SimpleDragSample.java public class SimpleDragSample extends ...
- Android中System.currentTimeMillis()
函数: System.currentTimeMillis(): 功能:产生一个当前的毫秒,这个毫秒事实上就是自1970年1月1日0时起的毫秒数,Date()事实上就是相当于Date(System.cu ...
- 【HeadFirst设计模式——开篇】
近期在看HeadFirst,接下来的一段时间会陆续更新有关HeadFirst设计模式相关的文章.记得非常久之前在学习大话设计模式的时候,仅仅是走马观花的大致走过一遍.至于里面非常多东西都掌握的不是非常 ...
- mysql二进制日志文件出错导致mysql服务无法启动
今天打开phpmyadmin发现连不上mysql数据库,重新启动mysql启动不起来,查看日志发现例如以下错误 <span style="font-family:SimSun;font ...
- Task Scheduler
https://technet.microsoft.com/en-us/library/cc748993(v=ws.11).aspx#BKMK_winui If Task Scheduler is n ...
- js易错点总结及 常见面试的坑
最近在研究Javascript发现了其中一些比较灵异的事情.有点让人感到无语比如: var arr = [], arr2 = {}; console.log(typeof(arr) === typeo ...