曹華山
摘 要:文章對SSM框架在Web應(yīng)用開發(fā)中的設(shè)計與實現(xiàn)進行研究。首先介紹了模型-視圖-控制器設(shè)計模式,然后分別介紹了Spring MVC,Spring和Mybatsi3種開發(fā)框架的特點和優(yōu)勢,最后介紹了3種框架的整合方法,旨在對SSM框架在網(wǎng)頁開發(fā)中的應(yīng)用有一定的借鑒和參考價值。
關(guān)鍵詞:SSM框架;Web開發(fā);實現(xiàn)
0 引言
網(wǎng)頁開發(fā)是一項涉及技術(shù)較多的活動,其中最重要的便是開發(fā)框架的選擇。良好的開發(fā)框架,可以提高開發(fā)效率,降低開發(fā)周期,減少開發(fā)成本,同時還能支持未來的系統(tǒng)快速擴展和移植[1]。現(xiàn)如今,國內(nèi)有眾多開發(fā)框架,其中比較主流的兩類開發(fā)框架是Mirosoft公司的.Net平臺和IBM公司的J2EE平臺,J2EE主要面向Java實現(xiàn)程序的設(shè)計,并進行網(wǎng)頁開發(fā),平臺EJB組件為核心,可實現(xiàn)跨平臺的移植,因此眾多企業(yè)均選擇J2EE作為其開發(fā)平臺[2]。但隨著人們對互聯(lián)網(wǎng)訪問速度和開發(fā)周期要求的不斷提升,J2EE平臺已經(jīng)無法滿足開發(fā)需求。EJB容器具備的事務(wù)處理和用戶請求處理等功能和其內(nèi)部容器耦合度過高,其可移植性變得更差,因此EJB代碼的復(fù)雜度變得越來越高,其維護成本和維護技術(shù)要求也不斷提高,因此更加輕量級的開發(fā)框架如Spring,Struts等便應(yīng)運而生,其開發(fā)和調(diào)試效率有了很大的提升[3]。
1 模型-視圖-控制器設(shè)計模式
雖然框架眾多,但是就目前來看,所有框架萬變不離其宗,均是按照模型-視圖-控制器(以下簡稱“MVC”)的設(shè)計模式進行的。設(shè)計模式中的3個容器分別負責不同的智能,其中模型層主要實現(xiàn)業(yè)務(wù)模型和數(shù)據(jù)模型的定義、處理,包括對數(shù)據(jù)庫的查詢和寫入。因此模型層是框架的最核心層。視圖層是根據(jù)模型的創(chuàng)建情況,用戶可以基于前臺界面實現(xiàn)對模型的訪問,視圖層一方面可以支持用戶的輸入,另一方面可以實現(xiàn)對用戶請求的相應(yīng)。控制層主要是根據(jù)用戶的請求信息,選擇合適的模型來響應(yīng),并不直接參與數(shù)據(jù)的處理過程,僅僅是在模型層和視圖層起信息傳遞的紐帶作用。因此,此種設(shè)計模式將數(shù)據(jù)、前臺和后臺進行了較好的層次分離,減少了每個模塊之間的耦合程度,滿足了系統(tǒng)的設(shè)計目標?,F(xiàn)如今SpringMVC,Spring和Mybatis框架(以下簡稱“SSM框架”)是最常用的Web開發(fā)框架。下文將對3個框架進行詳細介紹。
2 ? SSM框架
2.1? Spring MVC框架
此種框架是根據(jù)Spring框架并利用MVC設(shè)計模式構(gòu)建的,主要用于Web應(yīng)用的開發(fā)。SpringMVC框架,使得Web開發(fā)過程中需要的大量JSP中的視圖可以得到快速配置,雖然此種框架和Struts框架類似,但其實現(xiàn)原理不相同。Struts主要實現(xiàn)了類這個等級的攔截,每個類可以對應(yīng)一個請求。SpringMVC是基于類中方法級別的攔截,每個方法可以對應(yīng)一個請求,每個方法有對應(yīng)一個URL。SpringMVC框架所有的工作流程是基于前端控制器、處理器映射、處理適配器、處理器和視圖解析器等組件工作的,其具體工作如下:
(1)支持文件的快速上傳,并進行本地文件的快速解析。
(2)借助處理器的映射功能,可以把請求向處理器進行映射,返回系統(tǒng)執(zhí)行所需鏈接。
(3)借助映射器可以實現(xiàn)多種類型的處理器映射,借助視圖解析器可以實現(xiàn)邏輯視圖到具體視圖的映射,并可以渲染具體視圖。
(4)借助異常處置解析器,可以解析執(zhí)行過程中出現(xiàn)的各類異常問題。
2.2? Spring框架
Spring框架是為了適當降低開發(fā)公司的開發(fā)復(fù)雜程度而產(chǎn)生的開源框架,其本質(zhì)目標是實現(xiàn)開發(fā)過程中各個層次之間的隔離,以達到每個層次可靈活選擇組件的目的,同時可以很好地和J2EE開發(fā)框架進行集成。Spring開發(fā)框架為企業(yè)級別的應(yīng)用開發(fā)提供了一種很好的解決方案。此種框架主要是面向AOP進行編程,核心機制是控制反轉(zhuǎn)機制,同時可以整合各類持久層的框架,并且具有自身的MVC框架。Spring框架的目標不僅是提供某一個層級的解決方案,其最終目標是為J2EE應(yīng)用開發(fā)過程中的各個層級提供解決方案。Spring框架的主要優(yōu)勢是可以提供一種能夠?qū)χ虚g層的對象和方法進行有效組織的工具,可以防止非法入侵設(shè)計,降低了代碼的被污染風險,通過注入機制,降低了各個業(yè)務(wù)對象彼此間的耦合程度,可以支持AOP級別的日志和事務(wù)集中管理功能,ORM和DAO層簡化了開發(fā)人員對數(shù)據(jù)庫的操作。
2.3? Mybatis框架
Mybatis是隸屬于J2EE平臺的框架,其主要面向持久層,通過XML文件的配置和注解的應(yīng)用,實現(xiàn)對象的定義以及存儲過程的實現(xiàn)。其主要特點是借助SQL實現(xiàn)對象的關(guān)聯(lián),代替了傳統(tǒng)的對象和數(shù)據(jù)庫關(guān)聯(lián)的方式。同時Mybatis平臺可以實現(xiàn)SQL語句的動態(tài)生成,在數(shù)據(jù)訪問方面,Mybatis是一個很好的工具,與JDBC方法比較,在代碼的數(shù)量和注解的實現(xiàn)上,Mybatis優(yōu)勢明顯?;赬ML的配置文件可以很好地實現(xiàn)原始映射,通過映射將JavaBean中規(guī)定的接口映射為數(shù)據(jù)庫中的具體數(shù)據(jù)記錄。Mybatis主要是通過XML配置文件,將JavaBean、MAP、實數(shù)、字符串等數(shù)據(jù)類型映射成為PreparedStatement和ResultSet結(jié)果集中需要的數(shù)據(jù)類型。Mybatis框架的作用和Hibernate功能相似,但其更適用于變化頻繁的項目。
3 基于SSM框架的整合案例
3.1? Spring MVC和Mybatis框架整合
Spring框架可以很好地實現(xiàn)業(yè)務(wù)層的處理,可以將Spring MVC和Mybatis框架的各自優(yōu)勢進行整合,完成整合后,Spring框架便可以作為應(yīng)用系統(tǒng)的類工廠。首先實現(xiàn)Spring和Mybatis的整合,將數(shù)據(jù)模型配置、事務(wù)管理、SqlSessionFactory、Mapper的創(chuàng)建讓Spring框架處理,Mybatis框架中的配置化文件無需再進行數(shù)據(jù)源和其他事務(wù)的配置,在業(yè)務(wù)員層實現(xiàn)的過程中無需再通過手動方式SQLSession的注入。具體如下: