為克服手工處理學生考勤信息的缺點,采用JAVA環(huán)境下實現MVC設計模式的struts框架和實現數據持久化的Hibernate框架開發(fā)基于Web的學生考勤管理系統。在struts和Hibernate中添加DAO設計模式和業(yè)務代理模式來進一步提高系統的維護性和可擴展性。探討了如何結合PowerDesigner和Myeclipse等工具快速開發(fā)應用系統。
1、MVC設計模式設計模式概述
1.1 MVC設計模式
MVC設計模式是一種著名的軟件開發(fā)設計模式,它是模型、視圖、控制器(Mode1.View.Controller)縮寫。模型封裝了用戶數據和處理數據的業(yè)務邏輯;視圖提供了用戶界面,將用戶輸入數據傳遞給控制器或將模型數據顯示給用戶;控制器連接了模型和視圖,判斷請求交給哪個模型,調用視圖顯示模型處理用戶請求結果。
MVC設計模式將應用程序進行了分層,視圖和模型通過控制器連接,從而減少了用戶界面和業(yè)務邏輯之間的耦合,使程序設計更加清晰、靈活,也提高了軟件的可擴展性、可維護性。
1.2 Struts框架
Struts是基于的MVC模式應用框架,遵守了J2EE的Servlet、JSP等技術規(guī)范,并且根據J2EE的特點做了相應的變化和擴展,是J2EE體系架構的一種輕量級實現。
在Struts框架中,控制器由ActionServlet和Action類以及Struts.config.xml配置文件實現。ActionServlet是Struts框架的核心控制組件, 所有的用戶請求都被映射到ActionServlet, 由ActionServlet根據配置文件中的定義將控制轉移到指定的Action類。Action類是用戶請求與業(yè)務邏輯之間的橋梁,它執(zhí)行一個execute()方法并返回一個ActionForward對象,當ActionServlet接收到該對象后,根據Struts config.xml中的配置信息將請求轉發(fā)。Struts框架中的視圖主要由JSP頁面組成。ActionForm是Struts在視圖層的一個核心組件,它是專門用來在視圖層和控制層之間傳遞表單數據的DTO(Dam Transfer Object,數據傳輸對象),它還包括了用于數據驗證的validate()方法和用于數據復位的reset()方法。]在Struts應用程序中,開發(fā)人員可以選擇JavaBean、Hibernate、EJB等組件來實現Struts框架中的模型。
2、Hibernate持久化技術
Hibernate是一個基于Java的開放源代碼的O/R Mapping(對象關系映射框架),它通過其強大的O/R映射功能JAVA對象同存于關系數據庫中的數據進行映射,并對JDBC進行了輕量級的對象封裝,可以使JAVA程序員方便地使用對象編程思維來操縱數據庫,它不僅提供ORM映射服務,還提供數據查詢和數據緩存的方法,可以提高查詢和處理數據的效率。它是一種提供面向對象的數據庫服務中間件。
3、基于Struts和Hibernate的考勤管理系統的設計
隨著教育部對在校大學生出勤的相關規(guī)定出臺,各大專院校加大了對學生考勤的管理力度,但大部份都采用手工處理的方法,工作量大且效率低。本系統能夠實現網上對學生考勤信息進行添加、刪除、修改、查詢和統計功能,管理人員能及時了解學生出勤情況和某課班級某課程的出勤情況。在開發(fā)的過程中,使用PowerDesigner作為CASE工具,采用對Hibernate和Struts提供良好支持的Myeclipse 6.0作為系統的開發(fā)環(huán)境,數據庫采用MYSQL5.0,WEB服務器采用jakarta Tomcm6.0并安裝了JDK6.0。[nextpage]
3.1數據庫層的設計
PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地對管理信息系統進行分析設計。DataArchitect模塊是Powerdesigner的核心工具,它采用二級數據建模方式,即概念級和物理級。在概念級,概念數據模型(CDM)代表業(yè)務信息需求,不考慮在數據庫上的物理實現,通過它可以繪制系統的實體聯系圖(E.R圖),即系統的靜態(tài)特征;在物理級,物理數據模型(PDM)指定了物理實現的目標RDBMS的特征等細節(jié)。它可以生成數據庫腳本,通過選擇ODBC方式則可以直接連接到數據庫,從而直接產生數據庫表以及其他數據庫對象。它與其它設計軟件相配合使用可以縮短開發(fā)時間和使系統設計更優(yōu)化。
在本系統的設計過程中,我們利用PowerDesigner來完成系統數據庫概念設計和MYSQL數據庫表的工作。首先,在PowerDesigner中設計系統的概念層次的數據模型,通過它的CDM 功能創(chuàng)建實體關系圖來描述系統的數據組織結構。通過它的“檢查模型”功能,校驗概念數據模型中實體、實體屬性、實體標識和實體間關系等是否存在問題。接著,選擇MYSQL作為系統的目標數據庫,生成在MYSQL上實現的數據庫的物理數據模型(PDM):最后,通過“產生數據庫”功能,并選擇ODBC方式連接到指定的數據庫,從而直接產生MYSQL上的數據庫表以及其他數據庫對象。
3.2 持久化層的設計
數據持久層基于Hibernate架構,采用了DAO設計模式和抽象工廠設計模式。下面以學生類(Student)為例進行說明。首先,把學生信息封裝為VO(Value Object)。VO是一組值對象,只包含了一些屬性和getter/setter方法的POJO(Plan Old Java Bean) 。然后,采用DAO設計模式和抽象工廠設計模式,完成DAO工廠和Hibernate數據庫操作的具體實現。最后,利用Hibernate的配置文件完成從應用程序到數據庫的映射。
在Myeclipse開發(fā)環(huán)境中,首先配置數據庫服務器的連接,然后利用Myeclipse的Hibernate的逆向工程,可以自動完成持久化層的設計任務。例如對學生表(student)進行逆向工程, 將會自動生成Student.iava、AbstractStudent.iava、StudentDAO.iava、Student.hbm.xml等文件。其中,Abstract Student.iava就是一個封裝了Student信息的VO。Student DAO.java采用DAO模式封閉了數據庫操作。
在hibemate.cfg.xml配置文件中,定義了符合SQLServer規(guī)范的dialect方言,連接池訪問數據庫的URL資源定位地址以及數據庫名稱kq, 數據庫連接驅動程序,Hibernate管理事務、是否顯示SQL語句。在mapping映射文件配置部分,定義了教師表(Teacher)、學生表(Student1、考勤表(Attendance)等對應的映射文件等。在該層的設計中,VO的信息封裝體現了面向對象設計編程思想;DAO的設計模式和抽象工廠模式減弱了上層調用和具體實現之間的耦合;Hibemate配置實現了數據庫高移植性,只需要改變Hibemate配置文件,不用修改程序設計就可以完成不同數據庫之間的更換。
3.3 業(yè)務邏輯層設計
業(yè)務邏輯層包含了供客戶端程序調用的業(yè)務邏輯規(guī)則,以幫助客戶端完成業(yè)務操作。該層采用業(yè)務代理、DAO和抽象工廠設計模式使用業(yè)務代理、DAO和抽象工廠設計模式,可以使業(yè)務邏輯更加靈活,如果具體業(yè)務發(fā)生變化,在表示層和數據持久化層改變很小就可以完成改變,這種設計能夠增強系統的可維護性和靈活性。 [nextpage]
3.4 表示層設計
首先,建立用于用戶輸入和瀏覽的JSP視圖頁面和封裝用戶表單信息的ActionForm。接著,搭建用戶請求和業(yè)務邏輯之間的橋梁——Action組件,該組件負責把用戶信息和具體的業(yè)務邏輯處理聯系在一起。
最后,通過Struts配置連接ActionForm和Action,完成一個業(yè)務設計。該層設計中,采用頁面設計和表示層業(yè)務邏輯分離,提高了應用程序的可維護性。
4.總結
本文介紹了MVC設計模式以及Struts和Hibernate框架的工作原理,利用了他們的優(yōu)點互補,有機地將Struts+Hi.bernate框架結合起來構建了一個學生考勤管理系統,利用DAO設計模式、業(yè)務代理模式等克服了傳統Web信息系統的缺點,提高了系統的可維護性、可擴展性,降低了系統的耦合性。通過使用Powerdesigner和Myeclipse等開發(fā)工具能夠有效的加快開發(fā)速度和效率,大大減少開發(fā)人員的手工編寫代碼的工作量。隨著本系統的應用,教師可以隨時隨地上報出勤情況,管理人員可以隨時了解每門課程每個班級和每個學生的出勤情況,本系統通過匯總功能產生因出勤率低而取消考試資格的學生名單。這對提高教務管理工作效率意義較大。