陳釗
摘要:傳統(tǒng)企業(yè)級(jí)應(yīng)用程序開(kāi)發(fā)主要依托SSH框架,但由于SSH框架中國(guó)Struts層面過(guò)多、Hibernate批量數(shù)據(jù)處理能力較弱,在批量對(duì)象代碼增刪查改、功能響應(yīng)方面,不如“JSP+JAVAbean”更加方便簡(jiǎn)潔。這一情況下,基于JAVA語(yǔ)言匯編的SSM框架,在web應(yīng)用系統(tǒng)程序中的開(kāi)發(fā)使用,可以通過(guò)Spring+SpringMVC+Mybatis(SSM)的開(kāi)發(fā)框架組合,由Aop提供切面編程、SpringMVC方法攔截,對(duì)系統(tǒng)不同層級(jí)作出分離定制、業(yè)務(wù)功能調(diào)優(yōu),大幅度提升代碼復(fù)用率、可維護(hù)性。
關(guān)鍵詞:SSM框架;Web應(yīng)用開(kāi)發(fā);設(shè)計(jì);實(shí)現(xiàn)
中圖分類號(hào):TP393? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)10-0226-02
1 SSM框架技術(shù)的主要內(nèi)容分析
1.1 Spring框架技術(shù)
Spring是為解決企業(yè)復(fù)雜性應(yīng)用程序開(kāi)發(fā),而創(chuàng)建的開(kāi)源框架,其分層架構(gòu)內(nèi)包含核心容器、Spring AOP、Spring DAO、Spring ORM、Spring Web等組成模塊,分為表現(xiàn)層、業(yè)務(wù)層、持久層等框架整合資源,組成架構(gòu)如圖1所示。利用MetaData指定系統(tǒng)Bean應(yīng)用后臺(tái)對(duì)象進(jìn)行實(shí)例化、配置和組裝,以上控制反轉(zhuǎn)IOC操作,均在Spring容器框架中完成[1-2]。
首先核心容器借助于BeanFactory工廠模式組件,負(fù)責(zé)應(yīng)用程序的Bean對(duì)象配置和依賴性規(guī)范,讀取如何創(chuàng)建bean、bean生命周期、bean依賴等定義信息,通過(guò)new關(guān)鍵字將Bean對(duì)象進(jìn)行實(shí)例化,并將Bean應(yīng)用組件模型,與實(shí)際的應(yīng)用程序代碼分開(kāi)。之后Spring AOP模塊主要功能為,將面向切面編程機(jī)制的配置管理集成到Spring框架之中,可以更加方便快捷為系統(tǒng)應(yīng)用程序的Bean對(duì)象,提供事務(wù)管理服務(wù)。
而Spring DAO作為Spring框架的抽象層,則是利用面向JDBC的異常層次結(jié)構(gòu),針對(duì)應(yīng)用程序開(kāi)發(fā)異常執(zhí)行信息、數(shù)據(jù)庫(kù)錯(cuò)誤消息做出簡(jiǎn)化處理,降低程序編寫(xiě)異常、代碼執(zhí)行錯(cuò)誤的概率。隨后Spring ORM模塊位于Spring DAO的上一層,其提供一個(gè)簡(jiǎn)化JDBC API操作框架,對(duì)包含Hibernate、iBatis SQL Map和JDO等對(duì)象關(guān)系工具,提供技術(shù)實(shí)現(xiàn)的集成支持。最后Spring Web模塊,是建立在應(yīng)用程序Spring上下文配置文件中的模塊,用于多種代碼執(zhí)行、功能服務(wù)請(qǐng)求的簡(jiǎn)化處理,以及將請(qǐng)求參數(shù)綁定到相應(yīng)的域?qū)ο笊稀?/p>
1.2 Mybatis框架技術(shù)
Mybatis為定制化SQL查詢、存儲(chǔ)過(guò)程以及高級(jí)映射框架的持久層框架,主要通過(guò)xml或注解的方式,將需要執(zhí)行的statement、preparedStatemnt等原生信息做出配置和映射。在數(shù)據(jù)庫(kù)封裝操作執(zhí)行的過(guò)程中,只需將java類和statement類對(duì)象集合轉(zhuǎn)換為SQL語(yǔ)句,再由mybatis框架執(zhí)行SQL語(yǔ)句,將結(jié)果映射為java對(duì)象,并返回?cái)?shù)據(jù)庫(kù)中進(jìn)行記錄,可以實(shí)現(xiàn)更加方便快捷數(shù)據(jù)輸入輸出與管理。
1.3 SpringMVC框架技術(shù)
傳統(tǒng)系統(tǒng)應(yīng)用程序開(kāi)發(fā)模式,通常采用Jsp+JavaBean+Servlet方案,由JSP服務(wù)器接收用戶訪問(wèn)、數(shù)據(jù)處理請(qǐng)求,JavaBean應(yīng)用組件用于建立功能服務(wù)和數(shù)據(jù)庫(kù)之間的連接,Servlet則作為項(xiàng)目控制器進(jìn)行瀏覽器響應(yīng)結(jié)果的發(fā)送或接收[3]。這一web應(yīng)用程序框架實(shí)現(xiàn)的方式,最大問(wèn)題為每個(gè)Servlet服務(wù)連接器對(duì)應(yīng)一個(gè)請(qǐng)求路徑,而對(duì)于多種服務(wù)組件、配置文件等資源的管理會(huì)占用大量?jī)?nèi)存空間。SpringMVC框架是圍繞Servlet的請(qǐng)求驅(qū)動(dòng)設(shè)計(jì),其核心為DispatcherServlet類,通過(guò)Servlet接口發(fā)送與接收控制請(qǐng)求,通過(guò)模型對(duì)象、分派器展示web請(qǐng)求結(jié)果,解決視圖和控制器(V-C)之間的交互問(wèn)題。
SpringMVC框架中應(yīng)用開(kāi)發(fā)執(zhí)行流程,需要用到DisPatcherServlet前端控制器、HandLer處理器、HandlerMapping處理映射器、HandlerAdapter處理適配器、ViewResolver視圖解析器、View視圖等組件,具體組件功能執(zhí)行如圖2所示。其中DisPatcherServlet主要功能,在于接收用戶瀏覽器輸入的url格式請(qǐng)求,由DisPatcherServlet調(diào)用其他組件,配合完成將瀏覽器請(qǐng)求分發(fā)給Spring Controller的工作,大大降低不同組件之間的耦合性[4]。
之后HandlerMapping處理映射器接口,通常以xml或注解方式,記錄url信息與處理器的映射。同時(shí)HandLer后端處理控制器,用于對(duì)用戶請(qǐng)求進(jìn)行處理,包括Spring Controller層業(yè)務(wù)代碼的處理。HandlerAdapter處理適配器,主要負(fù)責(zé)獲取ModelAndView,執(zhí)行控制器處理函數(shù),再通過(guò)適配器規(guī)則調(diào)用、擴(kuò)展適配器等方式,對(duì)更多類型處理器進(jìn)行執(zhí)行[5]。
最后,Controller控制器接口、ViewResolver視圖解析器等模塊,為并發(fā)用戶請(qǐng)求處理,以及view視圖渲染和數(shù)據(jù)填充,并將處理結(jié)果通過(guò)網(wǎng)頁(yè)向用戶展示的模塊。在Controller接口收到用戶請(qǐng)求后,會(huì)實(shí)時(shí)響應(yīng)調(diào)用模型進(jìn)行處理,再返回ModelAndView至響應(yīng)視圖對(duì)象給DispatcherServlet前端控制器。而ViewResolver視圖解析器,則支持不同的jsp、freemarker、velocity實(shí)現(xiàn)類,通過(guò)頁(yè)面標(biāo)簽或者模板技術(shù),在Web應(yīng)用模型中查找View對(duì)象,將渲染結(jié)果通過(guò)頁(yè)面展示給用戶,一般根據(jù)不同的業(yè)務(wù)功能需求開(kāi)發(fā)web頁(yè)面。
2 基于SSM框架的Web應(yīng)用開(kāi)發(fā)設(shè)計(jì)與實(shí)現(xiàn)
2.1 系統(tǒng)應(yīng)用體系架構(gòu)
在多種功能服務(wù)管理應(yīng)用開(kāi)發(fā)中,通常采取J2EE+SSM服務(wù)器端框架方案,運(yùn)用分層化應(yīng)用組件,將整個(gè)Web應(yīng)用管理系統(tǒng),分為權(quán)限管理、知識(shí)管理、資訊管理、活動(dòng)管理等部分。根據(jù)項(xiàng)目需求與設(shè)計(jì)要求,利用Spring、SpringMVC、Mybatis的開(kāi)發(fā)框架,完成數(shù)據(jù)持久層、服務(wù)層、邏輯控制層、表示層的建構(gòu),滿足系統(tǒng)頁(yè)面多樣化的服務(wù)需求。
2.2 數(shù)據(jù)持久層
相比于傳統(tǒng)JDBC數(shù)據(jù)庫(kù)管理而言,使用MyBatis應(yīng)用程序框架,創(chuàng)建SQL Session Factory實(shí)例,以及對(duì)JDBC數(shù)據(jù)庫(kù)封裝,能大大簡(jiǎn)化注冊(cè)驅(qū)動(dòng)、connection創(chuàng)建、statement創(chuàng)建、手動(dòng)參數(shù)設(shè)置、結(jié)果集檢索等的代碼執(zhí)行流程,支持SQL語(yǔ)句對(duì)其他連接池的配置,還可以修改mapper文件中SQL配置、提高應(yīng)用程序開(kāi)發(fā)的效率。在完成SQL語(yǔ)句查詢、執(zhí)行后,Mybatis會(huì)將返回的ResultSet對(duì)象,轉(zhuǎn)換成Java對(duì)象。因此方便獲取、寫(xiě)出SQL語(yǔ)句的執(zhí)行結(jié)果,才是MyBatis框架技術(shù)的核心競(jìng)爭(zhēng)力。
2.3 服務(wù)層
對(duì)于網(wǎng)站數(shù)據(jù)庫(kù)訪問(wèn)、數(shù)據(jù)源信息獲取等的配置與管理,通常采用Spring DAO訪問(wèn)對(duì)象模式,定義接口類RoleDao、接口實(shí)現(xiàn)類RoleDaoImpl,從任何配置好的數(shù)據(jù)源處,根據(jù)ID查詢用戶角色信息,最后在Mybatis Mapper配置文件中添加
2.4 邏輯控制層
在Web應(yīng)用系統(tǒng)用戶、功能服務(wù)增刪改等執(zhí)行過(guò)程中,需要Form表單對(duì)用戶信息的各個(gè)字段作出臨時(shí)存儲(chǔ),這時(shí)就會(huì)借助于SpringMVC設(shè)置表單類RoleInfoForm。其中用戶信息表的每個(gè)字段,都被定義為L(zhǎng)etter)和Setter)類,然后在Controller函數(shù)參數(shù)列表,直接出JavaBean對(duì)象,再利用MetaData指定系統(tǒng)應(yīng)用后臺(tái)Bean對(duì)象,進(jìn)行實(shí)例化、配置和封裝,以此完成配置文件請(qǐng)求地址、信息存儲(chǔ)的分配與管理。
2.5 表示層
對(duì)于web應(yīng)用系統(tǒng)頁(yè)面視圖表示、功能指令跳轉(zhuǎn)等服務(wù)的實(shí)現(xiàn),則是由SpringMVC框架通過(guò)Dispatcher Servlet核心,負(fù)責(zé)鏈接地址、提交表單請(qǐng)求的統(tǒng)一分發(fā),轉(zhuǎn)發(fā)到注冊(cè)過(guò)的Controller類中。先由用戶向服務(wù)器發(fā)送請(qǐng)求,再利用DispatcherServlet對(duì)URL請(qǐng)求作出解析,得到請(qǐng)求資源標(biāo)識(shí)符(URI),之后調(diào)用HandlerMapping配置處理器、攔截器對(duì)象,最后將配置好視圖解析器ftl文件,以及ModelAndView對(duì)象渲染結(jié)果,返回至用戶客戶端。
3 結(jié)束語(yǔ)
SSM作為典型的MVC框架,在利用該框架整合結(jié)構(gòu)進(jìn)行系統(tǒng)開(kāi)發(fā)過(guò)程中,通常被劃分為表示層、控制層、服務(wù)層、數(shù)據(jù)庫(kù)訪問(wèn)層等層級(jí)。其中Spring為提供切面編程、Ioc解耦的容器框架,通過(guò)控制反轉(zhuǎn)(或依賴注入)對(duì)軟件設(shè)計(jì)對(duì)象做出解耦操作,讓Spring Bean以配置文件進(jìn)行組合,被用于復(fù)雜應(yīng)用程序的分層架構(gòu)設(shè)計(jì)。之后SpringMVC主要圍繞Servlet展開(kāi)模型對(duì)象設(shè)計(jì),運(yùn)用多種控制器處理用戶發(fā)送的請(qǐng)求,再將相關(guān)處理結(jié)果返回至View視圖。最后MyBatis為支持普通SQL查詢、存儲(chǔ)過(guò)程,以及高級(jí)映射的優(yōu)秀持久層框架,主要針對(duì)整體應(yīng)用架構(gòu)的開(kāi)發(fā)需求,更加方便的管理數(shù)據(jù)輸入輸出、SQL語(yǔ)句執(zhí)行[1]。
參考文獻(xiàn):
[1] 賀雪梅.web應(yīng)用開(kāi)發(fā)中的SSM框架設(shè)計(jì)[J].電子世界,2019(1):206.
[2] 唐權(quán).SSM框架在JavaEE教學(xué)中的應(yīng)用與實(shí)踐[J].福建電腦,2017,33(12):93-94,61.
[3] 李洋.SSM框架在Web應(yīng)用開(kāi)發(fā)中的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016,26(12):190-194.
[4] 鄒紅霆.基于SSM框架的Web系統(tǒng)研究與應(yīng)用[J].湖南理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2017,30(1):39-43.
[5] 張宇,王映輝,張翔南.基于Spring的MVC框架設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2010,36(4):59-62.
【通聯(lián)編輯:謝媛媛】