李 靜,戈振揚
(昆明理工大學(xué)現(xiàn)代農(nóng)業(yè)工程學(xué)院,云南昆明 650500)
?
基于SSH2的茶園生產(chǎn)信息管理系統(tǒng)的設(shè)計
李 靜,戈振揚
(昆明理工大學(xué)現(xiàn)代農(nóng)業(yè)工程學(xué)院,云南昆明 650500)
摘要為提升茶園的生產(chǎn)管理效率,釆用SSH2(Struts2+Spring+Hibernate)框架,基于MVC(模型-視圖-控制器)軟件開發(fā)模式,設(shè)計了一種茶園生產(chǎn)信息管理系統(tǒng)。該系統(tǒng)以MyEclipse為開發(fā)平臺,采用Mysql數(shù)據(jù)庫,用Struts2實現(xiàn)表現(xiàn)層,用Spring實現(xiàn)業(yè)務(wù)層,用Hibernate實現(xiàn)數(shù)據(jù)持久層,可實現(xiàn)茶園數(shù)據(jù)檢索、庫存管理、采摘管理、播種管理、生產(chǎn)日志記錄5個功能,加快生產(chǎn)和管理階段信息傳遞速度,為茶園生產(chǎn)、管理、決策提供幫助。系統(tǒng)實現(xiàn)結(jié)果表明,采用SSH2架構(gòu)可以使茶園生產(chǎn)管理信息系統(tǒng)結(jié)構(gòu)清晰,具有良好的擴展性、維護性,便于應(yīng)用推廣。
關(guān)鍵詞茶園生產(chǎn);管理信息系統(tǒng);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
茶葉是我國重要經(jīng)濟作物之一,生產(chǎn)歷史悠久,在世界上具有舉足輕重的地位[1]。2012年我國茶園面積持續(xù)擴大,達227.8萬hm2,同比增加16.7萬hm2,其中采摘面積173.5萬hm2,同比增加91.0萬hm2,在良好的產(chǎn)業(yè)發(fā)展趨勢的帶動下,各地建設(shè)新茶園的情緒高漲[2]。茶園生產(chǎn)管理是指負責(zé)茶園的日常維護管理,主要包括播種、除草、茶樹修剪、茶葉采摘、農(nóng)藥管理、施肥、注意防旱防凍等具體茶園運作步驟。隨著茶葉產(chǎn)業(yè)的發(fā)展,對信息化的需求也日益迫切,然而當(dāng)前我國的許多茶園仍處在利用純手工勞動力來管理茶園,這樣既浪費人力物力,又使得茶園的生產(chǎn)管理效率不高。為提升茶園的生產(chǎn)管理效率,筆者釆用SSH2(Struts2+Spring+Hibernate)框架,基于MVC(模型-視圖-控制器)軟件開發(fā)模式,設(shè)計了一種茶園生產(chǎn)信息管理系統(tǒng),通過系統(tǒng)控制層、業(yè)務(wù)層和數(shù)據(jù)層的流程和代碼設(shè)計,對系統(tǒng)實現(xiàn)進行了研究。
1系統(tǒng)的體系結(jié)構(gòu)
該系統(tǒng)采用SSH2(Struts2+Spring+Hibernate)框架,基于MVC[模型(model)-視圖(view)-控制器(controller)]軟件開發(fā)模式,其中MVC模式結(jié)構(gòu)關(guān)系見圖1,使得網(wǎng)站具有很好的延展性。系統(tǒng)釆用B/S設(shè)計模式,用戶使用更加方便。
圖1 MVC模式結(jié)構(gòu)關(guān)系Fig. 1 Structure relationship of MVC mode
基于MVC模式的Web框架,可以為Web應(yīng)用系統(tǒng)提供良好的軟件架構(gòu),提高Web應(yīng)用系統(tǒng)的開發(fā)效率,更好地分離開發(fā)者的角色以及分離開顯示與內(nèi)容,方便模塊測試和維護,可以提供豐富的應(yīng)用系統(tǒng)公用的功能模塊。另外,從管理層面上看,可以降低項目開發(fā)成本,縮短項目開發(fā)周期,降低項目風(fēng)險[3-4]。
該系統(tǒng)采用SSH2(Struts2+Spring+Hibernate)技術(shù)[5],整合框架的方式來架構(gòu)系統(tǒng),這種框架在保留經(jīng)典企業(yè)級JavaEE基本應(yīng)用架構(gòu)、高度可擴展性、高度可維護性的基礎(chǔ)上,安裝配置相對簡單。這種輕量級的軟件系統(tǒng),只需要簡單的Web服務(wù)器就可以運行,大大降低了JavaEE應(yīng)用的開發(fā)、部署成本,是目前大部分中小型企業(yè)應(yīng)用的首選[6]。
在SSH2框架中,Struts作為系統(tǒng)的整體基礎(chǔ)架構(gòu),在表現(xiàn)層使用了Struts2[7],以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設(shè)計也使得業(yè)務(wù)邏輯控制器能夠與Servlet API完全脫離開, Struts2是Web網(wǎng)站的控制層,負責(zé)實現(xiàn)MVC模型中視圖和控制部分,負責(zé)處理相應(yīng)客戶端Http請求,在Struts2框架的模型部分,控制業(yè)務(wù)跳轉(zhuǎn),利用Hibernate框架[8]對持久層提供支持。Hibernate是一個開放源代碼的對象關(guān)系映射框架,對JDBC進行了輕量級的對象封裝,使得Java程序員可以使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應(yīng)用在任何使用JDBC(數(shù)據(jù)庫連接)的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用。最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。業(yè)務(wù)層使用了Spring[9],Spring是一個開源框架,主要優(yōu)勢之一是其分層架構(gòu),分層架構(gòu)允許使用者選擇使用哪一個組件,同時為J2EE 應(yīng)用程序開發(fā)提供集成框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。Spring的核心是控制反轉(zhuǎn)(IoC)和面向切面(AOP)。簡單來說,Spring是一個分層的輕量級開源框架,主要負責(zé)控制層Action對象的創(chuàng)建以及業(yè)務(wù)邏輯層對象的創(chuàng)建,該系統(tǒng)中采用注解的方式,這樣這些對象的生命周期全部交給Spring進行管理,不需要程序員創(chuàng)建,同時它還調(diào)用了Hibernate的事務(wù)控制機制。Spring一方面作為一個輕量級的IoC容器,負責(zé)查找 、定位 、創(chuàng)建和管理對象及對象之間的依賴關(guān)系,另一方面能使Spring和Hibernate很好地黏合,更好地工作。SSH2框架業(yè)務(wù)流程見圖2。
圖2 SSH2框架業(yè)務(wù)流程Fig.2 The business process of SSH2 framework
2系統(tǒng)的分析與設(shè)計
2.1系統(tǒng)的需求分析茶園生產(chǎn)管理信息系統(tǒng)的總體功能要求是茶園管理員和工作人員可以實時對茶園茶葉的生產(chǎn)情況進行查詢。茶園生產(chǎn)具有大量茶葉生產(chǎn)相關(guān)信息的產(chǎn)生,對這些信息進行手工管理,工作量大,重復(fù)工作較多,工作效率低。茶園生產(chǎn)管理信息系統(tǒng)的設(shè)計由茶園數(shù)據(jù)檢索、播種管理、采摘管理、庫存管理、生產(chǎn)日志記錄模塊構(gòu)成,具有增加、刪除、修改、添加功能。通過該系統(tǒng),可及時了解茶園的播種、采摘、庫存和生產(chǎn)情況,根據(jù)這些情況便于茶園制定播種、采摘、生產(chǎn)等茶園生產(chǎn)相關(guān)的計劃,對茶園的生產(chǎn)進行動態(tài)管理。
2.2系統(tǒng)數(shù)據(jù)庫的設(shè)計該系統(tǒng)數(shù)據(jù)庫采用MySql數(shù)據(jù)庫,數(shù)據(jù)庫的名稱為“tea_db”,設(shè)計數(shù)據(jù)庫時,在滿足系統(tǒng)需求的同時需要避免冗余數(shù)據(jù)的產(chǎn)生。由于在茶園生產(chǎn)管理信息系統(tǒng)中需要采集茶園生產(chǎn)信息,如果不能合理地設(shè)計數(shù)據(jù)表以及每張數(shù)據(jù)表所包含的字段,那么在后期進行數(shù)據(jù)整理及匯兌時,就會增加開發(fā)人員的工作難度和工作量[10]。根據(jù)茶園生產(chǎn)階段管理信息系統(tǒng)的需求設(shè)計了以下數(shù)據(jù)表:茶葉信息數(shù)據(jù)表、天氣信息數(shù)據(jù)表、茶苗信息數(shù)據(jù)表、土壤信息數(shù)據(jù)表、農(nóng)藥信息數(shù)據(jù)表、肥料信息數(shù)據(jù)表、庫存信息數(shù)據(jù)表、生產(chǎn)日志信息表。
2.3系統(tǒng)功能的設(shè)計該系統(tǒng)包括5個模塊:茶園數(shù)據(jù)檢索、播種管理、采摘管理、庫存管理、生產(chǎn)日志記錄。詳細的功能結(jié)構(gòu)見圖3。
圖3 系統(tǒng)功能結(jié)構(gòu)Fig.3 Structure of system function
(1)茶園數(shù)據(jù)檢索功能包括茶葉管理和天氣管理。其中茶葉管理主要記錄茶園茶葉的生長情況和茶葉的產(chǎn)量、質(zhì)量、庫存量;天氣管理是對茶園的天氣信息進行記錄,包括對天氣的溫度記錄、氣壓記錄、濕度記錄和重大自然災(zāi)害的預(yù)防,管理員可以對該模塊進行增加、修改、刪除、更新操作。
(2)播種管理功能是指在茶園中播種、除草,對土壤等影響茶葉產(chǎn)量的因素進行管理,方便工作人員了解茶園的情況,主要包括茶苗管理、土壤管理、農(nóng)藥管理、肥料管理。其中茶苗管理是對茶苗的發(fā)育情況進行記錄;土壤管理包括對土質(zhì)信息以及肥料對土質(zhì)的影響記錄;農(nóng)藥管理是對茶園使用農(nóng)藥的情況進行記錄,包括對農(nóng)藥的名稱、生產(chǎn)廠家、生產(chǎn)日期、農(nóng)藥使用情況進行記錄; 肥料管理是對茶園使用肥料的情況進行記錄,包括肥料的名稱、生產(chǎn)廠家、生產(chǎn)日期、肥料使用情況以及肥料使用的優(yōu)劣分析。管理員可以對該模塊進行增加、修改、刪除、更新操作。
(3)采摘管理是對茶園采摘情況的記錄,包括采摘茶葉的名稱,采摘量以及采摘日期,方便用戶了解茶園茶葉的采摘情況。管理員可以對該模塊進行增加、修改、刪除、更新操作。
(4)庫存管理是對茶園茶葉、肥料、農(nóng)藥等茶園生產(chǎn)方面的物資存量進行記錄,方便工作人員了解物資的使用情況。管理員可以對該模塊進行增加、修改、刪除、更新操作。
(5)生產(chǎn)日志記錄是對茶園日常的工作日志進行記錄,方便工作人員對茶園工作進程以及狀況進行了解。管理員可以對該模塊進行增加、修改、刪除、更新操作。
3系統(tǒng)的實現(xiàn)分析
該系統(tǒng)分為3層:①控制層,由Struts處理并實現(xiàn)網(wǎng)頁與業(yè)務(wù)層之間的接口即網(wǎng)頁和Action接口。Struts負責(zé)為用戶管理請求和響應(yīng),提供一個控制器代理調(diào)用業(yè)務(wù)邏輯和其他上層處理,處理Action異常,為顯示提供模型,執(zhí)行用戶接口驗證等方面任務(wù)。②業(yè)務(wù)層,由Spring管理,包括業(yè)務(wù)邏輯和事務(wù)管理等,處理應(yīng)用程序的業(yè)務(wù)邏輯和業(yè)務(wù)驗證、管理事務(wù),預(yù)留與其他層交互的接口,管理業(yè)務(wù)層對象之間的依賴,增加在表現(xiàn)層和持久化對象操作之間的靈活性,從表現(xiàn)層中提供一個上下文給業(yè)務(wù)層獲得業(yè)務(wù)服務(wù),管理從業(yè)務(wù)邏輯到持久化對象操作的實現(xiàn)。③數(shù)據(jù)層,負責(zé)存放和管理應(yīng)用的持久性業(yè)務(wù)數(shù)據(jù)。業(yè)務(wù)層和數(shù)據(jù)層之間由數(shù)據(jù)訪問對象Dao處理,對于數(shù)據(jù)的持久化操作由Hibernate處理,可完成使查詢數(shù)據(jù)條目對象化處理,并保存、更新、刪除儲存在數(shù)據(jù)庫中的數(shù)據(jù)信息等任務(wù)[11]。
3.1控制層的設(shè)計 項目中包名com.chengxusheji.action為控制層,當(dāng)客戶端瀏覽器通過點擊表單提交按鈕發(fā)送請求時,系統(tǒng)通過配置文件web.xml的一系列過濾器來對請求進行處理,會通過Struts2 的配置文件struts.xml,然后調(diào)用處理該請求的Action,執(zhí)行Action方法,根據(jù)方法返回的result,跳轉(zhuǎn)相應(yīng)的頁面,將頁面返回給客戶端,隨后將請求交給業(yè)務(wù)邏輯層,控制層流程見圖4。以茶葉管理為例關(guān)鍵代碼如下:
圖4 控制層流程Fig.4 Flow diagram of control layer
3.2業(yè)務(wù)邏輯層的設(shè)計項目中包名com.chengxusheji.dao為業(yè)務(wù)邏輯層,在該層通過注解方式(@Resource SessionFactory factory)從Spring的配置文件bean.xml中獲取數(shù)據(jù)庫的連接,進行數(shù)據(jù)庫操作,在該層中Spring負責(zé)管理和配置 Struts2 和Hibernate框架中的對象,包括 Action、DAO 以及 Service 對象。以茶葉管理為例,關(guān)鍵代碼如下:
@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
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
/*根據(jù)主鍵獲取對象*/
@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映射數(shù)據(jù)庫的類層的設(shè)計項目中包名com.chengxusheji.domain為映射數(shù)據(jù)庫的類層,該層由Hibernate技術(shù)來實現(xiàn)對數(shù)據(jù)庫的持續(xù)化訪問。Hibernate將數(shù)據(jù)庫中的表映射為Java中的一個實體類,該系統(tǒng)中的實體類有Tea.java、Weather.java、Soil.java、Pesticide.java、Fertilizer.java、StockGood.java、ProductionLog.java、TeaSeed.java、Pick.java,它通過SessionFactory(數(shù)據(jù)庫工廠)接口和該接口的實現(xiàn),Hibernate將這些類持久化。根據(jù)數(shù)據(jù)庫中創(chuàng)建的數(shù)據(jù)表,在Spring的配置文件beans.xml中配置Hibernate,配置連接數(shù)據(jù)庫和所操作實體類對應(yīng)配置文件的Hibernate參數(shù),利用MyEclipse生成相應(yīng)的實體類和實體映射文件*.hbm.xml,使實體類和實體關(guān)系表一一對應(yīng)。以茶葉管理為例,關(guān)鍵代碼如下:
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結(jié)語 該系統(tǒng)以SSH2框架作為開發(fā)技術(shù),整合了Struts、Spring、Hibernate等3種流行的框架,以Spring為核心,向上整合Struts,向下整合了Hibernate,充分發(fā)揮了Spring的事務(wù)管理能力,實現(xiàn)了茶園生產(chǎn)信息管理系統(tǒng)的茶園數(shù)據(jù)檢索、庫存管理、采摘管理、播種管理、生產(chǎn)日志記錄等5個功能,基本達到了預(yù)期的設(shè)計目標(biāo)。由于SSH2框架使系統(tǒng)具有良好的擴展性、維護性,后續(xù)開發(fā)者可根據(jù)實際情況修改系統(tǒng),以滿足不同茶園的不同管理需求。 參考文獻 [1] 王海濱,洪斌毅,陳榮山.世界茶葉產(chǎn)銷狀況及我國茶葉現(xiàn)狀[J].福建茶葉,2014(4):5-6. [2] 趙菁雅,朱可西.中國茶產(chǎn)業(yè)發(fā)展現(xiàn)狀、問題及對策[J].當(dāng)代經(jīng)濟,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企業(yè)應(yīng)用實戰(zhàn)Struts2+Spring3+Hibernate整合開發(fā)[M].3版.北京:電子工業(yè)出版社,2011:68-75. [6] 鄭阿奇.JavaEE 基礎(chǔ)實用教程[M].2版.北京:電子工業(yè)出版社,2014. [7] 陸舟.Struts2技術(shù)內(nèi)幕:深入解析Struts架構(gòu)設(shè)計與實現(xiàn)原理[M].北京:機械工業(yè)出版社,2012:15-18. [8] 郭偉光,高慧敏.Struts及Hibernate在網(wǎng)絡(luò)安全管理系統(tǒng)開發(fā)中的應(yīng)用[J].電腦編程技巧與維護,2009(12):107-109. [9] JOHNSON R.Spring框架高級編程[M].北京:機械工業(yè)出版社,2009:125-130. [10] 肖鵬,朱接文.基于ASP.NET在線考試管理系統(tǒng)數(shù)據(jù)庫設(shè)計與實現(xiàn)[J].江西青年職業(yè)學(xué)院學(xué)報,2008(3):95-97. [11] 楊玉建.基于SSH整合技術(shù)的土壤-茶系統(tǒng)B/S研究[J].山東農(nóng)業(yè)科學(xué),2014,46(4):16-19,23. 收稿日期2015-12-30 作者簡介李靜(1989- ),女,河北武邑人,碩士研究生,研究方向:農(nóng)業(yè)信息化、管理信息系統(tǒng)。 中圖分類號S 126 文獻標(biāo)識碼A 文章編號0517-6611(2016)03-302-04