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