Struts2 为什么被淘汰?自己作死!
Struts2 那些年可谓是风光无限啊,Struts2 + Spring + Hibernate 三大框架一起组成了 "SSH"————牛逼哄哄的 Java Web 框架三剑客。
SSH,有过几年工作经验的 Java 程序员应该都听说过吧?现在刚出来工作的小弟弟、小妹妹们应该很少有人了解它了。
但,那个还属于 SSH 风靡的年代,不管你是在学校学习,还是去培训机构培训,还是去任何一家软件公司面试,SSH 那就是标配了。

时过境迁,现在除了老掉牙的老项目,已经很少有公司还用 Struts2 开发了,甚至从招聘岗位技能上、以及面试者的简历上消失。
栈长特意找了下招聘网站上的职位要求,大多都是要求 SSM 这一套了。


当然,也有传统项目招 Struts2 人才的,但真的非常少了,比如说下面一个平安的项目:

看这个招聘的技术栈就知道是一个老项目了,还是 SSH 那一套。
栈长近几年也面试了不少人,很少有简历写 Struts2 的,招来的新人也都不会用 Struts2,老项目维护起来甚于棘手。
显然,Struts2 已被 Spring MVC/ Spring Boot 所取代,Hibernate 也逐渐被 MyBatis/ Spring Data JPA 所取代,至少在国内是这样,现在已经是 SSM 的天下了,说 Struts2 被淘汰一点也不为过。
推荐阅读:JPA、Hibernate、Spring Data JPA 的关系
SSM了解下:
SSM = Spring + Spring MVC/ Spring Boot + MyBatis
那么,为什么 Struts2 会被淘汰呢?
我认为有以下两个主要原因!
1、漏泄太多
Struts2 漏洞多是出了名的,影响巨大,这也是 Struts2 被淘汰的主要原因,自己作死。
BAT都被祸及过,特别是某东那次事故比较严重,有兴趣的可以查一下,其他涉及的站点更是不计其数了。
我司老项目也一直在为 Struts2 不断打补丁包,替换成本又高,不甚其烦,还好是内部项目。
2、可怕的后浪
随着 Spring 推出 Spring MVC 框架,其天生就能与 Spring 无缝结合,开发效率和性能都要吊打 Struts2, 13年开始就已经有很多企业用 Spring MVC 代替 Strust2 了。
现在,后浪 Spring Boot 大行其道,零 XML 配置,开箱即用,效率翻倍,开发只需要关注业务实现,不用再多关注框架配置,更是加快了 Struts2 的淘汰进程。
Spring Boot 确实好用,系列教程我在公众号Java技术栈都写了一大堆了,有兴趣的可以关注翻阅学习,都是我这几年写的干货。
当然,除了 Spring 全家桶,市面上还有小而美的 Vert.x、jFinal 等 Web 开发框架,它们也有各自存在的市场,大家各有所需,没有谁更牛逼。
现在的开发市场,除了老项目,还有谁会在新项目上用 Struts2 的?如果是这样,那真的 Struts2 真爱啊,或者是井底之蛙……
你怎么看待 Struts2 被淘汰?
欢迎留言分享!
推荐去我的博客阅读更多:
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
觉得不错,别忘了点赞+转发哦!
Struts2 为什么被淘汰?自己作死!的更多相关文章
- 盘点 6 个被淘汰的 Java 技术,它们都曾经风光过!
大家好啊,今天栈长给大家分享下我的开发历程中,我知道的那些被淘汰的技术或者框架,有些我甚至都没有用过,但我知道它曾经风光过. 废话不多说,下面我要开始吹了-- 1.Swing 下面这个是用 swing ...
- struts2被淘汰的原因
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个Servlet.在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互.Struts2 ...
- Struts2后期(这框架目前正处于淘汰状态)
Struts2第三天 课程回顾:Struts2框架的第二天 1. Servlet的API * ActionContext对象 * ServletActionContext对象 2. 结构类型的跳转 * ...
- Struts2中期(这框架目前正处于淘汰状态)
Struts2的第二天 Struts2的第二天的内容 1. Struts2框架中的Servlet的API的使用 2. Struts2中Action接收请求参数 3. Struts2中自定义拦截器 案例 ...
- Struts2前期(这框架目前正处于淘汰状态)
Struts2第一天 Struts2的学习路线 1. Struts2的入门:主要是学习Struts2的开发流程(Struts2的开发流程.常见的配置.Action类的编写) 2. Struts2的Se ...
- 【转】eclipse 创建struts2
转载地址:http://blog.163.com/sean_zwx/blog/static/169032755201091595558378/ 今天我用Ecipse搭建Struts框架,并且使用Str ...
- Struts 2.3.24源码解析+Struts2拦截参数,处理请求,返回到前台过程详析
Struts2官网:http://struts.apache.org/ 目前最新版本:Struts 2.3.24 Struts1已经完全被淘汰了,而Struts2是借鉴了webwork的设计理念而设计 ...
- android--使用Struts2服务端与android交互
一,服务器端: web.xml文件: <?xml version="1.0" encoding="UTF-8"?> <web-app vers ...
- 学习Struts--Chap01:了解Struts2
学习之前的一些话: 这是我系统学习Java知识这么久以来第一次接触web框架,很不幸的是刚开始学习它就听到很多人说这个框架现在已经过时了,很多企业现在开发项目几乎不会用这个框架了,就是有用这个框架的项 ...
随机推荐
- @SessionAttributes 的使用
@SessionAttributes 注解只用作用在 类 上,作用是将指定的 Model 的键值对保存在 session 中.可以让其他请求共用 session 中的键值对. 指定保存的属性名 作用是 ...
- 最新VMware虚拟机安装Linux系统-CentOS(详细教程)
一.前言 最近有网友反应初学Linx不会安装,找了许多教程不是太全面,总会遇到一些要不是启动不了,要不是连不上网,各种问题,为了让大家能够顺利的安装,小乐写了一个非常详细的教程,让大家少入坑. 二.背 ...
- Spring Cloud Gateway+Nacos,yml+properties两种配置文件方式搭建网关服务
写在前面 网关的作用不在此赘述,举个最常用的例子,我们搭建了微服务,前端调用各服务接口时,由于各服务接口不一样,如果让前端同事分别调用,前端同事会疯的.而网关就可以解决这个问题,网关屏蔽了各业务服务的 ...
- 负载均衡服务之HAProxy基础配置(三)
前文我们聊到了haproxy的代理配置段中比较常用的配置指令的用法以及说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12770930.html:今天我们来 ...
- GoJS 教程新手入门(资源整理,解决方案)
以下几个是我在百度.谷歌 上能找到的比较全的GoJs的一些东西,希望对各位有所帮助! 如有外网网站不能访问请自行FQ GoJS官网 第一个推荐的是GoJS的一个类似于社区的问题讨论区,这里面初学者的一 ...
- QT 获取可执行程序的路径
获取到生成.exe目录 QCoreApplication::applicationDirPath(); 获取当前工程目录 QDir::currentPath()
- 使用IBM Blockchain Platform extension开发你的第一个fabric智能合约
文章目录 安装IBM Blockchain Platform extension for VS Code 创建一个智能合约项目 理解智能合约 打包智能合约 Local Fabric Ops 安装智能合 ...
- HashMap源码解析JDK8
一.HashMap基础 1.1 HashMap的定义 我们先看一下HashMap的定义: public class HashMap<K,V> extends AbstractMap< ...
- 谷歌提高Google Assistant中Voice Match的准确性
谷歌正在提高 Google Assistant 中 Voice Match 的准确性,使其变得更加完善.谷歌表示一旦用户在 Google Assistant 中启用 Voice Match 功能,那么 ...
- 【集群实战】fatab开机挂载失败案例
1. nfs挂载加入fstab案例 NFS客户端实现fstab开机自启动挂载 现象:nfs开机挂载卸载了/etc/fstab中,结果无法开机自动挂载nfs 解答:1. nfs客户端命令放在/etc/r ...