



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Struts+Hibernate+Spring的系统设计和开发俞国红(健雄职业技术学院计算机工程系,江苏太仓215411)摘要:阐述了以J2EE(JSP、JavaBean、Servlet)、SSH(Struts、Spring、Hibernate)开源框架为核心技术,逐步构建软件架构原型,构建系统原型作为系统开发的基础,提出了基于Struts、Spring和Hibernate框架的轻型J2EE软件架构技术的系统设计和开发方法。关键词:J2EE;Struts;Spring;Hibernate;架构中图分类号:TP311.52文献标识码:A1前言J2EE(Java2EnterpriseEdition即Java2平台企业版)是由Sun公司主持推出的一项中间件技术。EJB(EnterpriseJavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。但由于EJB的困难性,导致程序的开发效率低。在Spring和Hibernate等轻量级框架出现后,大量的开发人员转向到以目前最流行的开源框架,能快速开发出结构清楚、可重用性好、维护便利的轻量级的J2EE企业系统应用。2Web应用的分层分析构架Web企业系统应用时须要考虑用户交互、处理业务逻辑、应用数据长久化、扩展性等许多问题,所以一个应用的架构方案和实现技术选择非常重要。而分层的目的就是对应用的逻辑功能进行划分,使每层在完成自己功能的同时,不影响其它层,实现“高内聚,低耦合”具有易于限制、扩展、维护的优点,图1是一个典型的轻量级J2EE应用架构,Web应用分层结构基本上都分为三层:表现层、业务逻辑层、数据长久层。表示层用来处理用户和软件之间的交互,它主要的责任是向用户呈现信息以及处理用户恳求。业务逻辑层,又叫做领域逻辑层。其职责包括处理业图1典型的Web应用分层结构Fig.1TypicalWebapplicationhierarchicalstructure务逻辑和存储业务数据,校验从表示层传过来的数据,通过表示层提交的吩咐来执行相应的业务逻辑。数据长久层是用来存取业务状态数据的。数据长久层通过与其他系统进行通信来完成应用的调用。其职责包括事务监控、消息系统、数据源等。在大多数的系统应用中,数据长久层最基本的功能就是存储长久化数据到数据库中。三层体系结构图中箭头所示的方向,表示各个层之间的数据调用和依靠关系。这个依靠示意了分层系统的特性规则:一层中的组件只能与同一级别中的对等实体或较低级别中的组件交互。可以看到,业务逻辑层不会访问表示层中的内容,同样,数据层也不会访问业务逻辑中的内容。这个规则使得在同一个基础架构上实现不同的表示层成为可能,同时使得表示层的修改并不会影响到更深层次的实现。3Struts框架分析Struts最早是由Xerox(施乐)在20世纪80年头为Smaltalk-80语言发展提出的。随后,它成为了一种闻名的用户界面设计架构,其实现原理如图2。图2MVC模式的Struts实现Fig.2StrutsImplementationofMVCModelStruts框架为Web应用供应了一个通用的框架,正因为它把应用分成了三部分:视图、限制器、模型。Struts有其自己的限制器(Controller),同时整合了其他技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很简单的与数据访问技术相结合,包括EJB,JDBC和ObjectRelationBridge。在视图层,Struts能够与JSP,VelocityTemplates,XSL等等这些表示层组件想结合。按MVC设计模式,一个模型对应多个视图,可以削减代码的复制及代码的维护量,一旦模型发生变更,也易于维护。Struts的MVC框架从系统中抽象出三个角色:(1)JSP页面:仅负责数据显示,即MVC框架中的视图角色。(2)Servlet:负责接收客户端的恳求和用户申请,负责调用后端的JavaBean,即MVC框架中的限制器角色。(3)JavaBean:负责封闭业务逻辑实现,即MVC框架中的模型角色。4Spring框架分析Spring框架是一种轻量级J2EE应用框架,Spring既是一个AOP框架和IoC容器,限制反转(IoC)是“基于组件的体系结构”的设计模式,它将“推断依靠关系”的职责移交给容器,而不是由组件本身来推断彼此之间的依靠关系。其插件式架构降低了组件间的依靠性。在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但是在Spring里,创建被调用者的工作不再由调用者来完成,因此称为限制反转(IoC)。创建被调用者实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依靠注入(DI)。图3Spring的系统架构图Fig.3SpringSystemArchitectureDrawing如图3所示是摘录自Spring的技术文档中的系统架构图,在该图中展示了Spring框架中7个定义良好的、相互独立的模块组件。应用系统开发者可以选择仅仅运用其中的任何一个独立的组件。Spring框架一项最基本的功能是充当创建对象的工厂,在大多数状况下开发人员并不干脆运用BeanFactory,而是运用ApplicationContext。它也是BeanFactory的一个实现。org.springframework.beans.factory.BeanFactory是SpringIoC容器的核心接口,Spring运用BeanFactory来实例化、定位、配置应用程序中的对象及建立这些对象间的依靠。IoC将限制职责搬进了框架中,并脱离应用代码。运用IoC容器则只需指出组件须要的对象,在运行时容器会供应应它。容器基于方法名作出这种说明,或可能依据配置数据如XML。Spring框架的运用,将J2EE层次结构中的业务层分别为业务逻辑层和数据长久层,业务逻辑交给Spring处理,而数据访问则交给Hibernate处理,使得层次结构更加清楚,便于系统的维护和扩展。5Hibernate框架分析Hibernate框架诞生在2001年11月,GavinKing是它的创始人。Hibernate是一种运用DAO设计模式来实现对象和关系数据库之间映射(O/RMapping)的开源框架。对象关系映射(O/RMapping)是现在最流行的一种数据库长久化方案。Hibernate工作在长久层,它响应来自Spring对数据库的操作恳求。Hibernate的DAO实现类继承HibernateDaoSupport类,依据一系列O/R映射文件以及数据源或连接池,与数据库进行连接,实现“操作一个对象就是操作数据库的一行数据”的目的,并完成对Spring层对DAO接口的操作的响应。Hibernate拥有自己的一种查询语言(HQL),它是完全面对对象的,Hibernate运用XML文件将Java类映射到表,将JavaBean属性映射到数据库表。其在应用中的基本结构,如图4。图4Hibernate在应用中的结构图Fig.4HibernateStructorinSolution6结合Struts、Spring和Hibernate的架构探讨Spring是以简化J2EE的应用开发为目标而诞生的,系统通常运用Spring作为核心,向上整合Struts的MVC框架,向下整合Hibernater的ORM框架。运用Spring的IOC容器来管理各组件之间的依靠关系。6.1整合Struts+Spring的开发架构通过对Struts的分析,Struts框架须要人为限制事务。在不引入Spring框架的状况下,程序须要手动管理SessionFactory实例,如通过工厂来管理SessionFactory实例,然后在web.xml文件中通过load-on-startup的Servlet或Listener来完成SessionFactory的实例化。上述这些缺陷给开发人员带来了极大的不便。在SpringIoC容器的内部,IoC容器负责管理全部的业务逻辑组件、DAO组件以及Struts的Action。组件与组件之间的依靠通过Spring的依靠注入进行管理,从而降低了系统异构的代价。Spring整合Struts的方法主要有如下三种:运用Spring的actionsupport类整合Struts;运用Spring的delegatingrequestprocessor覆盖Struts的request-processor;将Struts的Action管理则托付给Spring框架。当运用Struts作为MVC框架时,客户端的HTTP恳求都是干脆向Action的,那么如何让ActionServlet恳求转发给Spring容器中的Action中呢?实行的方法是:运用Spring的delegatingrequest-processor覆盖Struts的requestprocessor。当Action-Servlet转发用户恳求时,并没有转发给实际的Action处理类,而是转发到Spring供应的Delega-tingActionProxy类,这个类负责将全部的恳求转入Spring容器内,通过这种方式,可以实现Struts和Spring的整合。6.2整合Spring+Hibernate的开发架构整合了Spring+Hibernate的开发架构的应用系统,从整体结构上严格按DAO层、业务逻辑层、限制器层的方式进行分层,系统各类的组件被封闭在自己层内。系统将全部的DAO组件封装在DAO层内,供应DAO工厂管理DAO组件。将全部的业务逻辑组件封装在业务逻辑层内,运用业务逻辑组件工厂来管理业务逻辑组件。例如,当系统的业务逻辑组件须要DAO实例时,通过调用DAO工厂的getDao方法来获得DAO实例,而不是自己创建一个DAO实例,降低了组件之间的耦合。Spring供应了HibernateDaoSupport、Hibernate-Template、HibernateCallBack三个工具类(或接口)来支持DAO组件的实现。通过Spring管理Hibernate的SessionFactory实例,可以充分利用IoC容器的特点,将SessionFactory干脆注入到DAO组件中,避开DAO组件手动获得SessionFactory实例。6.3基于Struts、Spring和Hibernate架构的销售订单管理系统开发公司销售订单管理系统,用于处理公司与客户之间的销售订单业务数据,通过建立一个包括表示层、业务逻辑层和数据存储层的多层应用体系,采纳Struts、Spring和Hibernate架构软件开发技术,提高了软件的可重构性和可用性,并作为一个数据集中的集成应用系统,实现了多个订单和材料、进度等信息的实时集中与共享,从而提高企业的管理水平。该系统的视图层和限制器层采纳基于web.xml和struts-config.xml的方式。在web.xml中配置contextConfigLocation参数定义applicatonContext路径,通过ContextLoader-Servlet在应用服务器启动时加载springContext(Spring应用上下文是Spring连接Struts的纽带)。Web.xml中的配置加载Spring的Application-Context的Servlet:<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param><servlet><servlet-name>SpringContextServlet</servlet-name><servlet-class></servlet-class><load-on-startup>1</load-on-startup></servlet>限制器层采纳了Struts的ActionForm,ActionServlet和Xml配置文件结合的技术。同时采纳了Spring的IOC方式来实现了视图层和限制器层的整合,Struts中的Action交由Spring容器来管理。业务逻辑层采纳了Struts和Spring整合的方式来实现业务逻辑,业务逻辑和数据库层的交互是采纳基于Spring+Hibernate的方式。Hibernate将数据长久层中的数据操作bean交由Spring容器来管理,在整个应用中,Spring的IoC是核心,它负责业务逻辑组件和DAO组件的管理,同时还负责Hibernate长久化访问所必需的SesssionFatory组件,以及SessionFactory所必需的数据源组件的管理。业务层的位置及相关类,如图5:图5业务层位置及相关类Fig.5TheBusinessLayerlocationandSeriesofClass数据库访问管理层采纳了基于Hibernate的DAO组件和POJO的模式,并且采纳了在Spring里通过依靠注入整合Hibernate的方式,同时,采纳了基于工厂模式的实现数据长久层(ORM)。全部的DAO的Hibernate实现都继承HibernateDaoSupport:publicclassOrderDAOHibernateImplextendsHibernateDaoSupportimplementsIOrderDAO{publicvoiddeleteOrder(Orderorder){getHibernateTemplate().delete(order);}.............}DAO在Spring中的配置:<beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><propertyname="configLocation"value="classpath:hibernate.cfg.xml"></property></bean><beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><propertyname="sessionFactory"ref="sessionFactory"></property></bean><beanid="orderDAO"class="cn.shop.service.dao.hibernate.OrderDAOHibernateImpl"><propertyname="sessionFactory"ref="sessionFactory"></property></bean>从架构的角度来看,本系统的数据库访问管理层单独构成了一个层面,具有重用性高的特性。7结束语本文首先介绍了WEB应用的分层结构,阐述了这种分层结构的优点;然后分析了Struts、Spring和Hibernat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区活跃度的预算与投资合同
- 全职员工离职说明
- 数据库技术COMPUTER87课件
- 铁路市场营销集中性市场营销策略课件
- 双总线冗余供电方式卢凯霞时间年月课件
- 中医特色护理课件
- 中医关于水肿的课件
- 高空电力作业安全合同
- 养生保健品经销合同范本
- 北京市东城区2024届高三下学期一模历史试题 含解析
- DB11-T 1390.4-2018 环卫车辆功能要求 第4部分:餐厨废弃油脂运输车辆
- 化工生产基础知识习题库
- 2024年医疗大数据分析与应用项目合同
- 2025风电机组无人机巡检技术方案
- 大学武术知到智慧树章节测试课后答案2024年秋浙江大学
- 2025年中移铁通限公司公开招聘工作人员100名高频重点提升(共500题)附带答案详解
- 2025年度学院学术委员会专家聘用合同3篇
- 建筑业职业危害防治措施
- IATF16949基础知识培训教材
- 《基于机器视觉的激光焊缝跟踪系统研究》
- UL1059标准中文版-2020接线端子UL标准中文版
评论
0/150
提交评论