郝丽萍
(河北省张家口市地方病防治所 075000)
经过系统分析,地方病防治统计年报系统主要包括用户管理、病种种类管理、病区信息管理、病种年报表填报、病种年报表维护、病种年报表数据分析模块。
(1)用户管理模块主要功能:根据地方病统计年报表填报经验对县(区)、市填报审核人员进行管理和权限分配。系统管理员负责给各类用户分配账号和设置初始密码,并分配相应的权限。用户只有通过输入账号和密码才能进入管理系统,并对有权限的信息进行操作。
(2)病种种类管理模块主要功能:对地方病统计年报表填报操作中使用的病种信息提供维护功能,主要包括对原有病种信息的导入及新增病种的添加、修改等功能。
(3)病区信息管理模块主要功能:对地方病统计年报表填报操作中使用的病区信息提供维护功能,主要包括对原有病区信息的导入及新增病区的添加、修改等功能。
(4)病种年报表填报模块主要功能:县(区)按照病区及病种信息对相关报表信息进行填报、修改、删除及审核上报、重报等功能。
(5)病种年报维护模块主要功能:对各县(区)单位录入上报的年报数据提供修改、删除、下载、下发重报指令管理。
(6) 病种年报生成:自动将县(区)上报的病种年报表生成固定格式的统计年报表,并可导出、下载。
(7)病种年报数据分析模块主要功能:按照病种、县(区)及时间段进行统计分析,生成统计分析结果并可导出。
经过系统分析,地方病防治统计年报系统主要包括地方病防治统计年报系统主要包括用户管理、病种种类管理、病区信息管理、病种年报表填报、病种年报表维护、病种年报表数据分析等模块。
根据上述系统的需求分析的主要内容,结合SSH2框架的设计思想,将地方病防治统计年报系统分成模型部分、控制部分和视图部分。如此,在系统的开发过程中既能够实现角色分离又能够提高系统的可重用。本系统采用SSH2框架结合JSP技术进行开发,使系统界面开发的更快捷、更流畅,使数据访问更简洁、更易用。地方病防治统计年报系统功能设计如图1所示。
图1 地方病防治统计年报系统
该系统采用Struts2、Spring、Hibernate、JSP当今流行的开发技术,实现了系统的表示层(View)、控制层(Controller)、业务层(DAO)和数据持久层(Data Persistence)。利用Struts2实现Web表示层,Hibernate实现数据访问和持久化层,Spring实现业务层和整合工作,页面开发采用JSP技术。本系统具备易用性、高效性、可扩展性等综合特征。
(1)JSP技术
JSP(Java Server Page,Java应用页面程序)是一种开发动态页面的技术。JSP页面由HTML 代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP技术的基础,而且大型的Web 应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的完全面向对象、平台无关性且安全可靠、主要面向Internet的特点。
(2)Struts2技术
Struts2技术是一个JavaEE 的开源框架,主要应用于Web 层(用于与用户交互、并控制用户请求),利用自带的拦截器功能可以进行AOP 编程,支持如jsp、freeMarker 等多种表现层技术。
(3)Spring技术
Spring技术是一个开源的、轻量级的JavaEE 应用程序框架和容器,运用控制反转Ioc(inversion of control)/依赖注入DI(dependence injection)机制,提供查找和定位服务、事务管理、统一的资源配置管理、线程管理等基础性的服务,同时还负责管理业务对象的生命周期和它们之间的相互调用。
(4)Hibernate 技术
在B/S 项目的开发中,与数据库的交互在绝大多数的项目中都是不可避免的,J2EE 规范提供了JDBC的编程接口来操作数据库,通过JDBC,开发人员可以获取数据库连接,向数据库发送SQL 语句,并对返回的结果集进行封装处理,以对象的形式返回给上层的应用。这些跟数据库交互的功能有人把它给抽象了出来,做成了一个称为ORM( Object Relational Mapping)的框架。简单的说,ORM 就是对象与关系的映射,而Hibernate是一个实现ORM 映射的持久层框架。
基于SSH2框架的地方病防治统计年报系统,系统开发环境:JDK 1.5,Eclipse+Myeclipse;开发语言采用JAVA;页面开发采用JSP技术;服务器:weblogic9.0 ;数据库MySQL5.0。
(1)持久层DAO的设计
系统在实现与数据库的数据交互时,使用Repository模式(通过用来访问领域对象的一个类似集合的接口,在领域与数据映射层之间进行协调),IRepository接口,实现了基本的CRUD需求,即 Create(创建)、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)业务层的设计
Spring框架在业务逻辑层可以处理应用程序的业务逻辑和业务校验,对事务进行管理,可以管理业务层中各个对象的依赖关系,执行相应的业务程序来实现业务服务。在业务逻辑层,Spring的反转控制机制降低整个系统耦合。Spring提供的HibernateTemplate大大简化了Hibernate的开发过程。同时利用Spring来管理Struts的Action对象,避免了在程序中直接编写组件的依赖关系建立,提高了Action的性能。
在处理业务逻辑层和持久化层之间的交互时,采用了面向接口编程的面向对象思想和Spring的IOC机制,使业务处理对象中的Setter方法接收的是接口,这样可以很松散的定义对象的实现,然后注入。Spring配置文件如下所示。
〈!—用户管理业务——〉
〈Bean id=”usersService”〉
Class=”com.service.impl.UsersService”〉
〈Property name=”usersDao”ref=”usersDao”〉
〈/property〉
〈/bean〉
(3)控制层和表示层的设计
Web层包括 MVC模式中的控制层和表现层,采用 Struts完成。控制层编写 Action首先根据系统具体需求定义一系列方法,在 Struts机制中该组件作为分控制器供主控制器调用。Action中定义一些私有变量,其中的方法通过调用 Service层来实现系统业务逻辑,并通过提供私有变量 get、set方法从前台表现层接收用户输入的数据或者将经过处理的数据传到前台表现层展示给用户。Action中的方法都将返回一个字符串或者常量,来对应 Struts配置文件中的返回结果页面。
表现层利用 JSP技术编写,用来接收用户的输入数据或者用来显示后台传来的响应数据。这里主要用到 JavaScript技术、Ajax技术以及 JSTL标签库或者 Struts标签库。
通过开发 JSP页面,将页面的链接地址、表单请求指向<action>,由 Struts和 Spring来将请求转发到相应的方法中,实现整个页面的流转。本文给出了系统管理模块中的登录系统部分代码,通过配置文件Struts-config.xml进行配置如下 :
< struts-config>
< form-beans>
<!--= = = = = =系统管理= = = = = =-->
< !--登录-->
< 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>
经测试使用,系统表现出很好的易用性和稳定性,相信在正式上线后会对张家口市地方病防治工作起到一 定的促进作用。
为了解决张家口市地方病防治统计年报工作中存在的数据管理困难、处理上报不及时、统计结果滞后工作需要等问题,本文基于SSH2框架上结合JSP技术,探讨了系统的设计与实现,本系统具有很好的易用性、稳定性和可扩展性,能对地方病防治工作起到积极的推进作用。
[1]何一坚.基于Struts 框架的MVC 应用研究[J].电脑知识与技术:学术交流,2010,6(5) : 3534-3536.
[2]徐玲玲,冯文超.基于MVC和EF的学位与研究生教育信息管理系统设计与实现.计算机与现代化,2012,4(200):03-04 .
[3]姚慧广,赵岳松.Web 编程中MVC 模型的应用[J].微机发展(现更名:计算机技术与发展),2002,12(3):9-10.
[4]秦衡.基于SSH2 的计算机课程教学管理系统的设计与实现[J].电脑知识与技术,2009,11(36):10517-10518 .
[5]田亮.基于SSH2 的物资管理系统的研究与实现[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 整合开发完全自学手册:Struts+Hiber nate+Spring+Eclipse[M].北京:机械工业出版社,2009.
[9]杨明根, 等.Struts+ Spring+ Hibernate 架构及开发方法[J].西南民族大学学报, 2007,33(4):953-956.
[10]陆舟,Struts2技术内幕:深入解析Struts框架设计与实现原理,机械工业出版社,2012。
[11]计文柯,Spring技术内幕:深入解析Spring架构与设计原理(第2版),机械工业出版社,2012。