APP下载

基于SSH2的茶园生产信息管理系统的设计

2016-03-16戈振扬

安徽农业科学 2016年3期

李 静,戈振扬

(昆明理工大学现代农业工程学院,云南昆明 650500)



基于SSH2的茶园生产信息管理系统的设计

李 静,戈振扬

(昆明理工大学现代农业工程学院,云南昆明 650500)

摘要为提升茶园的生产管理效率,釆用SSH2(Struts2+Spring+Hibernate)框架,基于MVC(模型-视图-控制器)软件开发模式,设计了一种茶园生产信息管理系统。该系统以MyEclipse为开发平台,采用Mysql数据库,用Struts2实现表现层,用Spring实现业务层,用Hibernate实现数据持久层,可实现茶园数据检索、库存管理、采摘管理、播种管理、生产日志记录5个功能,加快生产和管理阶段信息传递速度,为茶园生产、管理、决策提供帮助。系统实现结果表明,采用SSH2架构可以使茶园生产管理信息系统结构清晰,具有良好的扩展性、维护性,便于应用推广。

关键词茶园生产;管理信息系统;SSH2;MVC

Design of Production Information Management System of Tea Plantation Based on SSH2

LI Jing, GE Zhen-yang(College of Modern Agricultural Engineering, Kunming University of Science and Technology, Kunming, Yunnan 650500)

AbstractIn order to promote the production management efficiency of tea plantation, we designed a tea production information management system by SSH2 (Struts2+Spring+Hibernate) frame based on MVC software development mode. This system took MyEclipse as the development platform, adopted Mysql database, realized presentation layer by Struts2, business layer by Spring, and persistent layer by Hibernate. Five functions of tea plantation were achieved, such as data retrieval, inventory management, harvesting management and production record. Propagating velocity of production and management information was accelerated, in order to help the production, management and decision making of tea plantation. Results of system implementation indicated that SSH2 frame made the tea production information management system have clear structure, good maintainability and wide application.

Key wordsTea plantation; management information system; SSH2; MVC

茶叶是我国重要经济作物之一,生产历史悠久,在世界上具有举足轻重的地位[1]。2012年我国茶园面积持续扩大,达227.8万hm2,同比增加16.7万hm2,其中采摘面积173.5万hm2,同比增加91.0万hm2,在良好的产业发展趋势的带动下,各地建设新茶园的情绪高涨[2]。茶园生产管理是指负责茶园的日常维护管理,主要包括播种、除草、茶树修剪、茶叶采摘、农药管理、施肥、注意防旱防冻等具体茶园运作步骤。随着茶叶产业的发展,对信息化的需求也日益迫切,然而当前我国的许多茶园仍处在利用纯手工劳动力来管理茶园,这样既浪费人力物力,又使得茶园的生产管理效率不高。为提升茶园的生产管理效率,笔者釆用SSH2(Struts2+Spring+Hibernate)框架,基于MVC(模型-视图-控制器)软件开发模式,设计了一种茶园生产信息管理系统,通过系统控制层、业务层和数据层的流程和代码设计,对系统实现进行了研究。

1系统的体系结构

该系统采用SSH2(Struts2+Spring+Hibernate)框架,基于MVC[模型(model)-视图(view)-控制器(controller)]软件开发模式,其中MVC模式结构关系见图1,使得网站具有很好的延展性。系统釆用B/S设计模式,用户使用更加方便。

图1 MVC模式结构关系Fig. 1 Structure relationship of MVC mode

基于MVC模式的Web框架,可以为Web应用系统提供良好的软件架构,提高Web应用系统的开发效率,更好地分离开发者的角色以及分离开显示与内容,方便模块测试和维护,可以提供丰富的应用系统公用的功能模块。另外,从管理层面上看,可以降低项目开发成本,缩短项目开发周期,降低项目风险[3-4]。

该系统采用SSH2(Struts2+Spring+Hibernate)技术[5],整合框架的方式来架构系统,这种框架在保留经典企业级JavaEE基本应用架构、高度可扩展性、高度可维护性的基础上,安装配置相对简单。这种轻量级的软件系统,只需要简单的Web服务器就可以运行,大大降低了JavaEE应用的开发、部署成本,是目前大部分中小型企业应用的首选[6]。

在SSH2框架中,Struts作为系统的整体基础架构,在表现层使用了Struts2[7],以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开, Struts2是Web网站的控制层,负责实现MVC模型中视图和控制部分,负责处理相应客户端Http请求,在Struts2框架的模型部分,控制业务跳转,利用Hibernate框架[8]对持久层提供支持。Hibernate是一个开放源代码的对象关系映射框架,对JDBC进行了轻量级的对象封装,使得Java程序员可以使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC(数据库连接)的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。业务层使用了Spring[9],Spring是一个开源框架,主要优势之一是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE 应用程序开发提供集成框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的轻量级开源框架,主要负责控制层Action对象的创建以及业务逻辑层对象的创建,该系统中采用注解的方式,这样这些对象的生命周期全部交给Spring进行管理,不需要程序员创建,同时它还调用了Hibernate的事务控制机制。Spring一方面作为一个轻量级的IoC容器,负责查找 、定位 、创建和管理对象及对象之间的依赖关系,另一方面能使Spring和Hibernate很好地黏合,更好地工作。SSH2框架业务流程见图2。

图2 SSH2框架业务流程Fig.2 The business process of SSH2 framework

2系统的分析与设计

2.1系统的需求分析茶园生产管理信息系统的总体功能要求是茶园管理员和工作人员可以实时对茶园茶叶的生产情况进行查询。茶园生产具有大量茶叶生产相关信息的产生,对这些信息进行手工管理,工作量大,重复工作较多,工作效率低。茶园生产管理信息系统的设计由茶园数据检索、播种管理、采摘管理、库存管理、生产日志记录模块构成,具有增加、删除、修改、添加功能。通过该系统,可及时了解茶园的播种、采摘、库存和生产情况,根据这些情况便于茶园制定播种、采摘、生产等茶园生产相关的计划,对茶园的生产进行动态管理。

2.2系统数据库的设计该系统数据库采用MySql数据库,数据库的名称为“tea_db”,设计数据库时,在满足系统需求的同时需要避免冗余数据的产生。由于在茶园生产管理信息系统中需要采集茶园生产信息,如果不能合理地设计数据表以及每张数据表所包含的字段,那么在后期进行数据整理及汇兑时,就会增加开发人员的工作难度和工作量[10]。根据茶园生产阶段管理信息系统的需求设计了以下数据表:茶叶信息数据表、天气信息数据表、茶苗信息数据表、土壤信息数据表、农药信息数据表、肥料信息数据表、库存信息数据表、生产日志信息表。

2.3系统功能的设计该系统包括5个模块:茶园数据检索、播种管理、采摘管理、库存管理、生产日志记录。详细的功能结构见图3。

图3 系统功能结构Fig.3 Structure of system function

(1)茶园数据检索功能包括茶叶管理和天气管理。其中茶叶管理主要记录茶园茶叶的生长情况和茶叶的产量、质量、库存量;天气管理是对茶园的天气信息进行记录,包括对天气的温度记录、气压记录、湿度记录和重大自然灾害的预防,管理员可以对该模块进行增加、修改、删除、更新操作。

(2)播种管理功能是指在茶园中播种、除草,对土壤等影响茶叶产量的因素进行管理,方便工作人员了解茶园的情况,主要包括茶苗管理、土壤管理、农药管理、肥料管理。其中茶苗管理是对茶苗的发育情况进行记录;土壤管理包括对土质信息以及肥料对土质的影响记录;农药管理是对茶园使用农药的情况进行记录,包括对农药的名称、生产厂家、生产日期、农药使用情况进行记录; 肥料管理是对茶园使用肥料的情况进行记录,包括肥料的名称、生产厂家、生产日期、肥料使用情况以及肥料使用的优劣分析。管理员可以对该模块进行增加、修改、删除、更新操作。

(3)采摘管理是对茶园采摘情况的记录,包括采摘茶叶的名称,采摘量以及采摘日期,方便用户了解茶园茶叶的采摘情况。管理员可以对该模块进行增加、修改、删除、更新操作。

(4)库存管理是对茶园茶叶、肥料、农药等茶园生产方面的物资存量进行记录,方便工作人员了解物资的使用情况。管理员可以对该模块进行增加、修改、删除、更新操作。

(5)生产日志记录是对茶园日常的工作日志进行记录,方便工作人员对茶园工作进程以及状况进行了解。管理员可以对该模块进行增加、修改、删除、更新操作。

3系统的实现分析

该系统分为3层:①控制层,由Struts处理并实现网页与业务层之间的接口即网页和Action接口。Struts负责为用户管理请求和响应,提供一个控制器代理调用业务逻辑和其他上层处理,处理Action异常,为显示提供模型,执行用户接口验证等方面任务。②业务层,由Spring管理,包括业务逻辑和事务管理等,处理应用程序的业务逻辑和业务验证、管理事务,预留与其他层交互的接口,管理业务层对象之间的依赖,增加在表现层和持久化对象操作之间的灵活性,从表现层中提供一个上下文给业务层获得业务服务,管理从业务逻辑到持久化对象操作的实现。③数据层,负责存放和管理应用的持久性业务数据。业务层和数据层之间由数据访问对象Dao处理,对于数据的持久化操作由Hibernate处理,可完成使查询数据条目对象化处理,并保存、更新、删除储存在数据库中的数据信息等任务[11]。

3.1控制层的设计 项目中包名com.chengxusheji.action为控制层,当客户端浏览器通过点击表单提交按钮发送请求时,系统通过配置文件web.xml的一系列过滤器来对请求进行处理,会通过Struts2 的配置文件struts.xml,然后调用处理该请求的Action,执行Action方法,根据方法返回的result,跳转相应的页面,将页面返回给客户端,随后将请求交给业务逻辑层,控制层流程见图4。以茶叶管理为例关键代码如下:

/Tea_add.jsp

/Tea_add.jsp

/message.jsp

/message.jsp

/message.jsp

/error.jsp

/Tea_query_result.jsp

/Tea_frontquery_result.jsp

/Tea_frontshow.jsp

/Tea_modify.jsp

图4 控制层流程Fig.4 Flow diagram of control layer

3.2业务逻辑层的设计项目中包名com.chengxusheji.dao为业务逻辑层,在该层通过注解方式(@Resource SessionFactory factory)从Spring的配置文件bean.xml中获取数据库的连接,进行数据库操作,在该层中Spring负责管理和配置 Struts2 和Hibernate框架中的对象,包括 Action、DAO 以及 Service 对象。以茶叶管理为例,关键代码如下:

@Service @Transactional

public class TeaDAO {

@Resource SessionFactory factory;

/*添加Tea信息*/

public void AddTea(Tea tea) throws Exception {

Session s = factory.getCurrentSession();

s.save(tea);

}

/*查询Tea信息*/

@Transactio nal(propagation=Propagation.NOT_SUPPORTED)

public ArrayList QueryTeaInfo(String teaName,String makeDate,String quality) {

Session s = factory.getCurrentSession();

String hql = "From Tea tea where 1=1";

if(!teaName.equals("")) hql = hql + " and tea.teaName like " %" + teaName + "% ";

if(!makeDate.equals("")) hql = hql + " and tea.makeDate like " %" + makeDate + "% " ";

if(!quality.equals("")) hql = hql + " and tea.quality like " %" + quality + "% " ";

Query q = s.createQuery(hql);

List teaList = q.list();

return (ArrayList) teaList; }

/*根据主键获取对象*/

@Transactional(propagation=Propagation.NOT_SUPPORTED)

public Tea GetTeaByTeaId(int teaId) {

Session s = factory.getCurrentSession();

Tea tea = (Tea)s.get(Tea.class,teaId);

return tea; }

/*更新Tea信息*/

public void UpdateTea(Tea tea) throws Exception {

Session s = factory.getCurrentSession();

s.update(tea); }

/*删除Tea信息*/

public void DeleteTea (int teaId) throws Exception {

Session s = factory.getCurrentSession();

Object tea = s.load(Tea.class,teaId);

s.delete(tea); }

}

3.3映射数据库的类层的设计项目中包名com.chengxusheji.domain为映射数据库的类层,该层由Hibernate技术来实现对数据库的持续化访问。Hibernate将数据库中的表映射为Java中的一个实体类,该系统中的实体类有Tea.java、Weather.java、Soil.java、Pesticide.java、Fertilizer.java、StockGood.java、ProductionLog.java、TeaSeed.java、Pick.java,它通过SessionFactory(数据库工厂)接口和该接口的实现,Hibernate将这些类持久化。根据数据库中创建的数据表,在Spring的配置文件beans.xml中配置Hibernate,配置连接数据库和所操作实体类对应配置文件的Hibernate参数,利用MyEclipse生成相应的实体类和实体映射文件*.hbm.xml,使实体类和实体关系表一一对应。以茶叶管理为例,关键代码如下:

name="teaName"

column="teaName"

type="string"

length="20"/>

name="makeDate"

column="makeDate"

type="string"

length="10"/>

name="quality"

column="quality"

type="string"

length="20"/>

name="teaNumber"

column="teaNumber"

type="string"

length="20"/>

name="stockNumber"

column="stockNumber"

type="string"

length="20"/>

4结语

该系统以SSH2框架作为开发技术,整合了Struts、Spring、Hibernate等3种流行的框架,以Spring为核心,向上整合Struts,向下整合了Hibernate,充分发挥了Spring的事务管理能力,实现了茶园生产信息管理系统的茶园数据检索、库存管理、采摘管理、播种管理、生产日志记录等5个功能,基本达到了预期的设计目标。由于SSH2框架使系统具有良好的扩展性、维护性,后续开发者可根据实际情况修改系统,以满足不同茶园的不同管理需求。

参考文献

[1] 王海滨,洪斌毅,陈荣山.世界茶叶产销状况及我国茶叶现状[J].福建茶叶,2014(4):5-6.

[2] 赵菁雅,朱可西.中国茶产业发展现状、问题及对策[J].当代经济,2015(1):40-41.

[3] JENSEN C,SCACCHI W.Process modeling across the Web information infras tructure[J].Software process improvement and practice,2005,10(3):255-272.

[4] ALTENDORF E,HOHMAN M,ZABICKI R.Using J2EE on a large Web-based project Software[J].IEEE,2002,19(2):81-89.

[5] 李刚.轻量级Java EE企业应用实战Struts2+Spring3+Hibernate整合开发[M].3版.北京:电子工业出版社,2011:68-75.

[6] 郑阿奇.JavaEE 基础实用教程[M].2版.北京:电子工业出版社,2014.

[7] 陆舟.Struts2技术内幕:深入解析Struts架构设计与实现原理[M].北京:机械工业出版社,2012:15-18.

[8] 郭伟光,高慧敏.Struts及Hibernate在网络安全管理系统开发中的应用[J].电脑编程技巧与维护,2009(12):107-109.

[9] JOHNSON R.Spring框架高级编程[M].北京:机械工业出版社,2009:125-130.

[10] 肖鹏,朱接文.基于ASP.NET在线考试管理系统数据库设计与实现[J].江西青年职业学院学报,2008(3):95-97.

[11] 杨玉建.基于SSH整合技术的土壤-茶系统B/S研究[J].山东农业科学,2014,46(4):16-19,23.

收稿日期2015-12-30

作者简介李静(1989- ),女,河北武邑人,硕士研究生,研究方向:农业信息化、管理信息系统。

中图分类号S 126

文献标识码A

文章编号0517-6611(2016)03-302-04