摘要:利用Java&XML技术实现通过互联网对植物病虫害进行远程诊断的功能,介绍该系统的结构、组成、发展方向,为病虫害防治提供服务。
要害词:J2EE,XML,MVC,远程诊断
1.引言
网络服务已经影响到整个社会的方方面面,Web应用程序也变的越来越复杂,近年来,我国农业生产形势发生了诸多变化,生态环境的改变使得新的病虫害开始发生,在植物类产品生产过程中因未能及时诊断病虫害而造成的损失是巨大的,对植物病虫害诊断工作提出了挑战。因此,建立和完善植物病虫害诊断系统是新世纪的一个重要内容,而植物病虫害的远程诊断是智能农业的一个重要技术功能,网络通信技术的快速发展,使植物病虫害诊断技术突破了时空限制。系统通过使用先进的领先技术Java和XML来提供优秀的诊断服务。
在传统的小型jsp应用程序中,数据、业务逻辑和用户界面通常组合在一个代码模块中,应用程序通常还包含用来控制应用程序流程的逻辑,这样由于文件中Html和Java的强耦合,会有逻辑混乱,调试困难等很多问题。本文介绍的植物病虫害远程诊断系统,采用了基于J2EE的分布式应用体系结构和MVC开发模型,是分布在不同地理位置上的数据库与远程诊断系统通过Internet互联在一起。MVC模式将复杂的系统划分为M(model)、V(view)、C(controller)三层结构。MVC模式不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。MVC模式是目前基于B/S结构开发的最为有效的一种模式。
2.技术背景
J2EE已经成为企业应用开发的标准。平台为创建、部署和治理企业级类应用以及代码的可移植性及重用提供了一个安全的、伸缩的和可扩展的环境。基于它,开发者只需要集中精力编写代码来表达企业应用的商业逻辑和表示逻辑,至于其他系统问题,如内存治理、多线程、资源分布、垃圾收集等,都将由J2EE自动完成。J2EE方案的实施可显著地提高系统的可移植性、安全性、可伸缩性、负载平衡和可重用性。J2EE的发展,让Java语言与MVC模式设计思想达到了完美的结合,使早就提出但一直未能突破语言障碍的MVC模式得以实现。
由Apache组织开发的Struts框架是一个基于J2EE平台的Web应用系统框架,它采用MVC模型规范,结合了Servlet、JSP、JavaBean的技术特点,使这些技术合理分工,紧密配合,达到程序结构清楚,易于开发、维护的目的。Struts的主要部件是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(都是Action类的子类)。同时,控制组件也负责用相应的请求参数填充FormBean,并传给动作类。动作类实现核心业务逻辑,它可以访问JavaBean或调用EJB。最后,动作类把控制权传给后续的JSP文件,后者则生成视图。所有的这些控制逻辑都是利用一个XML文件来配置。
XML与生俱来的可扩展、跨平台、开放的特性无疑与Java相呼应,形成了完美搭档。在Web这样一个公共的、开放的资源平台与计算环境上,Java技术提供了丰富的实现机制;XML为信息的有效治理和数据集成提供了强大的功能,它提供了一种人和程序都能阅读的描述机制。XLST用来把XML文件转换成HTML文件,其中XML信息可由JSP动态生成,通过将数据库中的信息检索转换成XML数据信息增大数据的通用性。
在对数据库的处理时我们采用面向对象的数据持久化技术hibernate,它是现在对数据库处理的一个非常优秀的O/R Mapping(对象关系映射框架)产品,它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的使用对象编程思想来操纵数据库。Hibernate不仅仅治理Java类到数据库表的映射,还提供数据查询和获取数据的方法,主要包括以下几个特点:
1.具有开源和免费的License
2.轻量级封装,避免引入过多复杂的问题,调试轻易,减轻程序员负担
3.具有可扩展性,API开放,当本身功能不够用的时候可以答应自己遍码进行扩展
4.开发者活跃,产品有稳定发展的保障
5.具有丰富的文档资料
6.有成功的项目开发实施案例
7.在开发者当中有良好的口碑
3.系统功能
系统利用人工智能技术,在internet上24小时运转,远程拥护自助生产中的疑难病虫,运行成本低,这也是远程诊断的发展方向。基于对病和虫诊断的不同特点,在推理机上也采用了不同的方法,对害虫的诊断上采用了二叉树推理机,而对病害的诊断采用神经网络推理机。
系统主要包括以下功能:
1.用户认证。系统所有用户的密码采取MD5算法加密,任何人无法从数据库(或者数据包)中获取到其他人员的密码。
2.系统治理员对系统的维护,包括对用户的治理和对病虫害数据的填加、更新、删除等操作。
3.用户对信息的搜索。用户可以通过站内搜索来查找自己需要的信息内容。
4.推理与诊断。根据用户输入的信息,系统将自动的来推理诊断得出结论,反馈给用户。
系统还有一部分其他的附属功能,但以上是整个系统最为核心的内容。其他功能在此就不再赘述。下面我们以病害诊断为例看一下系统的构成,虫害诊断基本与病害系统构成相同,就是中间的推理机和数据库字段设置不同,以下是病害系统的构成图(图1)。用户通过登陆界面经身份验证确认后进入开始页面,在此页面上就可一步一步的按系统的流程来进行诊断,经远程服务器端推理机推理即可将结果反馈给用户,这样用户不出门就可完成远程诊断,节约了大量的人力、财力,缩短了诊断时间,减少了因病虫害延误而使植物生产中造成大量的损失。在后台我们可以方便的对数据资料进行适时的治理,保证了诊断信息的时效性,使诊断更为客观、真实。
(图1 植物病害远程诊断系统构成)
4.系统设计
在系统的设计中我们实现松耦合,系统里的所有组件都是服务。整个系统采用Struts结构,图2是系统的主体框架设计图,图3为系统的底层结构。
(图2 系统主体框架设计)
(图3 底层结构)
在Model中,用一个表单Bean来保存HTTP请求传来的数据,两个业务逻辑Bean来处理业务逻辑,因为对病和虫的诊断机理不同,所以才用了两个业务逻辑Bean,其中一个为进行二叉树推理,另一个为神经网络推理,只所以分成两个也是尽量的让系统松耦合,随着系统的升级以后可能采用更为先进的准确的推理机,那么到时我们只需更换相应的业务逻辑Bean就可以了,而对别的都不够成影响,这对以后的系统升级无疑是一件很好的事。在系统的推理过程中,势必会有很多的会话信息,这里我们用系统状态Bean来保存跨越多个HTTP请求的单个客户的会话信息。
视图使用JSP建立,用JSP产生XML文件,再由XLST把XML文件转换成HTML文件,然后传送到客户端。
控制器处理所有发送到Struts的HTTP请求。根据对病和虫的不同诊断需求,他截取的请求分发到相应的动作类,负责用相应的请求参数填充FormBean并传给动作类。在动作类通过访问Model中的不同业务逻辑Bean实现核心业务逻辑后,根据动作类的返回值把控制权交给相应的JSP文件,生成试图。
以上是系统的主体框架设计,在系统的开发中是按图一的各个模块来开发,将系统分为前台和后台两部分,在前台也就是客户的登陆和推理界面,然后提供系统的搜索功能。后台则为系统治理员对整个系统的维护功能。在整个系统的开发过程中就是按照系统的主体框架路线和系统的构成图两条线来做的,系统整体层次清楚,结构合理,把各个模块都组件化,使得系统在后续的维护和升级中都变的比较轻易。
5.结束语
系统基于Web及人工智能,可大大缩小“发现??诊断”的时滞。由于在整个诊断过程中需要对大量数据进行传递和处理,而Java和XML的完美组合正使得这一问题得到了很好的解决。系统的松耦合性也使系统以后的升级中得以顺利进行,在升级部分只需更换相应组件即可,而对系统的其他部分没有影响,免去了传统系统升级中的“牵一发而动全身”之痛。
现在信息技术的发展使得远程诊断成为以后的发展趋势,为了保证诊断的准确性和可靠性,我们还需继续利用数据挖掘技术,发现蕴涵在历年病虫害发生的统计数据中的知识和规则,从而为诊断和决策支持提供服务。随着数据量的不端增加,全文的检索速度也慢慢的成为系统的瓶颈,以后将用lUCene来完成对大量信息的全文索引/检索功能,使系统性能更为强大。
参考文献
[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著.王强 田原 王军等译 《Java企业级应用开发指南》 机械工业出版社 中信出版社 2004
[6] 封传红,廖华明,罗林明,涂建华 病虫生物灾难远程诊断技术探讨 中国植保导刊 2004年第5期