struts2被淘汰的原因

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个Servlet。在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。其全新的Struts2的体系结构与Struts1的体系结构差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。虽然从Struts1到Struts2有着太大的变化,但是相对于WebWork,Struts2的变化很小。

Struts2在其流行的几年可谓是非常热门,不管你去哪个公司面试,都要求会SSH(Spring+Struts2+Hibernate),这里的SS指的是Spring和Struts2。但是现在,曾经风靡一时的Struts2最终被SpringMVC所取代,为什么会是这样的结果呢?如果你做了五年以上的开发了,那肯定是接触过Struts2,你一定会知道Struts2的配置文件可谓是最头疼的,如果项目大了,那Servlet和配置会让人疯掉。另外,Struts还有一个通病就是他的请求是基于类的,而SpringMVC是基于方法的,请求域的范围不一样,相比之下SpringMVC要灵活得多。

随着Spring快速的发展,使用SpringMVC的人也会随之增多。从另外一个角度来看,SpringBoot大家都很熟悉吧,零XML配置,全部采用JavaBean的形式,为什么SpringBoot能够快速的代替SpringMVC的xml配置呢,就是因为他减去了xml的配置,使维护起来更加方便。Struts2相比之下则显得十分臃肿,配置项太多。

如果说SpringMVC是初步淘汰了Struts2,那么SpringBoot的崛起基本上是彻底淘汰了Struts2,除了一些老项目还在维护之外,其他的新项目基本上都在用SpringBoot,谁也不想去用一个维护复杂,配置众多的项目。

这里列出几点:

1.Struts2的安全漏洞不胜枚举,曾经传言京东数据泄漏就是Struts2搞的鬼。

2.Struts2就是一个Web控制器框架,个人感觉最不好的一点就是,对post、get参数并没有区分对待,天然不支持RESTful API,导致xss攻击的更难防御。

3.Struts2对每一个Web请求,都会创建一个Action实例,耗时耗资源。

4.对于高并发业务,传统Web容器tomcat通常是顶不住的,很多团队会自己开发异步、并行、高性能网络通信引擎,这时候Struts2通常就会比较鸡肋了,一般会根据自身业务特点自行开发控制器框架。

5.Spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。

6.由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的。

7.SpringMVC开发效率和性能高于Struts2。

......

最后总结来说,业务适合的框架才是好框架啦,Struts2被淘汰还是因为SpringMVC框架太厉害了。

 

"随着年龄的增长,人总会变得越来越宽容,很多事情到最后并不是真的解决了,而是【算了吧】。"

转载于:https://www.cnblogs.com/yanggb/p/11151044.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你用java读写excel表格文件(POI,EasyExcel)

视频链接-我是学习之星我为狂神打call~ 【狂神说Java】POI及EasyExcel一小时搞定通俗易懂 想给项目添加一个表格导入导出功能吗? “xxx管理系统”没有导入导出功能逼格不够了? 想简单入手下 how to 用java 生成excel又找不到合适的教程? com…

欢迎参加2022年第一次《城市大脑建设标准规范》专家研讨会

来源:世界数字大脑标准研究组2018年以来,城市大脑正成为智慧城市和智能产业的新热点,有近500个城市提出城市大脑的建设规划,数千家大中型科技企业进入城市大脑的建设领域。如何理清城市大脑的概念和定义,制定统一的城市…

面试问题

什么是闭包?1. 当一个内部函数被调用,就会形成闭包,闭包就是能够读取其他函数内部变量的函数定义:闭包是能够读取其他函数内部变量的函数,在js中,只有函数内部的子函数才能读取局部变量,所以闭包…

Spring常用注解的讲解

转载,原文链接 作者:字母哥博客 本文出自:springboot深入浅出系列 文章目录一、常用注解回顾1.1 RequestBody与ResponseBody1.2. RequestMapping注解1.3. RestController与Controller1.4. PathVariable 与RequestParam二、接收复杂嵌套对象参…

复杂系统与人工生命:十年研究概览

来源:集智俱乐部作者:Thomas McAtee、Claudia Szabo译者:陈翔 审校:刘培源编辑:邓一雪导语人工生命(artificial life)是通过仿真建模、机器技术和生物化学等方式模拟自然生命系统,进…

day22-面向对象之封装

# 封装 什么是封装? # 就是将复杂的丑陋的,隐私的细节隐藏到内部,对外提供简单的使用接口 # 对外隐藏内部实现细节,并提供访问的接口 为什么需要封装? ​ # 两个目的 ​ 1.为了保证关键数据的安全性 ​ 2.对外部隐藏实现细节,隔离复杂度 什么时候应该封装? #​ 当有一些数据…

5.1传输层概述

5.1传输层概述 文章目录传输层概述传输层的两个协议传输层的寻址与端口传输层概述 传输层的两个协议 传输层的寻址与端口

多细胞生命进击之路:单细胞为何放弃自由,长成复杂的多细胞?

来源:集智俱乐部作者:Veronique Greenwood译者:赵雨亭审校:张澳编辑:邓一雪导语人类作为复杂的多细胞生命,似乎理所当然地认为,多细胞生命相对单细胞生命有绝对的优势。但实际上单细胞生命进化为…

5.2 UDP协议

5.2 UDP协议 文章目录用户数据报协议udp概述udp首部形式udp校验用户数据报协议udp概述 udp首部形式 udp校验

一个XML转换的例子

问: 我想把字符串转换成stream, 然后 System.Xml.XmlTextReader xmlReader new System.Xml.XmlTextReader(System.IO.Stream input) ______________________________________________________________________________________________ 答1: 为何一定要…

msil 笔记

public class TestImpl : ITest {// Propertiespublic string Address{get{return "abc";}}//msil:address不是在接口中定义的 //hidebysig:使用时看不见这个方法,因为是给属性用的.specialname也是说是给属性用的(但不指明),只是说是特殊的. .method public hidebys…

焦李成院士:进化优化与深度学习的思考

来源:AI科技评论作者:焦李成整理:维克多编辑:青暮2021年12月17日,西安电子科技大学人工智能学院教授、欧洲科学院外籍院士、IEEE Fellow焦李成受邀参加2021中国计算机大会“下一代演化计算发展趋势”论坛,并…

5.3.1 TCP协议特点和TCP报文段格式

5.3.1 TCP协议特点和TCP报文段格式 文章目录tcp协议的特点tcp 报文段首部格式tcp协议的特点 tcp 报文段首部格式

互补性:从不同的角度思考同一个事物时,发现它同时具有不同甚至相互矛盾的性质...

来源:混沌巡洋舰检验一流智力的标准是头脑中能同时持有两种截然相反的观点,却能并行不悖。——弗朗西斯斯科特菲茨杰拉德显然,这种互补性推翻了学术的本体论。真理是什么?我们之所以要提出彼拉多的问题,并不是出于怀疑…

ObjectArx R14-2007下载地址

2008 -32位 http://download.autodesk.com/esd/objectarx/2008/ObjectARX_2008_32Bit.exe -64位 http://download.autodesk.com/esd/objectarx/2008/ObjectARX_2008_64Bit.exe 2007 -Core http://download.autodesk.com/esd/objectarx/2007/…

5.3.2 TCP连接管理

5.3.2 TCP连接管理 文章目录tcp 连接管理tcp的连接简历TCP传输连接中的SYN、ACK、SEQ、 AN分别是什么意思?syn洪泛攻击tcp的连接释放tcp 连接管理 tcp的连接简历 TCP传输连接中的SYN、ACK、SEQ、 AN分别是什么意思? syn洪泛攻击 tcp的连接释放

2021年量子计算的研发现状与未来展望

来源:AI科技评论作者:杏花编辑:青暮从硬件、软件和算法以及各国政策等方面展现量子技术最新进展。超导量子计算过去宣称实现的量子霸权在最新的获得戈登贝尔奖被宣告打破,但谷歌和IBM依然在这一领域有着雄心勃勃的计划。离子阱则凭…

Aligning Plots in a Column作图列对齐

Plot[Sin[x], {x, 0, Pi}] Plot[10000 Sin[x], {x, 0, Pi}]直接作图左边无法对齐,影响图的美观。可以使用左边界空格实现列对齐,代码如下: options {ImageSize -> 400, Frame -> True, ImagePadding -> {{60, Automatic}, {Automat…

5.3.3 TCP可靠传输

5.3.3 TCP可靠传输 文章目录

【动态规划】洛谷 P1282 多米诺骨牌

【动态规划】洛谷 P1282 多米诺骨牌 时间限制: 1 Sec 内存限制: 128 MB 题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点。现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|。例如在图8-1中&#…