本文是轉(zhuǎn)載他人的,覺得很好,分享!
最近聽一些朋友說,招聘面試的很多人簡歷都差不多,大部分人的簡歷上面都寫了熟悉ssh框架, 我朋友就在吐槽,為什么這些人簡歷都差不多,并且都熟悉ssh框架?
后面他說, 可能這些人都是培訓(xùn)機構(gòu)出來的, 然后培訓(xùn)機構(gòu)對于完全外行的人都是簡單培訓(xùn)了基本的java語法,然后介紹ssh的概念和簡單的使用, 然后吹噓ssh多么牛逼,然后再通過一個簡單的實戰(zhàn)項目,然后幫你做好簡歷,就算完成了培訓(xùn)。
聽到他這一番話,多少心中有些觸動。我不是排斥ssh有什么不好,ssh在很多年前是不錯的三個框架(現(xiàn)在struts已經(jīng)沒落 ,spring很春天,hibernate不溫不火), 只是覺得現(xiàn)在培訓(xùn)機構(gòu)還在教這個是有點過時了, 花費了學(xué)生的時間,并且出去可能也找不到工作(如果現(xiàn)在只是說會ssh,又沒有其他方面的知識,確實很難找工作)
為什么說ssh已經(jīng)過時了?那就要首先知道ssh到底是什么?
struts2:通俗的講就是為了完成MVC模型中的C的功能,也就是編寫具體的業(yè)務(wù)邏輯的地方。
從他的設(shè)計上來看就是請求到了web容器,然后經(jīng)過了一系列的過濾器,再通過請求FilterDispatcher詢問ActionMapper是否需要調(diào)用某個Action, 如果要調(diào)用的話, 然后執(zhí)行先前配置好的攔截器,就到了我們的具體邏輯,執(zhí)行完之后,還會繼續(xù)執(zhí)行對應(yīng)的攔截器和過濾器邏輯,最后返回給調(diào)用方。
Spring: 通俗的講只是通過它的核心IOC來管理我們編寫邏輯中間的一些bean。我們通過IOC來減少耦合和簡化對象的操作。
Hibernate: 是對象關(guān)系映射框架,簡單的說,它就是對JDBC進行了非常輕量級的對象封裝,目的是讓操作數(shù)據(jù)庫像操作對象一樣簡單。
這個就是ssh三者最開始的目的,他們各司其職,在缺乏框架的年代,很好的配合著,以至于一直流傳了下來。
介紹完了ssh的本質(zhì),接下來介紹一下這三個組件現(xiàn)在的發(fā)展情況。
首先struts2框架最近爆出了很多高危漏洞,使的應(yīng)用的安全有了很大程度的隱患。然后很多做法也不夠優(yōu)雅,特別是JSR-311標(biāo)準(zhǔn)出臺之后, 隨著Restful方式的流程程度普及開來,struts2越來越被大家所拋棄,雖然struts2也加入了一些plugin來進行支持REST,但是還是過于繁瑣。所以導(dǎo)致了現(xiàn)在struts2的沒落。
然后spring以IOC為核心,然后進行大力擴展,先后推出了SpringMVC來完成邏輯層的編寫邏輯, 現(xiàn)在SpringMVC基本已經(jīng)完成了替代struts2的工作(一些很老的項目可能沒有進行改造)。 然后在SpringMVC大獲成功之后,基于SpringMVC和web容器,把他們兩者進行結(jié)合,推出了SpringBoot, 經(jīng)過幾年的發(fā)展和醞釀,現(xiàn)在后端基本被Spring系列所統(tǒng)一。所以現(xiàn)在要我來講,后端框架的王者就只有一個Spring系列了。
最后Hibernate只是一個對操作數(shù)據(jù)庫進行映射的框架,有很多也可以替代,比如ibatis, mybatis, JPA等等, 因為orm有自己的優(yōu)點也有自己缺點,就看使用者如何進行權(quán)衡了。 從我個人的意見來看,簡單的業(yè)務(wù)邏輯直接用JPA(Spring基于Hibernate的封裝)就可以了,如果是復(fù)雜的,還不如直接寫SQL來得簡單,調(diào)優(yōu)也方便。
為什么說ssh已經(jīng)過時?
現(xiàn)在提倡和流行的是前后端分離(這里指的分離是完全分離,而不是之前通過模版進行分離,前后端數(shù)據(jù)交互是根據(jù)http進行的)。 并且后端設(shè)計的接口趨向于Restful的架構(gòu)。為什么有這種變化, 因為現(xiàn)在前端不僅僅是web端,在移動互聯(lián)網(wǎng)時代,app也是很大一部分。所以從后端的角度來看,他們都是客戶端。 app是沒辦法通過模版進行渲染的,只能通過http傳輸數(shù)據(jù)。這也是后端服務(wù)發(fā)展的趨勢。
Java后端技術(shù)有很多,如果想要提高,最好的捷徑就是踏踏實實的進行學(xué)習(xí), 對于剛工作不久的人來說,可以把學(xué)習(xí)ssh框架的時間用來學(xué)習(xí)SpringMVC,然后掌握Spring的核心, 然后學(xué)習(xí)什么是Restful概念,最后可以了解JDBC的一些概念(前期不推薦學(xué)習(xí)ORM框架)。我相信可以有所收獲和成長的。
最后不建議再去沖著學(xué)習(xí)ssh框架去培訓(xùn)機構(gòu)了,
總結(jié): ssm框架,老一點項目spring struts2 mibatis。 現(xiàn)在主流是spring spring-mvc mibatis。
我從不相信什么懶洋洋的自由,
我向往的自由是通過勤奮和努力實現(xiàn)更廣闊的人生,那樣的自由才是珍貴的、有價值的。
我相信一萬小時定律,我從來不相信天上掉餡餅的靈感和坐等的成就。
做一個自由又自律的人,靠勢必實現(xiàn)的決心認(rèn)真地活著。
-- 山本耀司
|