郝麗萍
(河北省張家口市地方病防治所 075000)
經(jīng)過系統(tǒng)分析,地方病防治統(tǒng)計年報系統(tǒng)主要包括用戶管理、病種種類管理、病區(qū)信息管理、病種年報表填報、病種年報表維護、病種年報表數(shù)據(jù)分析模塊。
(1)用戶管理模塊主要功能:根據(jù)地方病統(tǒng)計年報表填報經(jīng)驗對縣(區(qū))、市填報審核人員進行管理和權限分配。系統(tǒng)管理員負責給各類用戶分配賬號和設置初始密碼,并分配相應的權限。用戶只有通過輸入賬號和密碼才能進入管理系統(tǒng),并對有權限的信息進行操作。
(2)病種種類管理模塊主要功能:對地方病統(tǒng)計年報表填報操作中使用的病種信息提供維護功能,主要包括對原有病種信息的導入及新增病種的添加、修改等功能。
(3)病區(qū)信息管理模塊主要功能:對地方病統(tǒng)計年報表填報操作中使用的病區(qū)信息提供維護功能,主要包括對原有病區(qū)信息的導入及新增病區(qū)的添加、修改等功能。
(4)病種年報表填報模塊主要功能:縣(區(qū))按照病區(qū)及病種信息對相關報表信息進行填報、修改、刪除及審核上報、重報等功能。
(5)病種年報維護模塊主要功能:對各縣(區(qū))單位錄入上報的年報數(shù)據(jù)提供修改、刪除、下載、下發(fā)重報指令管理。
(6) 病種年報生成:自動將縣(區(qū))上報的病種年報表生成固定格式的統(tǒng)計年報表,并可導出、下載。
(7)病種年報數(shù)據(jù)分析模塊主要功能:按照病種、縣(區(qū))及時間段進行統(tǒng)計分析,生成統(tǒng)計分析結(jié)果并可導出。
經(jīng)過系統(tǒng)分析,地方病防治統(tǒng)計年報系統(tǒng)主要包括地方病防治統(tǒng)計年報系統(tǒng)主要包括用戶管理、病種種類管理、病區(qū)信息管理、病種年報表填報、病種年報表維護、病種年報表數(shù)據(jù)分析等模塊。
根據(jù)上述系統(tǒng)的需求分析的主要內(nèi)容,結(jié)合SSH2框架的設計思想,將地方病防治統(tǒng)計年報系統(tǒng)分成模型部分、控制部分和視圖部分。如此,在系統(tǒng)的開發(fā)過程中既能夠?qū)崿F(xiàn)角色分離又能夠提高系統(tǒng)的可重用。本系統(tǒng)采用SSH2框架結(jié)合JSP技術進行開發(fā),使系統(tǒng)界面開發(fā)的更快捷、更流暢,使數(shù)據(jù)訪問更簡潔、更易用。地方病防治統(tǒng)計年報系統(tǒng)功能設計如圖1所示。
圖1 地方病防治統(tǒng)計年報系統(tǒng)
該系統(tǒng)采用Struts2、Spring、Hibernate、JSP當今流行的開發(fā)技術,實現(xiàn)了系統(tǒng)的表示層(View)、控制層(Controller)、業(yè)務層(DAO)和數(shù)據(jù)持久層(Data Persistence)。利用Struts2實現(xiàn)Web表示層,Hibernate實現(xiàn)數(shù)據(jù)訪問和持久化層,Spring實現(xiàn)業(yè)務層和整合工作,頁面開發(fā)采用JSP技術。本系統(tǒng)具備易用性、高效性、可擴展性等綜合特征。
(1)JSP技術
JSP(Java Server Page,Java應用頁面程序)是一種開發(fā)動態(tài)頁面的技術。JSP頁面由HTML 代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端請求以后對這些Java代碼進行處理,然后生成的HTML頁面返回給客戶端的瀏覽器。Java Servlet是JSP技術的基礎,而且大型的Web 應用程序的開發(fā)需要Java Servlet和JSP配合才能完成。JSP具備了Java技術的完全面向?qū)ο?、平臺無關性且安全可靠、主要面向Internet的特點。
(2)Struts2技術
Struts2技術是一個JavaEE 的開源框架,主要應用于Web 層(用于與用戶交互、并控制用戶請求),利用自帶的攔截器功能可以進行AOP 編程,支持如jsp、freeMarker 等多種表現(xiàn)層技術。
(3)Spring技術
Spring技術是一個開源的、輕量級的JavaEE 應用程序框架和容器,運用控制反轉(zhuǎn)Ioc(inversion of control)/依賴注入DI(dependence injection)機制,提供查找和定位服務、事務管理、統(tǒng)一的資源配置管理、線程管理等基礎性的服務,同時還負責管理業(yè)務對象的生命周期和它們之間的相互調(diào)用。
(4)Hibernate 技術
在B/S 項目的開發(fā)中,與數(shù)據(jù)庫的交互在絕大多數(shù)的項目中都是不可避免的,J2EE 規(guī)范提供了JDBC的編程接口來操作數(shù)據(jù)庫,通過JDBC,開發(fā)人員可以獲取數(shù)據(jù)庫連接,向數(shù)據(jù)庫發(fā)送SQL 語句,并對返回的結(jié)果集進行封裝處理,以對象的形式返回給上層的應用。這些跟數(shù)據(jù)庫交互的功能有人把它給抽象了出來,做成了一個稱為ORM( Object Relational Mapping)的框架。簡單的說,ORM 就是對象與關系的映射,而Hibernate是一個實現(xiàn)ORM 映射的持久層框架。
基于SSH2框架的地方病防治統(tǒng)計年報系統(tǒng),系統(tǒng)開發(fā)環(huán)境:JDK 1.5,Eclipse+Myeclipse;開發(fā)語言采用JAVA;頁面開發(fā)采用JSP技術;服務器:weblogic9.0 ;數(shù)據(jù)庫MySQL5.0。
(1)持久層DAO的設計
系統(tǒng)在實現(xiàn)與數(shù)據(jù)庫的數(shù)據(jù)交互時,使用Repository模式(通過用來訪問領域?qū)ο蟮囊粋€類似集合的接口,在領域與數(shù)據(jù)映射層之間進行協(xié)調(diào)),IRepository接口,實現(xiàn)了基本的CRUD需求,即 Create(創(chuàng)建)、Retrieve(獲取)、Update(更新)和Delete(刪除)4種操作。
public class Repository<T> : IRepository<T> where T : class
{
public DataContext context;
public Repository(DataContext context)
{
this.context = context;
}
public IEnumerable<T> FindAll(Func<T, bool> exp)
{
return context.GetTable<T>().Where(exp);
}
public void Add(T entity)
{
context.GetTable<T>().InsertOnSubmit(entity);
}
public void Delete(T entity)
{
context.GetTable<T>().DeleteOnSubmit(entity);
}
public void Save()
{
context.SubmitChanges();
}
}
(2)業(yè)務層的設計
Spring框架在業(yè)務邏輯層可以處理應用程序的業(yè)務邏輯和業(yè)務校驗,對事務進行管理,可以管理業(yè)務層中各個對象的依賴關系,執(zhí)行相應的業(yè)務程序來實現(xiàn)業(yè)務服務。在業(yè)務邏輯層,Spring的反轉(zhuǎn)控制機制降低整個系統(tǒng)耦合。Spring提供的HibernateTemplate大大簡化了Hibernate的開發(fā)過程。同時利用Spring來管理Struts的Action對象,避免了在程序中直接編寫組件的依賴關系建立,提高了Action的性能。
在處理業(yè)務邏輯層和持久化層之間的交互時,采用了面向接口編程的面向?qū)ο笏枷牒蚐pring的IOC機制,使業(yè)務處理對象中的Setter方法接收的是接口,這樣可以很松散的定義對象的實現(xiàn),然后注入。Spring配置文件如下所示。
〈!—用戶管理業(yè)務——〉
〈Bean id=”usersService”〉
Class=”com.service.impl.UsersService”〉
〈Property name=”usersDao”ref=”usersDao”〉
〈/property〉
〈/bean〉
(3)控制層和表示層的設計
Web層包括 MVC模式中的控制層和表現(xiàn)層,采用 Struts完成??刂茖泳帉?Action首先根據(jù)系統(tǒng)具體需求定義一系列方法,在 Struts機制中該組件作為分控制器供主控制器調(diào)用。Action中定義一些私有變量,其中的方法通過調(diào)用 Service層來實現(xiàn)系統(tǒng)業(yè)務邏輯,并通過提供私有變量 get、set方法從前臺表現(xiàn)層接收用戶輸入的數(shù)據(jù)或者將經(jīng)過處理的數(shù)據(jù)傳到前臺表現(xiàn)層展示給用戶。Action中的方法都將返回一個字符串或者常量,來對應 Struts配置文件中的返回結(jié)果頁面。
表現(xiàn)層利用 JSP技術編寫,用來接收用戶的輸入數(shù)據(jù)或者用來顯示后臺傳來的響應數(shù)據(jù)。這里主要用到 JavaScript技術、Ajax技術以及 JSTL標簽庫或者 Struts標簽庫。
通過開發(fā) JSP頁面,將頁面的鏈接地址、表單請求指向<action>,由 Struts和 Spring來將請求轉(zhuǎn)發(fā)到相應的方法中,實現(xiàn)整個頁面的流轉(zhuǎn)。本文給出了系統(tǒng)管理模塊中的登錄系統(tǒng)部分代碼,通過配置文件Struts-config.xml進行配置如下 :
< struts-config>
< form-beans>
<!--= = = = = =系統(tǒng)管理= = = = = =-->
< ?。卿洠?/p>
< form-bean name = " loginForm " type= " xt.
form.LoginForm”/>
< action-mappings>
< action attribute = "loginForm " input= "/login.
jsp"
name = " loginForm" path = " / login"
scope = " request"
type = " xt.action.LoginAction”>
< forward name= "success" path="/index.jsp”/>
< / action>
< / action-mappings>
< / struts-config>
經(jīng)測試使用,系統(tǒng)表現(xiàn)出很好的易用性和穩(wěn)定性,相信在正式上線后會對張家口市地方病防治工作起到一 定的促進作用。
為了解決張家口市地方病防治統(tǒng)計年報工作中存在的數(shù)據(jù)管理困難、處理上報不及時、統(tǒng)計結(jié)果滯后工作需要等問題,本文基于SSH2框架上結(jié)合JSP技術,探討了系統(tǒng)的設計與實現(xiàn),本系統(tǒng)具有很好的易用性、穩(wěn)定性和可擴展性,能對地方病防治工作起到積極的推進作用。
[1]何一堅.基于Struts 框架的MVC 應用研究[J].電腦知識與技術:學術交流,2010,6(5) : 3534-3536.
[2]徐玲玲,馮文超.基于MVC和EF的學位與研究生教育信息管理系統(tǒng)設計與實現(xiàn).計算機與現(xiàn)代化,2012,4(200):03-04 .
[3]姚慧廣,趙岳松.Web 編程中MVC 模型的應用[J].微機發(fā)展(現(xiàn)更名:計算機技術與發(fā)展),2002,12(3):9-10.
[4]秦衡.基于SSH2 的計算機課程教學管理系統(tǒng)的設計與實現(xiàn)[J].電腦知識與技術,2009,11(36):10517-10518 .
[5]田亮.基于SSH2 的物資管理系統(tǒng)的研究與實現(xiàn)[J].軟件導刊,2010,9(5):91-93 .
[6]BODOFF S,GREEN D.The J2EE Tutorial [M].Hong Kong: Pearson Education,2002.
[7]ROD J.J2EE development frameworks[J].Computer,2005,38(1):107-110.
[8]白廣元.Java Web 整合開發(fā)完全自學手冊:Struts+Hiber nate+Spring+Eclipse[M].北京:機械工業(yè)出版社,2009.
[9]楊明根, 等.Struts+ Spring+ Hibernate 架構及開發(fā)方法[J].西南民族大學學報, 2007,33(4):953-956.
[10]陸舟,Struts2技術內(nèi)幕:深入解析Struts框架設計與實現(xiàn)原理,機械工業(yè)出版社,2012。
[11]計文柯,Spring技術內(nèi)幕:深入解析Spring架構與設計原理(第2版),機械工業(yè)出版社,2012。