郝麗萍
(河北省張家口市地方病防治所 075000)
經(jīng)過系統(tǒng)分析,地方病防治統(tǒng)計(jì)年報(bào)系統(tǒng)主要包括用戶管理、病種種類管理、病區(qū)信息管理、病種年報(bào)表填報(bào)、病種年報(bào)表維護(hù)、病種年報(bào)表數(shù)據(jù)分析模塊。
(1)用戶管理模塊主要功能:根據(jù)地方病統(tǒng)計(jì)年報(bào)表填報(bào)經(jīng)驗(yàn)對(duì)縣(區(qū))、市填報(bào)審核人員進(jìn)行管理和權(quán)限分配。系統(tǒng)管理員負(fù)責(zé)給各類用戶分配賬號(hào)和設(shè)置初始密碼,并分配相應(yīng)的權(quán)限。用戶只有通過輸入賬號(hào)和密碼才能進(jìn)入管理系統(tǒng),并對(duì)有權(quán)限的信息進(jìn)行操作。
(2)病種種類管理模塊主要功能:對(duì)地方病統(tǒng)計(jì)年報(bào)表填報(bào)操作中使用的病種信息提供維護(hù)功能,主要包括對(duì)原有病種信息的導(dǎo)入及新增病種的添加、修改等功能。
(3)病區(qū)信息管理模塊主要功能:對(duì)地方病統(tǒng)計(jì)年報(bào)表填報(bào)操作中使用的病區(qū)信息提供維護(hù)功能,主要包括對(duì)原有病區(qū)信息的導(dǎo)入及新增病區(qū)的添加、修改等功能。
(4)病種年報(bào)表填報(bào)模塊主要功能:縣(區(qū))按照病區(qū)及病種信息對(duì)相關(guān)報(bào)表信息進(jìn)行填報(bào)、修改、刪除及審核上報(bào)、重報(bào)等功能。
(5)病種年報(bào)維護(hù)模塊主要功能:對(duì)各縣(區(qū))單位錄入上報(bào)的年報(bào)數(shù)據(jù)提供修改、刪除、下載、下發(fā)重報(bào)指令管理。
(6) 病種年報(bào)生成:自動(dòng)將縣(區(qū))上報(bào)的病種年報(bào)表生成固定格式的統(tǒng)計(jì)年報(bào)表,并可導(dǎo)出、下載。
(7)病種年報(bào)數(shù)據(jù)分析模塊主要功能:按照病種、縣(區(qū))及時(shí)間段進(jìn)行統(tǒng)計(jì)分析,生成統(tǒng)計(jì)分析結(jié)果并可導(dǎo)出。
經(jīng)過系統(tǒng)分析,地方病防治統(tǒng)計(jì)年報(bào)系統(tǒng)主要包括地方病防治統(tǒng)計(jì)年報(bào)系統(tǒng)主要包括用戶管理、病種種類管理、病區(qū)信息管理、病種年報(bào)表填報(bào)、病種年報(bào)表維護(hù)、病種年報(bào)表數(shù)據(jù)分析等模塊。
根據(jù)上述系統(tǒng)的需求分析的主要內(nèi)容,結(jié)合SSH2框架的設(shè)計(jì)思想,將地方病防治統(tǒng)計(jì)年報(bào)系統(tǒng)分成模型部分、控制部分和視圖部分。如此,在系統(tǒng)的開發(fā)過程中既能夠?qū)崿F(xiàn)角色分離又能夠提高系統(tǒng)的可重用。本系統(tǒng)采用SSH2框架結(jié)合JSP技術(shù)進(jìn)行開發(fā),使系統(tǒng)界面開發(fā)的更快捷、更流暢,使數(shù)據(jù)訪問更簡潔、更易用。地方病防治統(tǒng)計(jì)年報(bào)系統(tǒng)功能設(shè)計(jì)如圖1所示。

圖1 地方病防治統(tǒng)計(jì)年報(bào)系統(tǒng)
該系統(tǒng)采用Struts2、Spring、Hibernate、JSP當(dāng)今流行的開發(fā)技術(shù),實(shí)現(xiàn)了系統(tǒng)的表示層(View)、控制層(Controller)、業(yè)務(wù)層(DAO)和數(shù)據(jù)持久層(Data Persistence)。利用Struts2實(shí)現(xiàn)Web表示層,Hibernate實(shí)現(xiàn)數(shù)據(jù)訪問和持久化層,Spring實(shí)現(xiàn)業(yè)務(wù)層和整合工作,頁面開發(fā)采用JSP技術(shù)。本系統(tǒng)具備易用性、高效性、可擴(kuò)展性等綜合特征。
(1)JSP技術(shù)
JSP(Java Server Page,Java應(yīng)用頁面程序)是一種開發(fā)動(dòng)態(tài)頁面的技術(shù)。JSP頁面由HTML 代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面被客戶端請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后生成的HTML頁面返回給客戶端的瀏覽器。Java Servlet是JSP技術(shù)的基礎(chǔ),而且大型的Web 應(yīng)用程序的開發(fā)需要Java Servlet和JSP配合才能完成。JSP具備了Java技術(shù)的完全面向?qū)ο蟆⑵脚_(tái)無關(guān)性且安全可靠、主要面向Internet的特點(diǎn)。
(2)Struts2技術(shù)
Struts2技術(shù)是一個(gè)JavaEE 的開源框架,主要應(yīng)用于Web 層(用于與用戶交互、并控制用戶請(qǐng)求),利用自帶的攔截器功能可以進(jìn)行AOP 編程,支持如jsp、freeMarker 等多種表現(xiàn)層技術(shù)。
(3)Spring技術(shù)
Spring技術(shù)是一個(gè)開源的、輕量級(jí)的JavaEE 應(yīng)用程序框架和容器,運(yùn)用控制反轉(zhuǎn)Ioc(inversion of control)/依賴注入DI(dependence injection)機(jī)制,提供查找和定位服務(wù)、事務(wù)管理、統(tǒng)一的資源配置管理、線程管理等基礎(chǔ)性的服務(wù),同時(shí)還負(fù)責(zé)管理業(yè)務(wù)對(duì)象的生命周期和它們之間的相互調(diào)用。
(4)Hibernate 技術(shù)
在B/S 項(xiàng)目的開發(fā)中,與數(shù)據(jù)庫的交互在絕大多數(shù)的項(xiàng)目中都是不可避免的,J2EE 規(guī)范提供了JDBC的編程接口來操作數(shù)據(jù)庫,通過JDBC,開發(fā)人員可以獲取數(shù)據(jù)庫連接,向數(shù)據(jù)庫發(fā)送SQL 語句,并對(duì)返回的結(jié)果集進(jìn)行封裝處理,以對(duì)象的形式返回給上層的應(yīng)用。這些跟數(shù)據(jù)庫交互的功能有人把它給抽象了出來,做成了一個(gè)稱為ORM( Object Relational Mapping)的框架。簡單的說,ORM 就是對(duì)象與關(guān)系的映射,而Hibernate是一個(gè)實(shí)現(xiàn)ORM 映射的持久層框架。
基于SSH2框架的地方病防治統(tǒng)計(jì)年報(bào)系統(tǒng),系統(tǒng)開發(fā)環(huán)境:JDK 1.5,Eclipse+Myeclipse;開發(fā)語言采用JAVA;頁面開發(fā)采用JSP技術(shù);服務(wù)器:weblogic9.0 ;數(shù)據(jù)庫MySQL5.0。
(1)持久層DAO的設(shè)計(jì)
系統(tǒng)在實(shí)現(xiàn)與數(shù)據(jù)庫的數(shù)據(jù)交互時(shí),使用Repository模式(通過用來訪問領(lǐng)域?qū)ο蟮囊粋€(gè)類似集合的接口,在領(lǐng)域與數(shù)據(jù)映射層之間進(jìn)行協(xié)調(diào)),IRepository接口,實(shí)現(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è)務(wù)層的設(shè)計(jì)
Spring框架在業(yè)務(wù)邏輯層可以處理應(yīng)用程序的業(yè)務(wù)邏輯和業(yè)務(wù)校驗(yàn),對(duì)事務(wù)進(jìn)行管理,可以管理業(yè)務(wù)層中各個(gè)對(duì)象的依賴關(guān)系,執(zhí)行相應(yīng)的業(yè)務(wù)程序來實(shí)現(xiàn)業(yè)務(wù)服務(wù)。在業(yè)務(wù)邏輯層,Spring的反轉(zhuǎn)控制機(jī)制降低整個(gè)系統(tǒng)耦合。Spring提供的HibernateTemplate大大簡化了Hibernate的開發(fā)過程。同時(shí)利用Spring來管理Struts的Action對(duì)象,避免了在程序中直接編寫組件的依賴關(guān)系建立,提高了Action的性能。
在處理業(yè)務(wù)邏輯層和持久化層之間的交互時(shí),采用了面向接口編程的面向?qū)ο笏枷牒蚐pring的IOC機(jī)制,使業(yè)務(wù)處理對(duì)象中的Setter方法接收的是接口,這樣可以很松散的定義對(duì)象的實(shí)現(xiàn),然后注入。Spring配置文件如下所示。
〈!—用戶管理業(yè)務(wù)——〉
〈Bean id=”usersService”〉
Class=”com.service.impl.UsersService”〉
〈Property name=”usersDao”ref=”usersDao”〉
〈/property〉
〈/bean〉
(3)控制層和表示層的設(shè)計(jì)
Web層包括 MVC模式中的控制層和表現(xiàn)層,采用 Struts完成。控制層編寫 Action首先根據(jù)系統(tǒng)具體需求定義一系列方法,在 Struts機(jī)制中該組件作為分控制器供主控制器調(diào)用。Action中定義一些私有變量,其中的方法通過調(diào)用 Service層來實(shí)現(xiàn)系統(tǒng)業(yè)務(wù)邏輯,并通過提供私有變量 get、set方法從前臺(tái)表現(xiàn)層接收用戶輸入的數(shù)據(jù)或者將經(jīng)過處理的數(shù)據(jù)傳到前臺(tái)表現(xiàn)層展示給用戶。Action中的方法都將返回一個(gè)字符串或者常量,來對(duì)應(yīng) Struts配置文件中的返回結(jié)果頁面。
表現(xiàn)層利用 JSP技術(shù)編寫,用來接收用戶的輸入數(shù)據(jù)或者用來顯示后臺(tái)傳來的響應(yīng)數(shù)據(jù)。這里主要用到 JavaScript技術(shù)、Ajax技術(shù)以及 JSTL標(biāo)簽庫或者 Struts標(biāo)簽庫。
通過開發(fā) JSP頁面,將頁面的鏈接地址、表單請(qǐng)求指向<action>,由 Struts和 Spring來將請(qǐng)求轉(zhuǎn)發(fā)到相應(yīng)的方法中,實(shí)現(xiàn)整個(gè)頁面的流轉(zhuǎn)。本文給出了系統(tǒng)管理模塊中的登錄系統(tǒng)部分代碼,通過配置文件Struts-config.xml進(jìn)行配置如下 :
< struts-config>
< form-beans>
<!--= = = = = =系統(tǒng)管理= = = = = =-->
< !--登錄-->
< 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)定性,相信在正式上線后會(huì)對(duì)張家口市地方病防治工作起到一 定的促進(jìn)作用。
為了解決張家口市地方病防治統(tǒng)計(jì)年報(bào)工作中存在的數(shù)據(jù)管理困難、處理上報(bào)不及時(shí)、統(tǒng)計(jì)結(jié)果滯后工作需要等問題,本文基于SSH2框架上結(jié)合JSP技術(shù),探討了系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),本系統(tǒng)具有很好的易用性、穩(wěn)定性和可擴(kuò)展性,能對(duì)地方病防治工作起到積極的推進(jìn)作用。
[1]何一堅(jiān).基于Struts 框架的MVC 應(yīng)用研究[J].電腦知識(shí)與技術(shù):學(xué)術(shù)交流,2010,6(5) : 3534-3536.
[2]徐玲玲,馮文超.基于MVC和EF的學(xué)位與研究生教育信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).計(jì)算機(jī)與現(xiàn)代化,2012,4(200):03-04 .
[3]姚慧廣,趙岳松.Web 編程中MVC 模型的應(yīng)用[J].微機(jī)發(fā)展(現(xiàn)更名:計(jì)算機(jī)技術(shù)與發(fā)展),2002,12(3):9-10.
[4]秦衡.基于SSH2 的計(jì)算機(jī)課程教學(xué)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2009,11(36):10517-10518 .
[5]田亮.基于SSH2 的物資管理系統(tǒng)的研究與實(shí)現(xiàn)[J].軟件導(dǎo)刊,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ā)完全自學(xué)手冊(cè):Struts+Hiber nate+Spring+Eclipse[M].北京:機(jī)械工業(yè)出版社,2009.
[9]楊明根, 等.Struts+ Spring+ Hibernate 架構(gòu)及開發(fā)方法[J].西南民族大學(xué)學(xué)報(bào), 2007,33(4):953-956.
[10]陸舟,Struts2技術(shù)內(nèi)幕:深入解析Struts框架設(shè)計(jì)與實(shí)現(xiàn)原理,機(jī)械工業(yè)出版社,2012。
[11]計(jì)文柯,Spring技術(shù)內(nèi)幕:深入解析Spring架構(gòu)與設(shè)計(jì)原理(第2版),機(jī)械工業(yè)出版社,2012。