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框架,很不幸的是刚开始学习它就听到很多人说这个框架现在已经过时了,很多企业现在开发项目几乎不会用这个框架了,就是有用这个框架的项 ...
随机推荐
- cgi、fastCGI、php-fpm、 php-CGI的区别
cgi.fastCGI.php-fpm. php-CGI的区别 作为面试的高频热点问题,必须来一波记录: 我们发送一个请求到收到响应之间的一个过程是什么? 如果客户端请求的是 index.html,那 ...
- Java中集合概念
集合的由来: 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行储存,而想要储存多个对象,就不能是一个基本的变量,而应该是一个 ...
- 理解java容器底层原理--手动实现LinkedList
Node java 中的 LIinkedList 的数据结构是链表,而链表中每一个元素是节点. 我们先定义一下节点: package com.xzlf.collection; public class ...
- serialize和json_encode 区别
(1)serialize主要用于php的序列化,存储到文件或者数据库中,json_encode 也是序列化,但是 主要用于与其他语言比如js进行交互使用,对于传输来说,json有许多优点. (2)在显 ...
- 关于php抑错方法
在循环里,如果@不能用的话,就使用try catch,是可以的
- Discuz的文件目录解析
最近在学习discuz,对这个不了解的 可以参考 http://www.cnblogs.com/hgj123/p/4641845.html
- /proc/[pid]/status
http://man7.org/linux/man-pages/man5/proc.5.html /proc/[pid]/status Provides much of the information ...
- tx-Lcn 分布式事务
测试内容 SpringCloud 微服务,有两个服务,从资料服务调度到文件服务,优先在文件服务那边 save 文件后,然后拿到 fileId 存储在资料服务中.两者之间的调用使用 feign.这期间涉 ...
- Spring Boot中使用Swagger CodeGen生成REST client
文章目录 什么是Open API规范定义文件呢? 生成Rest Client 在Spring Boot中使用 API Client 配置 使用Maven plugin 在线生成API Spring B ...
- 聊聊flink的BlobStoreService
序 本文主要研究一下flink的BlobStoreService BlobView flink-release-1.7.2/flink-runtime/src/main/java/org/apache ...