基于Struts和Hibenate的遥感信息发布系统研究_第1页
基于Struts和Hibenate的遥感信息发布系统研究_第2页
基于Struts和Hibenate的遥感信息发布系统研究_第3页
基于Struts和Hibenate的遥感信息发布系统研究_第4页
基于Struts和Hibenate的遥感信息发布系统研究_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于struts和hibenate的遥感信息发布系统研究 摘 要 本文分析了传统web信息系统的缺点,详细阐述了mvc设计模式思想,剖析了当前被广泛应用的开源设计框架:struts和hibernate的工作原理,基于以上分析提出将二者结合起来实现优势互补共同开发遥感信息发布系统的思路,最后结合了dao和工厂设计模式实现了具有良好可扩展性、实用性和可维护性的遥感信息发布系统。 关键词 遥感数据分发;mvc设计模式;struts框架;hibernate映射工具0 引言 随着internet技术的飞速发展,web信息系统被广泛应用。遥感信息发布系统,就是指基于web的遥感数据信息发布系统。随着时间的

2、推移,传统的web信息系统暴露了很多问题,如页面逻辑、业务逻辑和数据逻辑杂糅在一起,系统的耦合性高,修改、维护困难,扩展性差。为克服以上问题,新的开发方法也不断被提出来,如软件分层思想,mvc设计模式等等。 本文就如何构建弱耦合性,可维护和可扩展的遥感信息发布系统等问题展开探讨。根据当前web技术的发展,提出了采用java环境下实现mvc设计模式的struts框架和实现数据持久化的hibernate框架结合起来开发遥感信息发布系统,提高系统的实用性、灵活性,克服传统web系统的缺点。1 mvc设计模式和开源框架1.1 mvc设计模式 mvc设计模式是一种著名的用户界面软件开发设计模式,它是模型

3、-视图-控制器(model-view-controller)缩写。 mvc设计模式最早由xerox在20世纪八十年代为smaltalk-80语言发展提出的,但是这种设计思想并没有局限于该语言,而是被广泛地应用到了其他面向对象的编程语言中。图1 mvc模型组件关系图 在mvc设计模式中,它把应用程序分成了3个核心部分,原理图如图1所示。 模型(model) 模型封装了用户数据和处理数据的业务逻辑,体现了应用程序的当前状态,而且可以将用户数据状态的变化提供给多个显示该数据的视图共用。模型是应用程序的核心。 视图(view) 视图提供了用户界面,是用户和应用程序的交互的窗口,既接受用户输入,也把模型

4、数据状态显示给用户,但是视图不负责任何业务逻辑处理,仅仅是将用户输入数据传递给控制器或将模型数据显示给用户。 控制器(controller) 控制器连接了模型和视图,根据用户请求判断将请求交给哪个模型来完成,然后调用视图来显示模型处理后的用户请求结果。 mvc设计模式将应用程序进行了分层,视图和模型通过控制器连接,从而减少了用户界面和业务逻辑之间的耦合,使程序设计更加清晰、灵活,也提高了软件的可扩展性、可维护性。1.2 struts框架 struts框架是apache开源软件联盟()的一个开源项目jakarta struts framework。struts框架继承

5、了mvc设计模式的特性,遵守了j2ee的servlet、jsp等技术规范,并且根据j2ee的特点做了相应的变化和扩展,是j2ee体系架构的一种轻量级实现。作为一款优秀的java web应用程序的开发框架,struts框架凭借其清晰性、灵活性,成为当前最为广泛应用的轻量级java web 开发框架。 struts框架实现了mvc设计模式,其工作原理图如图2所示:图2 struts框架原理图 控制器的实现 struts框架中采用了actionservlet和action类以及struts-config.xml配置文件作为控制器的实现。 其中,struts-config.xml配置文件配置了不同用户

6、请求及对应的具体业务逻辑组件来供actionservlet类查询。 actionservlet类是中心servlet,负责处理所有的用户请求。当用户提出请求,actionservlet类最先对请求进行处理,它将根据struts-config.xml配置文件将用户请求映射到具体的action类;而当action类调用模型组件处理好用户请求,并返回了处理结果后,仍然由actionservlet类根据struts-config.xml配置文件将结果转发到视图提供给用户,或者转发另外一个action做进一步处理。 action类实现了具体的业务逻辑,它接受用户的输入,然后调用具体的模型组件来完成用户请

7、求。 视图的实现 struts构架主要采用了jsp作为视图的实现,它提供了丰富的jsp标签库支持应用程序的开发,而且引入了actionform组件(实质为javabean)作为用户表单的封装来完成数据的传输。 模型的实现 struts框架对模型即复杂的数据持久化层没有提供太多的支持,但是这也就是说开发人员有更多自由来选择合适量级的持久化技术,比如hibernate、ejb等等。struts框架实现了mvc设计模式,但是它是典型的表现层框架,对模型的实现是不足的,所以有必要引入其他架构加强对模型的实现。1.3 hibenate框架 hibernate框架是开放源代码的对象关系映射工具(objec

8、t-relational mapping),是一款基于java环境的优秀的对象持久化开发框架。它根据o/r(对象/关系)映射技术思想,对jdbc进行了轻量级封装,使开发人员可以使用一种面向对象的方式来操纵和管理关系数据库,所以从技术本质上来说该框架是一种提供面向对象的数据库服务中间件。 hibernate框架位于应用程序的业务化和持久化层,在运行时的体系结构如图3所示:sessionfactory接口,是一个数据库映射关系的内存映像,它是线程安全的,所以可以为多个线程同时调用产生session,是session的工厂,另外它为事务之间可以重用的数据提供了可供选择的二级缓存。图3 hiberna

9、te运行时体系结构图 session接口,是hibernate框架的运行中心,它被用户程序调用,提供与持久化相关的诸多操作,如加载、添加、查询、更新和删除持久化对象,是实现用户程序持久化工作的主要接口,所以session被称为持久化管理器。 transaction接口,是用来指定原子操作的单元范围,它通过对底层具体的jdbc、jta等事务进行封装和抽象,形成一个统一的事务操作界面。 此外,hibernate还有两个重要的核心接口:configuration接口和query和criteria接口。configuration接口是用来对hibernate配置和启动。query和criteria接口

10、是用来执行对数据库的查询,且支持hql、sql多种查询方式,其中hql是一种面向对象的查询语言。2 遥感信息发布系统的设计 遥感信息发布系统是基于地面站遥感数据信息的发布系统,包括了用户信息模块,数据浏览模块,数据订购模块等。2.1 系统的体系机构设计 根据前面介绍可以看到hibenate架构只具备数据持久化设计能力,而struts架构则在模型设计方面能力薄弱,所以将二者结合起来使用,共同搭建系统结构实现mvc模型设计,可以达到二者优势互补,从而使系统设计具备低耦合性以及较高的可维护性和可扩展性。本系统的体系结构设计如图4所示:图4 系统体系结构图 本系统具有多个模块,但是各个模块的设计原理相

11、同,其中用户登录设计典型地利用了struts框架和hibernate框架的设计,体现了两种架构结合的特点,下面以此实现为代表进行具体阐述。 2.2 用户登录模块设计 用户登录模块,即用户从浏览器输入个人信息,由系统在数据库中检索数据,然后验证用户信息,如果验证成功登陆到系统界面,否则,提示用户信息出错。2.2.1 数据持久层设计 数据持久层基于hibernate架构,采用了dao设计模式。在持久层设计中,包括了以下三个重要设计步骤: 首先,把用户信息封装为vo(value object)。vo是一组值对象,只包含了一些属性和getter/setter方法的pojo(plan old java

12、bean)。典型设计如下:public class oradmin implements serializableprivate string adminname;public string getadminname() return adminname; public void setadminname(string adminname) this.adminname = adminname; 其次,采用了dao设计模式和抽象工厂设计模式,完成了 dao工厂和hibernate 数据库操作的具体实现,典型设计如下:public abstract class daofactory public

13、 static daofactory getinstance() public abstract admindao createadmindao();public class admindaoimpl implements admindao public oradmin getadmin(string adminname) try session s =hibernateutil.currentsession();query query = s.createquery(from oradmin asoa whereoa.adminname=+adminname+); return null;

14、最后,利用了hibernate的配置文件完成从应用程序到数据库的映射,典型设计如下:<session-factory ><property name=connection.driver_class>org.postgresql.driver</property><property name=connection.url>jdbc:postgresql:/:5432/dbinfo</property><property name=dialect>org.hibernate.dialect.postgresq

15、ldialect </property><mapping resource=oradmin.hbm.xml /></session-factory> 在该层的设计中,vo的信息封装体现了面向对象设计编程思想;dao的设计模式和抽象工厂模式减弱了上层调用和具体实现之间的耦合;hibernate配置实现了数据库高移植性,只需要改变hibernate配置文件,不用修改程序设计就可以完成不同数据库之间的更换。2.2.2 业务逻辑层设计 业务逻辑层包含了供客户端程序调用的业务逻辑规则,以帮助客户端完成业务操作。该层采用了业务代理、dao和抽象工厂设计模式,典型设计如下

16、:public class managerfactory public static adminmanager createadminmanager() return new adminmanagerimpl(); public interface adminmanager oradmin getadmin(string username);public class adminmanagerimpl implements adminmanagerprivate admindao dao =daofactory.getinstance().createadmindao();public orad

17、min getadmin(string username) return this.dao.getadmin(username); 在该层的设计中,业务代理、dao和抽象工厂设计模式的使用,使业务逻辑更加灵活,如果具体业务发生变化,在表示层和数据持久化层改变很小就可以完成改变,这种设计增强了系统的可维护性和灵活性。2.2.3 表示层设计 表示层基于struts框架,采用了jstl标签库技术。在表示层的设计中,主要包括了以下三个重要设计步骤: 首先,建立用于用户浏览的jsp视图页面,其中最重要的是设计出封装用户表单信息的actionform。actionform是struts架构的重要组件,是包

18、含了一些属性和getter/setter方法的pojo,典型设计如下:public class adminactionform extendsactionform private string adminname;public string getadminname() eturn adminname;public void setadminname(string adminname) his.adminname = adminname; 其次,搭建用户请求和业务逻辑之间的桥梁action组件,该组件负责把用户信息和具体的业务逻辑处理联系在一起,典型设计如下:public class admi

19、naction extends action adminactionform adminactionform =(adminactionform) actionform;adminname=adminactionform.getadminname();adminpasswd=adminactionform.getadminpd();adminmanager adminmanager=managerfactory.createadminmanager();oradmin oradmin=adminmanager.getadmin(adminname);if(oradmin = null|!ora

20、dmin.getadminpasswd().equals(adminpasswd) servletrequest.getsession().setattribute(loginfail,invalid name or password. login failture);return actionmapping.findforward(logout);elseservletrequest.getsession().setattribute(adminname,adminname);return actionmapping.findforward(success); 最后,通过struts配置连接actionform和action,完成一个业务设计,典型配置如下:<form-beans><form-bean name=adminactionform type=com.rice.web.struts.from.adminactionform /></form-beans><action-ma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论