最近聽一些朋友說,招聘面試的很多人簡歷都差不多,大部分人的簡歷上面都寫了熟悉ssh框架,我朋友就在吐槽,為什么這些人簡歷都差不多,並且都熟悉ssh框架?
后面他說, 可能這些人都是培訓機構出來的, 然后培訓機構對於完全外行的人都是簡單培訓了基本的java語法,然后介紹ssh的概念和簡單的使用,然后吹噓ssh多么牛逼,然后再通過一個簡單的實戰項目,然后幫你做好簡歷,就算完成了培訓。
聽到他這一番話,多少心中有些觸動。我不是排斥ssh有什么不好,ssh在很多年前是不錯的三個框架(現在struts已經沒落 ,spring很春天,hibernate不溫不火),只是覺得現在培訓機構還在教這個是有點過時了, 花費了學生的時間,並且出去可能也找不到工作(如果現在只是說會ssh,又沒有其他方面的知識,確實很難找工作)
為什么說ssh已經過時了?那就要首先知道ssh到底是什么?
struts2:通俗的講就是為了完成MVC模型中的C的功能,也就是編寫具體的業務邏輯的地方。
從他的設計上來看就是請求到了web容器,然后經過了一系列的過濾器,再通過請求FilterDispatcher詢問ActionMapper是否需要調用某個Action,如果要調用的話, 然后執行先前配置好的攔截器,就到了我們的具體邏輯,執行完之后,還會繼續執行對應的攔截器和過濾器邏輯,最后返回給調用方。
Spring: 通俗的講只是通過它的核心IOC來管理我們編寫邏輯中間的一些bean。我們通過IOC來減少耦合和簡化對象的操作。
Hibernate: 是對象關系映射框架,簡單的說,它就是對JDBC進行了非常輕量級的對象封裝,目的是讓操作數據庫像操作對象一樣簡單。
這個就是ssh三者最開始的目的,他們各司其職,在缺乏框架的年代,很好的配合着,以至於一直流傳了下來。
介紹完了ssh的本質,接下來介紹一下這三個組件現在的發展情況。
首先struts2框架最近爆出了很多高危漏洞,使的應用的安全有了很大程度的隱患。然后很多做法也不夠優雅,特別是JSR-311標准出台之后,隨着Restful方式的流程程度普及開來,struts2越來越被大家所拋棄,雖然struts2也加入了一些plugin來進行支持REST,但是還是過於繁瑣。所以導致了現在struts2的沒落。
然后spring以IOC為核心,然后進行大力擴展,先后推出了SpringMVC來完成邏輯層的編寫邏輯,現在SpringMVC基本已經完成了替代struts2的工作(一些很老的項目可能沒有進行改造)。然后在SpringMVC大獲成功之后,基於SpringMVC和web容器,把他們兩者進行結合,推出了SpringBoot,經過幾年的發展和醞釀,現在后端基本被Spring系列所統一。所以現在要我來講,后端框架的王者就只有一個Spring系列了。
最后Hibernate只是一個對操作數據庫進行映射的框架,有很多也可以替代,比如ibatis, mybatis, JPA等等,因為orm有自己的優點也有自己缺點,就看使用者如何進行權衡了。從我個人的意見來看,簡單的業務邏輯直接用JPA(Spring基於Hibernate的封裝)就可以了,如果是復雜的,還不如直接寫SQL來得簡單,調優也方便。
為什么說ssh已經過時?
現在提倡和流行的是前后端分離(這里指的分離是完全分離,而不是之前通過模版進行分離,前后端數據交互是根據http進行的)。並且后端設計的接口趨向於Restful的架構。為什么有這種變化,因為現在前端不僅僅是web端,在移動互聯網時代,app也是很大一部分。所以從后端的角度來看,他們都是客戶端。app是沒辦法通過模版進行渲染的,只能通過http傳輸數據。這也是后端服務發展的趨勢。
Java后端技術有很多,如果想要提高,最好的捷徑就是踏踏實實的進行學習,對於剛工作不久的人來說,可以把學習ssh框架的時間用來學習SpringMVC,然后掌握Spring的核心,然后學習什么是Restful概念,最后可以了解JDBC的一些概念(前期不推薦學習ORM框架)。我相信可以有所收獲和成長的。
最后不建議再去沖着學習ssh框架去培訓機構了,然后附上了我個人針對於經驗較少工程師的所建議學習路線。
最后如果覺得所講的東西能夠幫助到你,並且希望了解更多的知識,進行更詳細的深入的學習,歡迎加群632109190進行討論和學習。