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