在JavaEE的開發過程當中,時常會用到Web應用程序的框架,SSH是曾經一度比較熱門的框架,其做用一樣是爲了搭建一個架構清晰、有較好的可複用性、便於維護和管理的系統。具體來講,SSH是指Struts、Spring、Hibernate三大框架,Struts用來做爲基礎性的架構,Hibernate用於數據的持久層,而Spring用來對前二者進行管理,編寫基本的DAO接口。其實,三大框架在實踐中也經歷了不斷地進化,從SSH框架發展爲SSM框架,稍早的一些項目使用Spring、Struts二、Mybatis來寫,而如今通常狀況下使用Spring、SpringMVC、Mybatis來作項目。總之,框架的基本功能相同,但經歷了不斷地改進。前端
首先回顧一下SSH框架的功能和用途,Hibernate是一個輕量級的持久框架,可以較爲完善地處理表與表之間的映射關係,同時可以較好的封裝JDBC。在開發數據庫的過程當中寫好接口的同時並不須要用大量的SQL語句對數據庫進行交互操做。Struts做爲MVC的Web層框架,對底層Servlet的大量封裝,可對業務邏輯調用的同時也擁有強大的攔截器機制。
三大框架之間的關係或流程基本是這樣的:按照JSP——Struts——Service——Hibernate的順序。Struts調用Service,從而控制了Service的生命週期,增強了各層次之間的依賴性,在必定程度上也增長了耦合性。因此咱們引用了 Spring來做爲框架中的容器,維護不一樣層次之間的關係。經過IOC反轉控制DI依賴注入完成各個層之間的注入,使得層與層之間實現徹底脫耦,增長運行效率利於維護。
提及Spring,則不得不提AOP面向切面編程,運用這一方法可達到在不改變代碼的狀況下完成對方法加強的目的。比較經常使用的就是Spring的聲明式事務管理,底層經過AOP實現,避免了咱們每次都要手動開啓事物,提交事務的重複性代碼,使得開發邏輯更加清晰。知道以上這些應付面試應該能夠了,不過面試官也會問得細一些,例如Hibernate的懶加載以及Spring的AOP和IOC原理,等等。web
以上回顧了SSH的基本功能和做用,在下面的講解中,會提到SSH的現狀和SSH框架爲何會被取代。面試
首先struts2框架存在必定的漏洞,在應用和實施中對信息的安全有較大的隱患。在開發中也有不少方面不夠便利,特別是JSR-311標準出臺以後,隨着Restful方式的流程程度普及開來,struts2逐漸淡出人們的視線,雖然struts2也加入了一些plugin來進行支持REST,但在應用的過程當中也較爲繁瑣。
其次是Spring以IOC爲核心,在功能上作了一寫擴展,前後推出了SpringMVC來完成邏輯層的編寫邏輯,如今SpringMVC基本已經完成了替代struts2的工做,固然,可能有一些老的項目還在用,但新開發的項目幾乎已看不到。
SpringMVC得到了開發者的普遍承認,在SpringMVC和Web容器的基礎上,對兩者的功能進行了有機的結合,推出了SpringBoot,通過幾年的發展,如今後端基本被Spring系列所統一。能夠說,Spring系列在框架的優化方面經受住了考驗,被普遍採用。Hibernate是一個對操做數據庫進行映射的框架,它的替代品也不少,因此是否實施也須要看項目而定,其方便之處可能就在於對SQL的優化上。數據庫
在當前的開發環境中,比較提倡先後端分離,但並不是徹底分離,而不是以前經過模版進行分離,先後端數據交互是根據http進行的。後端設計的接口趨向於Restful的架構,由於如今前端不只僅是web端,在移動互聯網時代,APP也是很大一部分。在後端看來,APP客戶端沒法經過模版進行渲染的,只能經過http傳輸數據。Java後端技術有不少,若是想要提升,最好的方法仍是多作項目多思考,對於SSH框架可用於參考,要把主要精力放在SpringMVC,掌握Spring的核心,而後深刻了解一下Restful概念和JDBC的一些概念。堅持下去應該會有不小的收穫。
編程