彭海鈴
摘要:SSH框架集,是現(xiàn)在大多數(shù)軟件設(shè)計(jì)過(guò)程中都會(huì)使用的一種框架集。而這種框架是基于MVC的開(kāi)發(fā),且MVC模式已經(jīng)成為現(xiàn)代J2EE開(kāi)發(fā)中的一種常用模式,且受到越來(lái)越多JSP、PHP等開(kāi)發(fā)者的歡迎。本文重點(diǎn)闡述了關(guān)于SSH框架集的介紹,為相關(guān)工作人員提供參考。
關(guān)鍵詞:SSH框架集;MVC開(kāi)發(fā);Spring
SSH框架集,是現(xiàn)在大多數(shù)軟件設(shè)計(jì)過(guò)程中都會(huì)使用的一種框架集。而這種框架是基于MVC的開(kāi)發(fā),且MVC模式已經(jīng)成為現(xiàn)代J2EE開(kāi)發(fā)中的一種常用模式,且受到越來(lái)越多JSP、PHP等開(kāi)發(fā)者的歡迎。
MVC模式,分別是模型(Model)、視圖(view)、控制器(Controller)。應(yīng)用程序被分割成這三大部分之后,各自處理自己的任務(wù)。視圖層通過(guò)提取用戶的輸入信息,提交到控制器之后,控制器根據(jù)某種選擇來(lái)決定這個(gè)請(qǐng)求交由給模型層來(lái)處理,模型層根據(jù)業(yè)務(wù)邏輯的代碼處理用戶請(qǐng)求并返回?cái)?shù)據(jù),并最終用視圖層展示給用戶。
而前面提到的SSH框架集,就是很好的對(duì)應(yīng)了MVC模式的開(kāi)發(fā)使用。這種Struts2+Hibernate+Spring的三大框架整合,契合著MVC模式的三層對(duì)象。其中Struts對(duì)應(yīng)著前臺(tái)的控制層,而Spring則負(fù)責(zé)實(shí)體bean的業(yè)務(wù)邏輯處理,至于Hibernate則是負(fù)責(zé)數(shù)據(jù)庫(kù)的交接以及使用Dao接口來(lái)完成操作。
Struts2,以WebWork為核心,采用攔截器的機(jī)制來(lái)處理用戶的請(qǐng)求從而使得業(yè)務(wù)邏輯處理與Servlet脫離。相比較原生態(tài)的Strutsl或JSP+Servlet的開(kāi)發(fā)模式,Struts2通過(guò)Action和攔截器來(lái)處理用戶需求,從而使得JSP和Servlet解耦,擺脫了以往難于測(cè)試的場(chǎng)面。通過(guò)初始化Servlet容器,加載web.xml,調(diào)用FilterDispatcher來(lái)詢問(wèn)ActionMapper來(lái)決定調(diào)用哪個(gè)Action,通過(guò)調(diào)用Action來(lái)決定這個(gè)請(qǐng)求對(duì)應(yīng)哪個(gè)業(yè)務(wù)處理邏輯。
Spring,使用基本的實(shí)體JavaBean來(lái)完成以前只能用EJB完成的事情。而其核心則是控制反轉(zhuǎn)(10C)和面向切面編程(AOP)。使用Spring,意味著一個(gè)對(duì)象的創(chuàng)建再也不是自己new出來(lái)的,而是全權(quán)交給了IOC容器去實(shí)例化。與此同時(shí),Spring通過(guò)采用依賴注入(DI)的方式,通過(guò)屬性的Setter和Getter方法來(lái)注入這個(gè)對(duì)象的屬性,這樣的好處就是不完全依賴于容器的API,且查詢依賴與代碼實(shí)現(xiàn)了解耦。而AOP,則是將應(yīng)用的業(yè)務(wù)邏輯和系統(tǒng)級(jí)服務(wù)(例如事務(wù))分離開(kāi)來(lái),進(jìn)行內(nèi)聚性的開(kāi)發(fā),應(yīng)用對(duì)象只負(fù)責(zé)完成業(yè)務(wù)邏輯而不關(guān)心日志或者事務(wù)的處理。
而Hibernate,則是負(fù)責(zé)了跟數(shù)據(jù)庫(kù)的交接。通過(guò)持久化數(shù)據(jù)對(duì)象,進(jìn)行對(duì)象關(guān)系的映射,并以對(duì)象的角度來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。通過(guò)封裝JDBC,使得開(kāi)發(fā)人員可以以面向?qū)ο缶幊痰乃枷雭?lái)操控?cái)?shù)據(jù)庫(kù),從而擺脫了以往使用JDBC編程時(shí)的“死板”操作。通過(guò)hibernate.cfg.xml文件來(lái)取代以往的JDBC連接數(shù)據(jù)庫(kù)的一大串代碼,通過(guò)XXX(實(shí)體Bean的類名).hbm.xml文件來(lái)與數(shù)據(jù)庫(kù)的具體表進(jìn)行映射。并且Hibernate有自己的HQL語(yǔ)句,與數(shù)據(jù)庫(kù)的SOL語(yǔ)句相似,但不同的是HQL語(yǔ)句在面向?qū)ο缶幊痰慕嵌壬希ㄟ^(guò)Session的createQuery方法創(chuàng)建戶一個(gè)query對(duì)象,由這個(gè)對(duì)象來(lái)完成對(duì)數(shù)據(jù)庫(kù)的增刪改查等操作。通過(guò)Struts2中Action的返回值,來(lái)調(diào)用Dao層中的業(yè)務(wù)處理。
SSH框架集,已經(jīng)成為越來(lái)越多開(kāi)發(fā)者的首選框架。這種分層架構(gòu)體系的思想,規(guī)劃著各個(gè)層次之間應(yīng)該做的事情,從而使得塊與塊之間不再混淆。這樣不僅實(shí)現(xiàn)了視圖,控制器和模型的徹底分離,還實(shí)現(xiàn)了業(yè)務(wù)邏輯與持久層的分離。這樣的好處就是無(wú)論前臺(tái)做了什么改動(dòng),后臺(tái)只需要小小的變化,并不會(huì)造成影響,大大提高了系統(tǒng)的復(fù)用性以及開(kāi)發(fā)效率。
(作者單位:北京理工大學(xué)珠海學(xué)院)endprint