《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動(dòng)態(tài) > 基于Java&XML技術(shù)構(gòu)建植物病蟲害遠(yuǎn)程診斷系統(tǒng)

基于Java&XML技術(shù)構(gòu)建植物病蟲害遠(yuǎn)程診斷系統(tǒng)

2009-01-15
作者:武守忠 高靈旺

1.引言?

????網(wǎng)絡(luò)服務(wù)已經(jīng)影響到整個(gè)社會(huì)的方方面面,Web應(yīng)用程序也變的越來越復(fù)雜,,近年來,,我國(guó)農(nóng)業(yè)生產(chǎn)形勢(shì)發(fā)生了諸多變化,,生態(tài)環(huán)境的改變使得新的病蟲害開始發(fā)生,在植物類產(chǎn)品生產(chǎn)過程中因未能及時(shí)診斷病蟲害而造成的損失是巨大的,,對(duì)植物病蟲害診斷工作提出了挑戰(zhàn),。因此,,建立和完善植物病蟲害診斷系統(tǒng)是新世紀(jì)的一個(gè)重要內(nèi)容,而植物病蟲害的遠(yuǎn)程診斷是智能農(nóng)業(yè)的一個(gè)重要技術(shù)功能,,網(wǎng)絡(luò)通信技術(shù)的快速發(fā)展,,使植物病蟲害診斷技術(shù)突破了時(shí)空限制。系統(tǒng)通過使用先進(jìn)的領(lǐng)先技術(shù)Java和XML來提供優(yōu)秀的診斷服務(wù),。

??? 在傳統(tǒng)的小型JSP應(yīng)用程序中,,數(shù)據(jù)、業(yè)務(wù)邏輯和用戶界面通常組合在一個(gè)代碼模塊中,,應(yīng)用程序通常還包含用來控制應(yīng)用程序流程的邏輯,,這樣由于文件中HTML和Java的強(qiáng)耦合,會(huì)有邏輯混亂,,調(diào)試?yán)щy等很多問題,。本文介紹的植物病蟲害遠(yuǎn)程診斷系統(tǒng),采用了基于J2EE的分布式應(yīng)用體系結(jié)構(gòu)和MVC開發(fā)模型,,是分布在不同地理位置上的數(shù)據(jù)庫與遠(yuǎn)程診斷系統(tǒng)通過Internet互聯(lián)在一起。MVC模式將復(fù)雜的系統(tǒng)劃分為M(model),、V(view),、C(controller)三層結(jié)構(gòu)。MVC模式不僅實(shí)現(xiàn)了功能模塊和顯示模塊的分離,,同時(shí)它還提高了應(yīng)用系統(tǒng)的可維護(hù)性,、可擴(kuò)展性、可移植性和組件的可復(fù)用性,。MVC模式是目前基于B/S結(jié)構(gòu)開發(fā)的最為有效的一種模式,。

2.技術(shù)背景?

????J2EE已經(jīng)成為企業(yè)應(yīng)用開發(fā)的標(biāo)準(zhǔn)。平臺(tái)為創(chuàng)建,、部署和管理企業(yè)級(jí)類應(yīng)用以及代碼的可移植性及重用提供了一個(gè)安全的,、伸縮的和可擴(kuò)展的環(huán)境?;谒?,開發(fā)者只需要集中精力編寫代碼來表達(dá)企業(yè)應(yīng)用的商業(yè)邏輯和表示邏輯,至于其他系統(tǒng)問題,,如內(nèi)存管理,、多線程、資源分布,、垃圾收集等,,都將由J2EE自動(dòng)完成。J2EE方案的實(shí)施可顯著地提高系統(tǒng)的可移植性,、安全性,、可伸縮性,、負(fù)載平衡和可重用性。J2EE的發(fā)展,,讓Java語言與MVC模式設(shè)計(jì)思想達(dá)到了完美的結(jié)合,,使早就提出但一直未能突破語言障礙的MVC模式得以實(shí)現(xiàn)。

????由Apache組織開發(fā)的Struts框架是一個(gè)基于J2EE平臺(tái)的Web應(yīng)用系統(tǒng)框架,,它采用MVC模型規(guī)范,,結(jié)合了Servlet、JSP,、JavaBean的技術(shù)特點(diǎn),,使這些技術(shù)合理分工,緊密配合,,達(dá)到程序結(jié)構(gòu)清晰,,易于開發(fā)、維護(hù)的目的,。Struts的主要部件是一個(gè)通用的控制組件,。這個(gè)控制組件提供了處理所有發(fā)送到Struts的HTTP請(qǐng)求的入口點(diǎn)。它截取和分發(fā)這些請(qǐng)求到相應(yīng)的動(dòng)作類(都是Action類的子類),。同時(shí),,控制組件也負(fù)責(zé)用相應(yīng)的請(qǐng)求參數(shù)填充FormBean,并傳給動(dòng)作類,。動(dòng)作類實(shí)現(xiàn)核心業(yè)務(wù)邏輯,,它可以訪問JavaBean或調(diào)用EJB。最后,,動(dòng)作類把控制權(quán)傳給后續(xù)的JSP文件,,后者則生成視圖。所有的這些控制邏輯都是利用一個(gè)XML文件來配置,。

????XML與生俱來的可擴(kuò)展、跨平臺(tái),、開放的特性無疑與Java相呼應(yīng),,形成了完美搭檔。在Web這樣一個(gè)公共的,、開放的資源平臺(tái)與計(jì)算環(huán)境上,,Java技術(shù)提供了豐富的實(shí)現(xiàn)機(jī)制;XML為信息的有效管理和數(shù)據(jù)集成提供了強(qiáng)大的功能,,它提供了一種人和程序都能閱讀的描述機(jī)制,。XLST用來把XML文件轉(zhuǎn)換成HTML文件,其中XML信息可由JSP動(dòng)態(tài)生成,,通過將數(shù)據(jù)庫中的信息檢索轉(zhuǎn)換成XML數(shù)據(jù)信息增大數(shù)據(jù)的通用性,。

????在對(duì)數(shù)據(jù)庫的處理時(shí)我們采用面向?qū)ο蟮臄?shù)據(jù)持久化技術(shù)hibernate,,它是現(xiàn)在對(duì)數(shù)據(jù)庫處理的一個(gè)非常優(yōu)秀的O/R Mapping(對(duì)象關(guān)系映射框架)產(chǎn)品,它對(duì)JDBC進(jìn)行了輕量級(jí)的對(duì)象封裝,,使Java程序員可以隨心所欲的使用對(duì)象編程思想來操縱數(shù)據(jù)庫,。Hibernate不僅僅管理Java類到數(shù)據(jù)庫表的映射,還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,,主要包括以下幾個(gè)特點(diǎn):

1.具有開源和免費(fèi)的License

2.輕量級(jí)封裝,,避免引入過多復(fù)雜的問題,調(diào)試容易,,減輕程序員負(fù)擔(dān)

3.具有可擴(kuò)展性,,API開放,,當(dāng)本身功能不夠用的時(shí)候可以允許自己遍碼進(jìn)行擴(kuò)展

4.開發(fā)者活躍,,產(chǎn)品有穩(wěn)定發(fā)展的保障

5.具有豐富的文檔資料

6.有成功的項(xiàng)目開發(fā)實(shí)施案例

7.在開發(fā)者當(dāng)中有良好的口碑

3.系統(tǒng)功能?

????系統(tǒng)利用人工智能技術(shù),,在internet上24小時(shí)運(yùn)轉(zhuǎn),遠(yuǎn)程擁護(hù)自助生產(chǎn)中的疑難病蟲,,運(yùn)行成本低,,這也是遠(yuǎn)程診斷的發(fā)展方向?;趯?duì)病和蟲診斷的不同特點(diǎn),,在推理機(jī)上也采用了不同的方法,對(duì)害蟲的診斷上采用了二叉樹推理機(jī),,而對(duì)病害的診斷采用神經(jīng)網(wǎng)絡(luò)推理機(jī)。

????系統(tǒng)主要包括以下功能:

1.?用戶認(rèn)證,。系統(tǒng)所有用戶的密碼采取MD5算法加密,,任何人無法從數(shù)據(jù)庫(或者數(shù)據(jù)包)中獲取到其他人員的密碼。

2.?系統(tǒng)管理員對(duì)系統(tǒng)的維護(hù),,包括對(duì)用戶的管理和對(duì)病蟲害數(shù)據(jù)的填加,、更新、刪除等操作,。

3.?用戶對(duì)信息的搜索,。用戶可以通過站內(nèi)搜索來查找自己需要的信息內(nèi)容。

4.?推理與診斷,。根據(jù)用戶輸入的信息,,系統(tǒng)將自動(dòng)的來推理診斷得出結(jié)論,反饋給用戶,。

????系統(tǒng)還有一部分其他的附屬功能,,但以上是整個(gè)系統(tǒng)最為核心的內(nèi)容。其他功能在此就不再贅述,。下面我們以病害診斷為例看一下系統(tǒng)的構(gòu)成,,蟲害診斷基本與病害系統(tǒng)構(gòu)成相同,,就是中間的推理機(jī)和數(shù)據(jù)庫字段設(shè)置不同,以下是病害系統(tǒng)的構(gòu)成圖(圖1),。用戶通過登陸界面經(jīng)身份驗(yàn)證確認(rèn)后進(jìn)入開始頁面,,在此頁面上就可一步一步的按系統(tǒng)的流程來進(jìn)行診斷,經(jīng)遠(yuǎn)程服務(wù)器端推理機(jī)推理即可將結(jié)果反饋給用戶,,這樣用戶不出門就可完成遠(yuǎn)程診斷,,節(jié)約了大量的人力、財(cái)力,,縮短了診斷時(shí)間,,減少了因病蟲害延誤而使植物生產(chǎn)中造成大量的損失。在后臺(tái)我們可以方便的對(duì)數(shù)據(jù)資料進(jìn)行適時(shí)的管理,,保證了診斷信息的時(shí)效性,,使診斷更為客觀、真實(shí),。

????

?圖1 植物病害遠(yuǎn)程診斷系統(tǒng)構(gòu)成

4.系統(tǒng)設(shè)計(jì)?

????在系統(tǒng)的設(shè)計(jì)中我們實(shí)現(xiàn)松耦合,,系統(tǒng)里的所有組件都是服務(wù)。整個(gè)系統(tǒng)采用Struts結(jié)構(gòu),,圖2是系統(tǒng)的主體框架設(shè)計(jì)圖,,圖3為系統(tǒng)的底層結(jié)構(gòu)。

???

????????????????????????????????????????????????? 圖2 系統(tǒng)主體框架設(shè)計(jì)

圖3 底層結(jié)構(gòu)

????在Model中,,用一個(gè)表單Bean來保存HTTP請(qǐng)求傳來的數(shù)據(jù),,兩個(gè)業(yè)務(wù)邏輯Bean來處理業(yè)務(wù)邏輯,因?yàn)閷?duì)病和蟲的診斷機(jī)理不同,,所以才用了兩個(gè)業(yè)務(wù)邏輯Bean,,其中一個(gè)為進(jìn)行二叉樹推理,另一個(gè)為神經(jīng)網(wǎng)絡(luò)推理,,只所以分成兩個(gè)也是盡量的讓系統(tǒng)松耦合,,隨著系統(tǒng)的升級(jí)以后可能采用更為先進(jìn)的準(zhǔn)確的推理機(jī),那么到時(shí)我們只需更換相應(yīng)的業(yè)務(wù)邏輯Bean就可以了,,而對(duì)別的都不夠成影響,,這對(duì)以后的系統(tǒng)升級(jí)無疑是一件很好的事。在系統(tǒng)的推理過程中,,勢(shì)必會(huì)有很多的會(huì)話信息,,這里我們用系統(tǒng)狀態(tài)Bean來保存跨越多個(gè)HTTP請(qǐng)求的單個(gè)客戶的會(huì)話信息。

????視圖使用JSP建立,,用JSP產(chǎn)生XML文件,,再由XLST把XML文件轉(zhuǎn)換成HTML文件,然后傳送到客戶端,。

????控制器處理所有發(fā)送到Struts的HTTP請(qǐng)求,。根據(jù)對(duì)病和蟲的不同診斷需求,,他截取的請(qǐng)求分發(fā)到相應(yīng)的動(dòng)作類,負(fù)責(zé)用相應(yīng)的請(qǐng)求參數(shù)填充FormBean并傳給動(dòng)作類,。在動(dòng)作類通過訪問Model中的不同業(yè)務(wù)邏輯Bean實(shí)現(xiàn)核心業(yè)務(wù)邏輯后,,根據(jù)動(dòng)作類的返回值把控制權(quán)交給相應(yīng)的JSP文件,生成試圖,。

????以上是系統(tǒng)的主體框架設(shè)計(jì),,在系統(tǒng)的開發(fā)中是按圖一的各個(gè)模塊來開發(fā),將系統(tǒng)分為前臺(tái)和后臺(tái)兩部分,,在前臺(tái)也就是客戶的登陸和推理界面,,然后提供系統(tǒng)的搜索功能。后臺(tái)則為系統(tǒng)管理員對(duì)整個(gè)系統(tǒng)的維護(hù)功能,。在整個(gè)系統(tǒng)的開發(fā)過程中就是按照系統(tǒng)的主體框架路線和系統(tǒng)的構(gòu)成圖兩條線來做的,,系統(tǒng)整體層次清晰,結(jié)構(gòu)合理,,把各個(gè)模塊都組件化,,使得系統(tǒng)在后續(xù)的維護(hù)和升級(jí)中都變的比較容易。

5.結(jié)束語?

????系統(tǒng)基于Web及人工智能,,可大大縮小“發(fā)現(xiàn)——診斷”的時(shí)滯,。由于在整個(gè)診斷過程中需要對(duì)大量數(shù)據(jù)進(jìn)行傳遞和處理,而Java和XML的完美組合正使得這一問題得到了很好的解決,。系統(tǒng)的松耦合性也使系統(tǒng)以后的升級(jí)中得以順利進(jìn)行,,在升級(jí)部分只需更換相應(yīng)組件即可,而對(duì)系統(tǒng)的其他部分沒有影響,,免去了傳統(tǒng)系統(tǒng)升級(jí)中的“牽一發(fā)而動(dòng)全身”之痛,。

????現(xiàn)在信息技術(shù)的發(fā)展使得遠(yuǎn)程診斷成為以后的發(fā)展趨勢(shì),為了保證診斷的準(zhǔn)確性和可靠性,,我們還需繼續(xù)利用數(shù)據(jù)挖掘技術(shù),發(fā)現(xiàn)蘊(yùn)涵在歷年病蟲害發(fā)生的統(tǒng)計(jì)數(shù)據(jù)中的知識(shí)和規(guī)則,,從而為診斷和決策支持提供服務(wù),。隨著數(shù)據(jù)量的不端增加,全文的檢索速度也慢慢的成為系統(tǒng)的瓶頸,,以后將用lucene來完成對(duì)大量信息的全文索引/檢索功能,,使系統(tǒng)性能更為強(qiáng)大。

參考文獻(xiàn)?

[1] http://www-900.ibm.com/developerWorks/cn/java/j-strutscol

[2] http://gceclub.sun.com.cn/NASApp/sme/controller/teclist?tid=0102

[3] http://www.hibernate.org/

[4] http://java.sun.com/j2ee/

[5] Stephen Asbury,Scott R.Weiner著.王強(qiáng),田原,王軍,等譯.Java企業(yè)級(jí)應(yīng)用開發(fā)指南.機(jī)械工業(yè)出版社,中信出版社,2004

[6] 封傳紅,廖華明,羅林明,涂建華.病蟲生物災(zāi)害遠(yuǎn)程診斷技術(shù)探討. 中國(guó)植保導(dǎo)刊,2004(5)

?

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。