田曉娜++趙晴
摘 要:為了滿足企業(yè)對(duì)考勤系統(tǒng)的可移植性、可維護(hù)性的需求,采用基于MVC模式的SSI框架,設(shè)計(jì)并實(shí)現(xiàn)一套考勤系統(tǒng)。利用MVC模式對(duì)系統(tǒng)進(jìn)行簡(jiǎn)單有效的分層式設(shè)計(jì),使得系統(tǒng)的結(jié)構(gòu)清晰,功能完善,同時(shí)SSI框架提供的豐富功能能夠簡(jiǎn)化開發(fā)過(guò)程,降低系統(tǒng)代碼耦合度,提高了代碼的復(fù)用性。實(shí)踐證明,SSI框架提高了開發(fā)效率和系統(tǒng)的可維護(hù)性,同時(shí)增強(qiáng)了系統(tǒng)的可擴(kuò)展性。
關(guān)鍵詞:考勤系統(tǒng);SSI框架;MVC模式;iBATIS
中圖分類號(hào):TP319 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2015)02-00-02
0 引 言
隨著互聯(lián)網(wǎng)的發(fā)展,基于互聯(lián)網(wǎng)多平臺(tái)共享的Java語(yǔ)言的優(yōu)勢(shì)越來(lái)越突出,建立在這種跨平臺(tái)理念的Java Web服務(wù)基礎(chǔ)上的各種應(yīng)用也在互聯(lián)網(wǎng)應(yīng)用中脫穎而出。通過(guò)使用基于MVC模式的Struts2技術(shù)、Spring技術(shù)和iBATIS技術(shù),將這三種比較成熟的技術(shù)有機(jī)結(jié)合起來(lái)構(gòu)建SSI技術(shù)架構(gòu),可以實(shí)現(xiàn)關(guān)注點(diǎn)的分離,層內(nèi)的高內(nèi)聚和層間的松耦合。使整個(gè)系統(tǒng)具備良好的穩(wěn)定性、可維護(hù)性和可擴(kuò)展性[1]。
考勤系統(tǒng)是一個(gè)能夠?qū)崿F(xiàn)考勤管理的智能化管理系統(tǒng),能夠使工作人員在崗位上的工作狀態(tài)得到及時(shí)的反饋,提高考勤管理的效率。但是,目前考勤系統(tǒng)普遍存在擴(kuò)展性不高、可移植性差、后期維護(hù)困難、代碼繁瑣等問(wèn)題,已經(jīng)不能滿足現(xiàn)代企業(yè)發(fā)展的需求。因此,設(shè)計(jì)并實(shí)現(xiàn)了一套基于SSI框架的考勤系統(tǒng)。系統(tǒng)基于B/S結(jié)構(gòu),采用myeclipse平臺(tái)進(jìn)行開發(fā),降低了維護(hù)成本,提高了軟件的開發(fā)效率。
1 SSI框架概述
SSI框架就是Struts2框架、Spring框架和iBATIS框架的整合。Struts2框架負(fù)責(zé)表現(xiàn)層,完成頁(yè)面顯示、響應(yīng)用戶請(qǐng)求等功能;Spring主要負(fù)責(zé)業(yè)務(wù)邏輯層,完成應(yīng)用系統(tǒng)的業(yè)務(wù)邏輯與事務(wù)邏輯等功能;IBTIS主要負(fù)責(zé)數(shù)據(jù)持久化,完成于數(shù)據(jù)層的交互功能[2]。SSI框架的架構(gòu)如圖1所示。
1.1 Struts2框架
Struts2是使用JSP和Servlet來(lái)開發(fā)Web層的應(yīng)用框架,它是MVC設(shè)計(jì)模式的一種實(shí)現(xiàn)方式。它以WebWork為核心,采用了攔截器機(jī)制來(lái)處理用戶的請(qǐng)求,從而使業(yè)務(wù)邏輯與Servlet API完全脫離[3]。
Struts2分為視圖、模型、控制器三個(gè)部分。視圖主要由JSP建立。Struts2自身包含一組標(biāo)簽庫(kù),靈活運(yùn)用可以提高開發(fā)效率。Struts2中的模型由一系列的Bean來(lái)實(shí)現(xiàn),框架本身提供一種FormBean在模型和視圖之間保存數(shù)據(jù),也可以自己定義業(yè)務(wù)邏輯Bean。Struts2中的控制器主要是它自身提供的ActionServlet,其核心就是strus2-config.xml配置文件。ActionServlet通過(guò)配置文件中的定義將控制轉(zhuǎn)移到Action類當(dāng)中。
圖1 SSI框架架構(gòu)
1.2 Spring框架
Spring是業(yè)務(wù)層框架,可以很好地連接表示層和持久層。它使用控制反轉(zhuǎn)(IoC)模式將應(yīng)用程序的配置和依賴性規(guī)范與實(shí)際應(yīng)用程序代碼分開。通過(guò)配置管理特性,Spring AOP模塊直接將面向?qū)ο蟮木幊坦δ芗傻搅薙pring框架中[4]。它對(duì)不同的數(shù)據(jù)訪問(wèn)技術(shù)提供了統(tǒng)一的接口。
1.3 iBATIS框架
iBATIS是一個(gè)基于Java的持久層框架。包括SQL Maps和Data Access Object(DAO)。它是一種“半自動(dòng)化”的ORM實(shí)現(xiàn)。開發(fā)人員需要編寫具體的SQL語(yǔ)句,通過(guò)映射配置文件,可以將SQL所需要的參數(shù)和返回的結(jié)果字段映射到指定的POJO上。SQL Maps組件可以讓開發(fā)人員在不使用JDBC API以及不耦合Java代碼與SQL語(yǔ)句的情況下實(shí)現(xiàn)Java對(duì)象和關(guān)系型DBMS系統(tǒng)的讀寫操作[5]。同時(shí),iBATIS允許開發(fā)者在項(xiàng)目后期的修改過(guò)程中很方便地對(duì)數(shù)據(jù)庫(kù)表進(jìn)行新的設(shè)計(jì)或者修改,使系統(tǒng)具有更強(qiáng)的擴(kuò)展性和維護(hù)性。
2 基于SSI框架的考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
2.1 系統(tǒng)架構(gòu)模式
MVC是模型(Model)-視圖(View)-控制器(Controller)的縮寫,也就是說(shuō)軟件開發(fā)的三層設(shè)計(jì)模式,降系統(tǒng)分為系統(tǒng)表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)持久層,強(qiáng)制性地將應(yīng)用程序的輸入、處理和輸出分開,形成獨(dú)立的單元模塊,各自處理自己的任務(wù)[6]。
基于SSI框架的考勤系統(tǒng)的MVC體系結(jié)構(gòu)如圖2所示。
圖2 基于SSI框架的考勤系統(tǒng)的MVC體系結(jié)構(gòu)
2.2 系統(tǒng)功能模塊
充分考慮考勤系統(tǒng)的需求,系統(tǒng)設(shè)計(jì)功能主要四個(gè)模塊:系統(tǒng)管理、基礎(chǔ)數(shù)據(jù)、登記審批和查詢統(tǒng)計(jì)。系統(tǒng)管理主要實(shí)現(xiàn)管理員對(duì)員工、部門、年假、權(quán)限等信息的管理?;A(chǔ)數(shù)據(jù)主要實(shí)現(xiàn)對(duì)工作日和非工作日的設(shè)置,以及考勤數(shù)據(jù)的導(dǎo)入功能。登記審批主要實(shí)現(xiàn)員工補(bǔ)簽、請(qǐng)假等考勤的登記,以及領(lǐng)導(dǎo)對(duì)登記的審批。查詢統(tǒng)計(jì)實(shí)現(xiàn)了對(duì)包括出勤、缺勤、請(qǐng)假、遲到早退等考勤的統(tǒng)計(jì),以及個(gè)人對(duì)自己考勤歷史數(shù)據(jù)的查詢??记谙到y(tǒng)功能結(jié)構(gòu)圖如圖3所示。
圖3 考勤系統(tǒng)功能結(jié)構(gòu)圖
2.3 考勤系統(tǒng)的實(shí)現(xiàn)
(1)系統(tǒng)表現(xiàn)層
系統(tǒng)表現(xiàn)層就是系統(tǒng)頁(yè)面,為了給用戶提供友好的系統(tǒng)操作界面,所以采用JSP頁(yè)面實(shí)現(xiàn)。系統(tǒng)表現(xiàn)層可以讓用戶在系統(tǒng)中輸入數(shù)據(jù),并提供數(shù)據(jù)驗(yàn)證功能[7]。本層主要包含的是*.jsp文件。
(2)業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層包含各模塊功能實(shí)現(xiàn)的詳細(xì)代碼。用于執(zhí)行業(yè)務(wù)流程和制定數(shù)據(jù)的業(yè)務(wù)規(guī)則,實(shí)現(xiàn)系統(tǒng)的完整性。它為表現(xiàn)層提供業(yè)務(wù)處理服務(wù)[8]。首先,實(shí)現(xiàn)系統(tǒng)的基礎(chǔ)對(duì)象類Model的開發(fā);其次,實(shí)現(xiàn)各業(yè)務(wù)模塊的功能接口DAO層以及對(duì)應(yīng)的實(shí)現(xiàn)層(DAO Impl);然后,實(shí)現(xiàn)Struts Action類的設(shè)計(jì),用以接收J(rèn)SP頁(yè)面的請(qǐng)求,并根據(jù)接收到的請(qǐng)求調(diào)用相應(yīng)的業(yè)務(wù)組件;最后,根據(jù)業(yè)務(wù)邏輯處理類Service層調(diào)用DAO接口完成于數(shù)據(jù)持久層的操作[9]。以登陸為例,Struts.xml代碼如下:
(3)數(shù)據(jù)持久層
數(shù)據(jù)持久層是對(duì)DAO接口的具體實(shí)現(xiàn)。由DAO接口中的實(shí)現(xiàn)類形成的XML文件、DAO接口的實(shí)現(xiàn)類和iBATIS配置文件組成[10]。數(shù)據(jù)持久層負(fù)責(zé)業(yè)務(wù)邏輯層與數(shù)據(jù)庫(kù)之間的通信,提供數(shù)據(jù)的存取服務(wù)。DaoImpl實(shí)現(xiàn)Dao接口,SQL語(yǔ)句在XML類中,并配置到SqlMap-Config.xml文件中。從而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。
3 結(jié) 語(yǔ)
基于SSI框架,通過(guò)對(duì)考勤系統(tǒng)進(jìn)行詳細(xì)設(shè)計(jì),完成了考勤系統(tǒng)的功能開發(fā),成功地將SSI框架的思想應(yīng)用于考勤系統(tǒng)的研究開發(fā),證明了SSI框架在降低代碼耦合度,增加代碼在健壯性、可重用性等方面的優(yōu)勢(shì)。
參考文獻(xiàn)
[1]孫強(qiáng),孫龍清,邱小彬.基于Struts+Spring+iBATIS的輕量級(jí)Web應(yīng)用框架研究[J].計(jì)算機(jī)應(yīng)用于軟件,2008,25(10):135-137.
[2]劉京華.Java Web整合開發(fā)王者歸來(lái)[M].北京:清華大學(xué)出版社,2010.
[3] Kurniawan B.深入淺出Struts2[M].楊濤,譯.北京:人民郵電出版社,2009.
[4]計(jì)文柯.Spring技術(shù)內(nèi)幕:深入解析Spring架構(gòu)與設(shè)計(jì)原理[M].北京:機(jī)械工業(yè)出版社,2012.
[5]銀強(qiáng).iBATIS在java中的應(yīng)用[J].價(jià)值工程,2010(33):160.
[6]劉斌.Java Web 整合開發(fā)(JSP+AJAX+Struts+Hibernate)[M].2版.北京:電子工業(yè)出版社,2006.
[7]馮潤(rùn)民.基于SSH的高校學(xué)生管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2009,35(6):280-282.
[8]楊生舉,施韶亭,牛振明,等.基于Struts+Spring+iBATIS復(fù)合框架的科技計(jì)劃項(xiàng)目管理系統(tǒng)研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(11):111-113.
[9]羅國(guó)濤.新型框架Struts2.0+Spring2.0+IBatis在MIS系統(tǒng)中的應(yīng)用[J].軟件導(dǎo)刊,2009,8(4):35-37.
[10]萬(wàn)云,劉電霆,鄧立華.基于iBATIS持久層擴(kuò)展緩存的分析及實(shí)現(xiàn)[J].軟件導(dǎo)刊,2010(5):19-21.