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框架太厲害了。

 

"隨着年齡的增長,人總會變得越來越寬容,很多事情到最后並不是真的解決了,而是【算了吧】。"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM