spring框架范文

时间:2023-10-23 10:28:01

spring框架

spring框架篇1

关键词:Spring;DWR;EXT;三级联动

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)15-0103-02

Spring提供了简单而有效的JDBC应用并且能和其他一些开源框架进行无缝结合,比如DWR。AJAX能实现页面局部刷新, DWR是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,它允许开发人员直接在浏览器端直接调用后台java代码。但是,DWR很难构建出漂亮的视图层页面。而EXT是一个用于客户端创建丰富多彩的web应用程序界面的Ajax框架,正好可以弥补DWR的缺陷。所以spring+dwr+ext三个框架用于web应用开发中,理论上是非常不错的。

1 Spring JDBC模板设计模式

Spring内置了一组数据访问框架,可以针对JDBC、Hibernate、MyBaties等常见数据访问技术提供简化操作,让我们把精力集中在核心的数据管理上面。常见的DAO码中,大部分都是管道代码(重复的),只要少数几句核心代码是每个方法不相同的。Spring利用“模板方法”设计模式,把管道代码预先定义好,然后通过接口,把方法的特定细节(变化部份)委托到外部交给程序员后期实现。“模板方法”设计模式的定义是:在方法里预先定义算法的骨架,将一些步骤延迟到其子类去实现。Spring JDBC模块为开发人员提供了一系列的抽象类,我们在写DAO类时只要继承于这些抽象类,并实行其中的相应方法即可。这样,大大简化了DAO的开发步骤,基本上一些DAO操作只需要一两句代码即可。 并且,Spring还封装了一些异常,因此,开发人员编码时也无需自己编写捕获各种特定的异常的代码,从而大大简化了DAO方法的编写。

2 DWR技术原理介绍

DWR(Direct Web Remoting)是位于服务器端的AJAX框架,用于处理客户端的请求并进行异步处理,将及时处理结果反馈于客户端浏览器中。它包含2个主要部分:一个运行在服务器端的Java Servlet,它处理请求并且向浏览器发回响应。另一个是运行在浏览器端的JavaScript,它发送请求而且还能动态更新网页。DWR工作原理是通过动态把Java类生成为Javascript。它的代码就像Ajax魔法一样,感觉调用就像发生在浏览器端,但是实际上代码调用发生在服务器端,DWR负责数据的传递和转换。这种从Java到JavaScript的远程调用功能的方式使DWR用起来有种非常像RMI或者SOAP的常规RPC机制,而且DWR的优点在于不需要任何的网页浏览器插件就能运行在网页上。

3 EXT技术特点

Ext是一个前台页面开发框架,可以用来开发富客户端的AJAX应用,是纯Html/CSS+JS,拥有丰富的跨浏览器UI组件,采用灵活的JSON/XML数据源开发,减轻了服务端表示层的负荷,真正实现客户端的MVC应用,并且每一个组件都拥有漂亮的样式及布局,经过简单的调用与配置就可以实现不错的界面布局,。是开发页面不错的技术选择

4 Spring、DWR与EXT的整合及应用

4.1 三种框架的整合工作原理

Spring、DWR与EXT整合工作流程:Spring JdbcTemplate封装了JDBC的流程,包括了SQL的执行、查询结果的转换和异常的捕捉等等。在java程序中使用了JdbcTemplate的类中采用依赖注入jdbcTemplate,然后就直接调用JdbcTemplate中的数据库方法,如查询queryForList,更新update等。Spring JdbcTemplate负责应用系统数据库的操作。DWR负责将后台的java对象转化成前台页面的js 对象,让开发人员可以在客户端脚本语句中直接调用。开发人员在前台ext代码中调用后台java函数时,DWR 会将此转换成对应的请求发送到服务器端。当服务器处理完请求后,dwr还会将处理的结果返回给前台ext,EXT负责将后台传过来的数据呈现在漂亮的客户端界面上。

4.2 实例的应用

本实例是自己教学过程中用Spring+DWR+EXT框架开发web应用程序经常用到的的组合框的三级联动,通过实例来分析如何整合这三种框架,以其来提高开发效率和改善用户体验。

项目中要用到Spring,DWR,EXT框架,首先需要在项目中添加spring 、dwr 以及extjs所需的jar 包。并将包放到合适目录下。

1)在web.xml中配置Spring与DWR

在web应用中添加Spring支持,需要在web.xml中配置spring启动的监听器:(代码略)。

在Spring框架之下,每个Java对象将会以bean的方式存在。

2)编写具体的类ResourceGISDistributeDao,实现数据库的业务处理。列出部分代码说明:

/*查询营业部数据*/

public List queryyingyebu(String cityid) {

try { return this.jdbcTemplate.queryForList(this.yingyebuString, new Object[]{cityid});} catch (Exception ex) {

ex.printStackTrace();

return null;}

}

3)编写spring配置文件

在spring配置文件中,我们主要是用来配置数据源和操作数据库的dao,以便在dwr配置文件中进行引入访问。

SELECT DISTINCT T.TOWN_ID,T.TOWN_DESC FROM APP.RS_CHL_NET_CELL_BASIC T WHERE T.CITY_ID=?

4)编写dwr.xml配置文件

Dwr配置文件与web.xml在同一目录下,配置将要被调用的java类。部分代码如下:

5)创建视图层

最后,创建视图层。视图层项目中采用jsp技术。在jsp页面中要引用dwr的engine.js和util.js,还要引用dwr自动生成的js,如dwr/interface/ResourceGISDistributeDao.js,注意js名字要和dwr.xml配置的一样。这样就可以在jsp页面中通过脚本代码来调用在服务器端dao层ResourceGISDistributeDao代码,函数比在java代码中多了个参数function(data),用来callback返回的数据,如下:ResourceGISDistributeDao. queryyingyebu (function(data){

DwrReturnData = data; });

最终组合下拉框三级联动效果图图1。实践发现,采用spring+dwr+ext三个框架相结合的异步读取的方式,能使多级联动的数据不需要一次性地从数据库中读取出来,而会在页面初始化的时候只读出第一级组合框(市级)的数据,再根据用户的选择读出相应的下一级(营业部)组合框数据,极大地提高了用户体验。且EXT的组合框控件有缓存机制,再次点击时会去缓存中读取数据,提升了响应速度。对于开发人员而言,JavaScript代码量及复杂度大大降低,极大地减轻了编程负担。

5 结束语

DWR框架响应迅速、交互性强 ,EXT能够创建丰富多彩的web应用程序界面, Spring框架将DWR与EXT框架有机地整合起来,使JAVA应用更加灵活,因此基于Spring+DWR+EXT框架的能很好地进行web应用开发。

参考文献:

[1] 林信良. Spring3.0技术手册[M]. 北京: 电子工业业出版社, 2012.

[2] 董鑫. 基于AJAX的动态Web开发技术探讨[D]. 郑州: 河南大学, 2010.

[3] 李健, 郭宇明, 石桂名. 基于DWR的Ajax技术研究与实现[J]. 现代计算机:专业版, 2013(7): 132-133.

[4] 王霓虹, 金兴. Ajax技术及其DWR框架实现[J]. 自动化技术与应用, 2012, 26(12): 92-94.

[5] 张栗, 张凤元, 危胜军. 基于DWR框架的Web应用的设计与实现[J]. 计算机技术与发展, 2012, 18(8): 84-87.

spring框架篇2

关键词:持久化,对象/关系映射,J2EE

 

随着计算机网络的普及以及计算机技术的普遍应用,近年来出现了越来越多的Web 应用,应用范围包括信息管理、在线交易、工作流及协作环境、网络社区等。这些应用系统的共同特点是Web 页面多、导航困难、业务逻辑复杂。而在现在B/S 结构的大型Web 开发中, 可重用的、易维护和扩展的, 并且性能良好的组件, 是至关重要的。Hibernate+Struts+Spring (HSS) 框架。这种框架使用Struts 实现表示层,Spring实现业务层,Hibernate 实现持久层,然后把三者无缝地整合起来,应用到项目开发中。劳资管理是一项政策性很强,工作量很繁复的工作,其主要包括2 年1 次的正常晋级、职务变动等劳动工资的调整及各类人员绩效工资情况的统计。由于它牵扯到每一个员工的切身利益,所以其准确性要求极高, 特别是要查找某人历年的工资变动情况时,非常繁琐,费时费力。本文将Web 环境下的Hibernate+Struts+Spring 框架应用于劳资管理工作中。

1 MVC 模式

MVC(Model- View-Control, 模型- 视图- 控制器)模式是XeroxPARC 在20 世纪80 年代为编程语言Smalltalk―80 设计的一种软件设计模式, 至今已被广泛使用, 并被推荐为Sun 公司J2EE 平台的设计模式, 其为开发交互式应用系统提供了一个优秀的设计模式, 受到越来越多开发者的欢迎。MVC 要由3 部分组成:模型、视图和控制器,

模型(Model)包括业务逻辑和业务规则等, 在MVC 的三个部件中拥有最多的处理任务。它可以用JavaBean 和EJB 等组件技术来处理数据库的访问。模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用, 所以减少了代码的重复性。

视图(View)是屏幕上的显示。模型进行操作之后, 其结果就是通过视图来显示的。在视图中其实没有真正的处理发生, 只是作为一种输出数据并允许用户操作的方式。控制器用于管理用户与视图发生的交互。一旦用户想对模型进行处理时, 它不能直接去执行模型, 而是通过控制器来间接地实现。

控制器(Control)能从视图中取值, 然后将相应的值传给模型进行处理。控制器接受用户的输入并调用模型和视图去完成用户的需求。论文大全。

MVC 模式的处理过程是:首先由控制器接收用户的请求, 并决定应该调用哪个模型来进行处理, 然后模型用业务逻辑来处理用户的请求并返回数据, 最后控制器用相应的视图返回数据, 并通过表达层呈现给用户。MVC 本身就是一个非常复杂的系统, 所以采用MVC 实现Web 应用时,最好选一个现成的MVC 框架, 在此之下进行开发, 从而取得事半功倍的效果。现在有很多可供使用的MVC 框架, 由Struts有完整的文档并且相对来讲比较简单, 所以用它开发MVC 系统还是比较方便地。

2 Struts+ Hibernate+ Spring

Struts 提供了Controller组件并且整合了其它技术来实现Model 和View。对于Model,Struts 可以使用标准数据访问技术,如JDBC 和EJB,也可以使用第三方工具,如Hibernate。至于View,Struts 支持JSP 技术、JSTL 和JSF,也可以使用Velocity模板,XSLT 及其它表示系统。此外Struts 提供了自定义的标记库,可以辅助JSP 进行表示层的设计,通过这些自定义标记可以和系统的Model 部分进行交互。Struts 的核心组件有:

ActionServlet、Action、ActionForm、ActionMapping、ActionForword、TagLib 以及配置文件等。我们用JSP 技术结合Struts 强大的TagLib 来实现我们的表示层[3]。

在企业级的应用中,由于需要频繁的与数据库交互,开发者往往在应用和数据库之间建立一个“持久层”,它负责应用到数据库的数据存储,也负责数据的检索和更新。在J2EE 的应用中,这个持久层通常使用DBC,实体Beans,JDO 等等技术来建立。但由于JDBC 中数据访问对象(DAO) 和SQL 语句直接绑定在一起,且不支持继承和多态,而且还需要额外的EJB 容器,这就降低了系统的可维护性。Hibernate 是一个实现对象和关系之间映射(objectrelation mapping,ORM)的开源框架。它对JDBC 进行了轻量级的对象封装,使得JAVA程序员可以使用面向对象的编程思维来操作关系数据库。如果在软件开发中采用面向对象的方式进行设计,而使用的是关系数据库,就可以选用Hibernate 这种框架来实现对象和关系之间的映射和数据的持久化。Hibernate拥有一种功能非常强大的查询语言HQL,这种语言与SQL 相似,而且完全是面向对象的。它查询的是持久化对象,而不是数据库的记录,而且它可以支持多态、继承、关联等关系[3]。

Spring 是一个以依赖注入(inversionof control,IoC)原则和面向方面编程思想(aspect-oriented programming,AOP)为基础的轻量级框架。Spring 既是一个AOP 框架,也是一个IoC 容器。运用AOP 可以创建“横切关注点”(CrosscuttingConcerns),在应用时将它们插入代码中,使得代码有良好的可重用性。IoC 容器允许在需要生成对象的地方创建一个应用上下文,然后将这些对象传递给它们的合作对象。它可以很容易地替换业务对象,只要用Java Bean 属性和配置文件加入依赖性,然后就可以很容易地在需要时替换具有类似接口的协作对象[3]。

Spring 还提供了可以和总体的IoC 容器集成的强大而灵活的MVCWeb 框。Spring 是一个轻型容器,其核心是Bean 工厂,用以构造我们所需要的Model。在此基础之上,Spring 提供了AOP的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean 工厂的扩展ApplicationContext 更加方便我们实现J2EE的应用;DAO/ORM 的实现也更方便我们进行数据库的开发;Web MVC 和Spring Web 提供了JavJava Web 应用的框架或能够与其它流行的Web 框架进行集成[5]。

Spring 使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring 的用途不仅限于服务器端的开发,从简单性、可测试性和松耦合的角度而言,任何Java 应用都可以从Spring 中受益。

3 系统设计

经过对劳资管理系统进行详细的系统分析,系统需要实现全动态、分布式的信息传输与处理机制,实现系统出勤信息按部门和权限进行动态和更新。Web 浏览器是集成所有信息服务的最终平台,因此该系统是基于三层的浏览器/服务器(B/S) 体系结构。

其中表现层用JSP 技术结合Struts 强大的TagLib 来实现,业务层由Spring 实现业务组件的组装关联,通过依赖注入、A O P应用、面向接口编程,来降低业务系统开发环境:Netbeans;后台数据库:SQL Server2000;Web服务器:Tomcat5.0。系统总体设计如下:

图1 系统总体设计图

考勤模块:此模块可以由各部门通过网络访问,将本部门的各员工的本月出勤情况,加班情况上报人事部门。经人事审核后存入系统数据库。

工资计算:此模块由人事部门使用,包括岗位工资,技能工资,月奖,年终奖的计算方法设置,系统根据人事部门设定的计算日期自动计算当月各员工工资。

政策管理:此模块负责有关各项人事法规、工资法规的设置,根据这些法规设置工资调整,工资的计算法则。

工资查询:由各员工通过网络访问进行月度工资的计算;财务部门也可以通过此模块进行工资核实。此系统在当月工资计算完毕惊人是审核后会自动传递到财务部门的财务系统,接受财务审核。

用户管理:此模块负责该系统用户的使用权限的分配和管理。

4 结束语

本文针对劳资管理的特点,利用企业流行的Struts+Hibernate+Spring 应用技术,设计出基于J2EE 平台的电子政务系统。论文大全。论文大全。在系统建模中,通过采用Struts 的设计充分地体现了MVC 的架构,其维护起来会非常方便。Hibernate的引入避免了手工编写访问数据持久层的方法,Spring利用延时注入思想组装代码,大大增强了项目的可扩展性,降低了维护成本,提高了软件开发效率。实际的应用表明:该系统具有良好的交互性、可扩展性和可维护性,表现出良好的性能。

参考文献

[1]  李 健. 劳动工资与社会保障MIS 系统的设计与实现[J ] . 计算机系统应用,2000 (1) :26~29.

[2] 吴翔胜.人事劳资管理软件的开发和应用[J ] . 郑州纺织工学院学报,1999 (2) .

[3] 孙卫琴.精通Struts:基于MVC 的Java Web开发[M].北京:电子工业出版社,2004:95-127.

[4].The apache softwarefoundation[EB/OL].struts.apache.org/.

[5] Hibernate .Relational ersistence for Javaand .NET[EB/OL].hibernate.org.

 

spring框架篇3

著名的软件大师RalphJohnson对框架(Framework)进行了如下的定义:框架是整个系统或系统的一部分的可重用设计,由一组抽象的类及其实例间的相互作用方式组成,框架一般具有即插即用的可重用性、成熟的稳定性以及良好的团队协作性。JavaEE复杂的多层结构决定了大型的JavaEE项目需要运用框架和设计模式来控制软件质量。Struts、JPA和Spring是JavaEE开发的3种轻量级开源项目,它们的出现为开发人员提供了极大的便利,将开发人员从简单而繁琐的工作中解脱出来,从而去关注业务逻辑模块的实现,从而降低了开发周期。同时,也为系统的性能和安全性提供了保证,提高了系统的扩展性和可维护性。

1.1Struts

Struts作为Apache组织的子项目,是一个基于MVC(模型—视图—控制器)设计模式的开源框架,其摆脱了传统Web应用开发模式的束缚,得到了众多软件企业和开发人员的认可,成为MVC模式Web应用的首选框架。Struts的模型(Model)分为Action和ActionForm两个对象,由ActionForm封装交互的数据元素,Action完成业务处理。视图(View)由JSP以及Struts标签库等组成,视图负责前端的页面及数据显示。控制器(Control-ler)用于管理模型与视图的交互,控制组件有struts-con-fig.xml和ActionServlet,控制器主要处理发送到Struts的HTTP请求,把请求分发到相应的Action类,然后通过ActionForward进行链接转向。

1.2Spring

Spring是一个以控制反转(IOC)和面向切面(AOP)编程为核心的轻量级分层体系结构开发框架。通过控制反转机制,只需描述哪一个组建需要哪一项服务,而无需在代码中直接与对象或服务连接,通过IOC容器自动地将其注入。同时运用面向切面编程可以创建“横切关注点”,可将它们插入到代码中,使代码具有良好的可重用性可扩展性。此外,Spring还提供了包括声明式事务管理,RMI或WebServices远程访问业务逻辑,以及可以多种方法进行的持久化数据库的解决方案。

1.3JPA

JPA(JavaPersistenceAPI)由EJB3.0软件专家组开发,是JavaEE标准中的ORM规范,它充分吸收了现有Hibernate、TopLink等ORM框架的基础上发展而来。JPA是一个简单易用、伸缩性强的ORM规范。任何符合JPA标准的框架都提供相同的访问API,这确保了利用JPA技术开发的企业级应用可以在任何实现了JPA规范的ORM框架中运行,可移植性很强。目前主流的ORM框架如Hibernate也提供了对JPA的实现。

2系统设计

2.1系统功能模块设计

电子商务系统是一套面向企业级的商品在线交易平台,从用户的角度看系统可分为前台和后台两大模块,前台主要负责用户的产品浏览,在线交易,产品评价等商务活动。后台模块又可根据超级管理员、普通管理员、部门员工等不同权限对网站的运营实施管理功能。从功能结构上看,系统可包含多个功能子模块,具体如下:产品管理:网站运营人员可通过该模块对产品的详细信息进行管理。产品具有产品类别、品牌、价格、销量、点击数、厂商、是否推荐标识等属性,产品类别具有向下无限级分类功能。产品搜索:根据用户输入的关键词对产品信息进行搜索,并可通过产品类别、品牌、价格等属性进行筛选。产品展示:前台展示页面提品类别和品牌的导航,通过导航可以定位到相应类别和品牌下的产品列表;产品页面显示产品的详细信息,并可根据产品价格,产品销量等属性对产品进行排序。购物车:购物车是在线交易系统的重要组成部分,类似于现实世界超市中的购物篮。用户可以将喜爱的产品添加进购物车,而后建立订单结算,支付方式可通过在线支付(支付宝等)和邮局汇款方式。购物车提品添加、产品删除、产品数量修改、产品清空、产品总价格计算等功能。订单管理:订单管理模块的主要功能包括订单查询、订单修改、订单删除、订单处理等。订单处理流程由多个部门协同参与,市场部负责订单确认,财务部负责订单支付确认,产品部负责产品的配送。订单根据处理流程应具有多个处理状态:未处理、已确认、已支付、已配送等。为避免同一订单同时被多人进行处理造成的订单异常,订单在被处理时其状态设为锁定,只允许单人访问,处理完毕后恢复解锁。用户管理:网站的用户群体可分为前台客户和网站运营人员,故用户管理功能可分为对前台客户信息的管理和网站运营人员的管理。对前台客户可管理其注册信息、购买行为、评论回复等;对网站运营人员可管理其员工信息和部门信息等。其中,网站运营人员隶属于不同的部门之下,每个部门行使不同的责任和权限。权限管理:权限管理针对网站的运营人员设定,超级管理员拥有所有权限,可创建并维护下属的部门信息,为部门添加员工并分配部门相应的操作权限。数据统计:对产品的销量、点击数、访问来源、个性化用户购买行为、浏览习惯等数据进行统计,为网站商业运营提供决策支持。

2.2分层架构设计

基础平台采用JavaEE的三层结构,分为表现层、业务逻辑层和数据服务层(系统架构如图1所示)。其中表现层主要包括Jsp、Struts标签和JSTL/EL来完成页面显示和数据的呈现。数据服务层由MySQL提供数据存储服务。中间层通过整合主流的开源框架Struts+Spring+JPA实现,具体又可细分为:①Web层,负责表现层与业务逻辑层的交互,通过调用业务层对象处理业务,并进行链接转向,呈现数据到表现层;②Service层,负责业务逻辑的实现,通过DAO接口的实例对象进行持久化操作;③DAO层,负责与持久化对象进行交互,封装了基本的数据访问方法,如增、删、改、查等;④PO层,负责对象到关系数据库的映射。整合框架的过程中,通过基于MVC模式的Struts框架,利用ActionForm类封装与用户交互的数据元素,Ac-tion类实现控制、调用业务对象处理业务。通过Spring容器进行业务组件的组装关联,通过依赖注入、AOP应用、面向接口编程,来降低组件之间的耦合度,提高系统的扩展性和通用性。把ActionObject交由Spring容器进行管理,在Action中可通过依赖注入功能为Action对象注入业务对象;使用Spring容器提供的事务管理功能对业务层对象声明事务管理。通过JPAAPI对实体bean进行持久化操作。

3系统实现

3.1泛型机制

泛型是JavaSE1.5的新特性,在没有引入泛型的情况下,往往通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,导致常常出现运行时的转型异常。本系统通过引入泛型机制实现参数化类型,所操作的数据类型被指定为一个参数,该参数类型可以用在类、接口和方法的创建中,并且所有的强制转换都是自动和隐式的。从而提高代码的重用率和可读性。

3.2产品分类实现

下面以产品分类为例详细说明在架构中该模块的具体实现。产品分类应具类别添加、修改、查询、删除、向下无限极分类、分页查看等功能,由于产品类别之间、类别和具体产品之间有诸多层次性关系,为避免由于删除产品类别导致的其他数据异常,故删除功能并不对产品类别的数据进行物理删除,而是通过一个是否可见标识设定其可见或隐藏。产品分类具有如下属性:分类ID、类别名称、是否可见标识、所属上级分类、子类别等。

3.2.1持久层实现

持久层主要包括持久化类和元注解。通过JPA提供注解方式配置实体的JPA行为,属性映射可以在持久化类的属性getter方法上进行标记。JPA与数据库的连接通过persistence.xml文件进行配置,包括连接数据库所用的连接池、用户名和密码等信息。部分产品类别的实体Bean代码如下:@Entity//指定为JPA实体publicclassProductTypeimplementsSerializable{privateIntegertypeid;//产品类别idprivateProductTypeparent;//所属父类privateSet<ProductType>childtypes=newHashSet<ProductType>();//子类别…@Id@GeneratedValue(strategy=GenerationType.AUTO)//注解持久化类的主键信息和主键的生成策略publicIntegergetTypeid(){returntypeid;}publicvoidsetTypeid(Integertypeid){this.typeid=typeid;}@ManyToOne(cascade=CascadeType.REFRESH)@JoinColumn(name="parentid")//定义外键对应关系和级联publicProductTypegetParent(){returnparent;}publicvoidsetParent(ProductTypeparent){this.parent=parent;}…}

3.2.2业务层实现

(1)DAO层的实现

DAO层包括一个接口DAO及其DaoSupport实现类,通过引入泛型机制实现参数化类型,可对所有实体进行操作。DAO层作为业务逻辑层Service的上层父类,完成和持久层进行交互的,不同的业务逻辑类可根据不同需求对DaoSupport方法进行重载。DaoSupport类部分代码片断如下:@Transactional//声明事务管理publicabstractclassDaoSupport<T>implementsDAO<T>{@PersistenceContextprotectedEntityManagerem;//声明实体管理器publicvoiddelete(Serializable...entityids){for(Objectid:entityids){em.remove(em.getRef-erence(this.entityClass,id));}}@Transactional(readOnly=true)//声明事务只读属性publicTfind(SerializableentityId){returnem.find(this.entityClass,entityId);}}

(2)Service层实现

业务对象负责处理程序的业务逻辑,包括一个接口及其实现类,需要继承DaoSupport实现类并将具体的实体作为泛型参数传入。不同实体的业务类可根据需求重载或增加新的的方法。代码片断如下:@Service@Transactional//声明该类为业务类和声明事务管理publicclassProductTypeServiceBeanextendsDao-Support<ProductType>implementsProductTypeService{@Override//重载实体的删除方法publicvoiddelete(Serializable...entityids){更改可见标识代码;}…}

(3)业务层的配置

下面就是通过Spring的配置文件将定义好的DAO和Service组装关联起来。配置文件bean.xml文件代码片断如下:<beanid="entityManagerFactory"class="org.springframework.orm.jpa.LocalEntityManagerFactory-Bean"><propertyname="persistenceUnitName"value="shopping"/></bean><beanid="transactionManager"class="org.spri-ngframework.orm.jpa.JpaTransactionManager"><propertyname="entityManagerFactory"ref="entityManagerFactory"/></bean><tx:annotation-driventransaction-manager="trans-actionManager"/><beanid="compass"class="pass.spring.LocalCompassBean"><propertyname="classMappings"><list><value>com.bean.product.ProductInfo</value>…</list></property><propertyname="transactionManager"ref="transactionManager"/></bean>

3.3分页实现

在编写JavaWeb应用时,常常需要对显示的数据进行分页显示,如果一次性将所有结果数据显示给用户,则显得不够人性化和美观。该系统对分页功能进行封装,并引入泛型机制,调用时通过include指令包含一个用于显示分页数据的独立jsp页面即可完成对所有实体的分页功能。具体做法是:利用泛型定义一个查询结果类QueryResult用于存放查询得到的分页数据,该类包含两个属性List<T>型的结果记录集resultlist和long型的查询结果的总记录数totalrecord以及它们的getter和setter方法;同样利用泛型定义一个用于在页面显示的页对象PageView,其包括总记录数、总页数、每页显示记录数、当前页、记录的开始索引、起始页码、结束页码、分页数据等,其中分页数据为List<T>型,通过set方法将QueryResult的分页数据注入,另外总记录数,总页数和记录的开始索引也需要通过简单的公式计算出来,通过set方法注入,在此不一一列举。用于显示分页数据的独立jsp页面fenye.jsp部分调用如下:<c:forEachitems="${pageView.startindex}"end="${pageView.endindex}"var="p">第${p}页</c:forEach><c:forEachitems="${pageView.records}"var="entry">${entry.propertyValue}</c:forEach>

4结束语

spring框架篇4

对于POJO的开发,存在着两种框架EJB3.O和Spring,这两个框架组件的核心设计理念是相同的:把中间件服务传递给松散耦合的简单旧式Java对象(POJO)。这些框架组件通过在运行时截取执行内容或向POJO注入服务对象,把应用程序服务与POJO捆绑在一起。POJO本身不关心捆绑的过程,并且对框架组件几乎没有依赖。其结果是,开发者可以聚焦于业务逻辑,个人可以在没有框架组件的情况下测试他们的POJO。此外,由于POJO不需要从框架组件中继承或实现框架组件接口,开发者建立继承结构和构建应用程序的时候都有高度的灵活性。

但是,尽管两者的设计理念是相同的,它们传递POJO服务时却采用了完全不同的方法。

注入方式

Spring仍然是依赖XML来注入到POJO的,XML写起来比较麻烦,虽然流行的IDE都有图形化的编辑界面,但还是很难操作,同时Spring使用XML来说明配置声明,也会产生一个冗长的配置文件。这些配置文件必须在运行时才能知道其中的错误,哪怕是一个大小写的问题。因此Spring目前也在考虑如何简化XML配置文件。

EJB3.0使用Annotation,这要比Spring简单明了,但其功能也受到一定的限制。Spring基于XML配置的依赖注入语法复杂,但功能却非常强大。可以将任何一个POJO注入到另一个POJO,包括应用程序中自定义的那些POJO。

松散耦合度与服务集成

Spring与应用服务器采取松散耦合,作为Spring设计的核心理念,这样增强了Spring的灵活性,但同时也增加了开发的复杂度,因为如此一来,开发者就必须弄清楚Spring对应的应用服务器的。而事实上,这些与应用服务器的关联代码对于开发者大都是不必要的,开发者往往只需要关系业务逻辑就可以了。使用Spring的声明式事务服务来管理Hiber-nate事务,必须在XML配置文件中明确的配置Spring的事务管理器(TransactionManager)和HibernateSessionFactory对象。

EJB3.0框架与应用服务器结合较紧密,服务被集成封装,隐藏在EJB接口后面。因为EJB3.0本身就是J2EE标准的一部份,因此,它与其他J2EE服务如JCA,JMX都结合的很好。而缺点也正是结合太紧密,不够灵活。

对Web框架的支持度

Spring在这方面要优于EJB3.0,几乎 所有开源项目都有这个特性――对现有的 流行技术支持度都非常好。Spring可以灵活地集成各种Web框架和模板语言,另外自身也提供了相当强大的Spring-MVC框架,而且可以很好的结合springwebflow,webwork,struts等。同时随着Spring Web Services 1.0正式公布,SpringNweb service开发明显增强了,这无疑使Spring爱好者开发者更加热衷于Spring。 EJB3.0标准集成JSF,但JSF目前并不成熟,也没有得到预期的效果。同时EJB3.0对其他web框架支持也比较差。

开源与标准规范

Spring框架是开源项目,但不是标准的。Spring的接口配置文件描述都是私有的。虽然,Rona声称Spring完全支持可以不使用Spring的特殊专有服务,但是实际情况往往不是这样的。因此,一旦使用了Spring的特殊服务,那么就绑定到了Spring框架上了。例如,如果使用它的管理服务,则必须使用相应的Spring私有的API。而且,Spring的发展完全依赖于Spring开源项目,这使得它的支持力度也不够。

spring框架篇5

关键词:轻量级框架;Struts;Spring;Hibernate;大学生评价

中图分类号:TP311文献标识码:A 文章编号:1009-3044(2011)18-4351-02

Application Research of On-line College Students Evaluation System Based on Struts, Spring and Hibernate

LIANG Bi, ZHOU Ren-ming

(Department of Computer Science, Sichuan University of Arts and Science, Dazhou 635000, China)

Abstract: For the purpose of solving the insteabiligy of current College Students Evaluation System, this paper designed and implemented the system by adopting popular open-source frameworks, namely Struts,Spring and Hibernate. it not only makes up for the disadvantages of traditional Web developing technology, but also achieve the target of systematic layers and high cohesion, low coupling between components with lightweight, cross-platform advantages, improving the maintainability, extensibility and reusability of the System.

Key words: lightweight framework; Struts; Spring; Hibernate; college students evaluation

随着信息技术的发展以及现代高校管理的需求,开发一套高效而且稳定的大学生评价系统迫在眉睫。本项目开发目的在于摒除以往学校安排大量的人力、物力去调查处理繁琐的资料统计工作,充分利用网络资源共享的优势来有效地评价学生。传统的C/S模式已经无法满足现代的需求,随着各类开源框架的诞生,其良好的开发模式、结构框架搭建、以及开源信息的共享为系统开发带来了革命性的进展。其中,最具代表性的有Flex、Struts、Spring、Hibernate以及iBATIS等开源框架,它们以其轻量开发等诸多优势迅速占据了现在市场。本系统就是使用当前主流的SSH(即Struts+Spring+Hibernate)开源框架技术来进行开发。

1 Struts、Spring和Hibernate框架

Struts、Spring和Hibernate是目前多层Web系统开发中主流的开源框架,本文采用这三种开源框架实现了大学生评价系统的三层架构模式。

1.1 Struts框架

Struts框架是一个优秀的基于MVC模式的开源框架,主要包括三个部分:模型(Model)、视图(View)和控制器(Controller)[1]。它主要采用JSP与Servlet技术实现,把Servlet、JSP、自定义标签和信息资源整合到一个统一的框架中,通过一系列的Action、ActionForm或者Spring里封装的各种JavaBean来实现模型,运用标签库来生成视图,使用简单的配置文件来完成控制。它主要的设计理念是通过控制器将表示逻辑和业务逻辑解耦,以提高系统的可维护性、可扩展性和可重用性。

1.2 Spring框架

Spring是一种应用程序开源框架,其作用贯穿于整个应用程序的各个层面当中,它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情,它的用途不仅限于服务器端的开发,从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它提供了很多基础功能,如事务管理、持久化框架集成等,并将应用逻辑的开发留给开发者[2]。

1.3 Hibernate框架

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库[3]。Hibernate最具革命意义的是它可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration,这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。

2 系统设计

2.1 系统功能分析

本大学生评价系统开发的总体目标是使高校的学生评价工作系统化、规范化、自动化,从而达到缩短学生工作处有效评价学生的时间,提高他们的工作效率,节约人力和物力。为了实现该目标,本评价系统将评价人员分为7个角色,分别是学生、班委、教师、班主任、系辅导员、系主任、院领导。当用户注册完毕后,就可以登录该系统选择被评价的学生,对其各方面进行评价。评价的内容主要包括学生学习情况、奖励情况、生活情况、业余情况等。当评价完毕后,用户可以查看该学生的评价成绩以及排名情况。其中,评价最终得分采用加权平均算法来计算[4],其结果采用百分制,根据得分多少,将被评价学生分为5个等级和5个好评率,具体如表1所示。

2.2 系统功能设计

根据上述系统功能分析,可以得到整个系统有两大模块,即前台和后台。前台主要完成相关角色去评价要被评价的学生以及查看评价的结果,后台主要完成对用户角色以及评价信息等的管理,包括的主要功能模块如图1所示。

3 系统实现

spring框架篇6

关键词:Spring;依赖注入;AOP;MVC

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)26-6453-02

1 Spring的概述

Spring是为解决企业应用程序开发复杂性而创建的,减小了程序开发的复杂度。Spring不仅为开发者提供了一个优秀的框架,也为开发者提供了良好的设计和大量可供参考的源代码。它不仅可以应用于服务器端的开发,也可应用于客户端的开发。Spring也可以作为一个中间件,它可以独立于各种服务器,甚至不需要应用服务器的支持,也能提供服务器的功能,如声明式事物。Spring简单化了JDBC的使用,它可以用来管理所有的业务对象,它的设计从底部帮助你编写易于测试的代码,这就大大提高了程序员开发软件的效率。Spring是对J2EE思想进一步改造和扩充,使其发展成更开放、清晰、全面、高效的开发框架。

2 Spring的优势

Spring所耗费的系统资源开销是比较少的,它的很多优势是值得肯定。Spring的优势在于以下几个方面:低侵入式设计,代码的污染率低。它可以独立于各种应用服务器。Spring的依赖注入机制降低了业务对象替换的复杂性。 Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。Spring可以和其他框架良好的结合,如hibernate、struts等,使得应用程序开发更容易。

3 Spring的应用

3.1 Spring中的基本设计思想

Spring实现了两种基本设计模式,即工厂模式和单态模式。

Spring容器是实例化和管理所有bean的工厂。Spring使调用者只关心被调用者必须满足的某种规则(接口),而不必关心实例的具体实现过程,具体的实现过程由bean工厂完成。调用者只关心工厂实例实现某个接口,是否可供自己正常调用。该模式提供各对象之间清晰的角色划分,降低程序的耦合。

Spring默认所有bean设置成单态模式,即对所有id的bean的请求,都将返回同一个共享实例。单态模式大大降低Java对象创建和销毁时的系统开销。单态模式设计可以保证只有一个实例,并提供实例的全局访问点。比如,数据库引擎访问点只能有一个。使用单态模式可避免Java类的频繁实例化,让相同类的全部实例共享同一内存区。

3.2 Spring的核心机制

Spring框架提供了很多功能,这些功能能够很好的组合在一起,就是因为它使用了控制反转技术。控制反转就是由容器来控制程序中各个类之间的关系,控制权由代码转到外部容器,而不是传统中的直接有程序代码操控。原先的程序设计中,我们通常是通过创建一个类对象来调用这个类中的方法,这样在程序中就有大量创建类对象的代码。这些代码要不仅需要程序员手工编写,也不容易管理。Spring的控制反转技术就很好的解决了这个问题。所有的对象全部交给Spring容器管理,当程序需要对应的类对象时,我们就直接去Spring容器中获取。

当采用控制反转技术时,对象就会将对某些特性及方面的控制转到框架或环境。对象创建和对象定位的职责从类转移到框架,这种依赖关系就是依赖注入。依赖注入是控制反转一个具体实例。依赖注入是Spring的核心机制。依赖注入让bean和bean之间以配置文件组织在一起,而不是以硬编码的方式耦合在一起。依赖注入的目标是为了提升组件重用的概率,为系统搭建一个灵活、可扩展的平台。

3.3 Spring对AOP的支持

AOP(Aspect Oriented Programming),即面向切面的程序设计,也称为面向方面的程序设计。Spring中提供内置AOP支持。AOP为开发者提供了一种基于关注点进行软件设计的新思想,是对OOP(Object Oriented Programming)面向对象编程模型的一种扩展。利用AOP编程,开发人员可以将复杂的系统看作多个关注点组合在一起实现的。比如:一个系统通常包括业务逻辑、日志、安全等方面的关注点,开发人员可以分别实现系统所需要的业务逻辑,最后将这些实现组合在一起,构建完整的系统。

简单的说,AOP将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,方便将来的可维护性和可操作性。比如,日志散布在所有对象的层次中,而它却与散布对象的核心功能无关。

3.4Spring的事务管理

Spring封装了所有对事务处理的功能,包括事务的回滚、提交等。这大大减少了程序员的代码量,也有利于事务的管理。

读数据不需要为其指定事务,而数据的插入修改删除就需要事务管理了。对于依赖容器的参数化事务管理,Spring起到很大的作用。Spring的事务管理是基于动态AOP,AOP技术实现的事务管理实质就是:在方法执行前后进行拦截,然后在目标方法开始之前创建并加入事务管理,执行完目标方法后根据执行情况进行提交或回滚事务。Spring可以将Java Class纳入事务管理。通过Spring,我们实现简单的事务配置,就可以为某个类的某个方法制定事务管理机制。Spring事务管理并不依赖特定的事务资源。Spring的事务管理支持JDBC等多种事务资源,这为我们提供了多种选择。

3.5 SpringWeb中的MVC应用

MVC是Model-View-Controller(模型-视图-控制器)的简称。它把一个应用的输入、处理、输出流程按照Model、View、Controller的方式分成三层(模型层、视图层、控制器层)。视图用来显示和用户交互的页面,模型用来表示企业数据和业务逻辑,控制器是负责页面的跳转,并且从客户端接受请求执行相应的业务逻辑,然后把响应结果输出到页面上。MVC的好处就是将业务层和视图层分离,三层各司其职,一旦那一层发生变化,只需要修改相应层中的代码。

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring 的 Web MVC 框架是围绕分发器 DispatcherServlet 设计的。Spring MVC会把所有的请求都提交给DispatcherServlet,当DispatcherServlet接收到请求时,它会查找适当的处理程序来处理请求。处理程序映射HandlerMapping负责为请求返回一个适当的处理程序。DispatcherServlet查询一个或多个处理程序映射HandlerMapping,HandlerMapping将web请求映射到正确的处理程序(handler),也就是找到处理请求的控制器Controller(Spring MVC中用来处理web请求最典型的处理程序就是控制器Controller)。 DispatcherServlet将请求提交到目标控制器Controller。Controller进行业务处理后,会返回一个ModelAndView(模型和视图的基本类)。DispatcherServlet查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象。视图对象负责将模型属性返回给客户端,视图对象的任务就是将模型属性展示给用户。

MVC实现的可扩展性很强,Spring框架可以很容易的和Struts、Hibernate结合起来。Spring充当了管理容器的角色。Hibernate用来做持久层,方便了与数据库的交互。Struts用来做应用层,负责调用业务逻辑层。Spring框架就可以管理Struts中的Action对象和业务逻辑类,实现了层与层之间的分离,程序的执行效率就更高,维护更方便。

4 小结

Spring是一个开源的项目,它广泛应用于大中型项目。Spring提供了一个灵活和可扩展的MVC实现,它在依赖注入、事务管理等方面都很优秀。Spring在项目中的应用,使应用程序更简单,更容易测试,更容易管理,有利于为开发者提供简单、有效的解决方案。

参考文献:

[1] 李刚. Spring2.0宝典[M].北京:电子工业出版社,2007.

[2] Ladd S,Davison D,Devijver S,et al. 深入解析Spring MVC与Web Flow[M].北京:人民邮电出版社,2008.

spring框架篇7

【关键词】Spring DATA;Java EE;JPA;Spring MVC

1.引言

Java EE(Java Platform,Enterprise Edition)是sun公司推出的企业级应用程序版本。基于Java EE技术的可以方便、快速地建立融合 Internet 技术的多层结构的分布式企业应用。符合JAVA EE规范的系统架构包含三种核心构件:

(1)业务服务层构件,完成具体业务逻辑的处理,并为表现层构件提供服务;

(2)表现层构件,实现接受用户请求,返回处理结果的人机界面;

(3)数据访问层构件,通过访问后台数据库完成系统数据的持久化存储。

Java EE 5版本充分吸收了ORM 的思想,开始使用JPA(Java Persistence API)来操作数据库,开发者可以使用JPA来开发数据访问层的业务逻辑。开发数据访问层的业务逻辑在Java EE系统开发过程中将是一件非常重要和复杂的过程。Spring Data可以把程序员从大量重复、繁杂的数据库层操作中解放出来。

本文介绍 Spring DATA 框架的体系结构,将Spring DATA JPA集成到Java EE系统中用来简化数据访问层业务逻辑的开发。

2.Spring DATA框架介绍

Spring Data作为SpringSource的其中一个父项目,旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。spring data主要是对持久层进行简化,主要体现在只要声明持久层的接口,无需编写具体的逻辑实现。这个原理是根据方法名字进行解析,从而获取这个方法要执行的操作。

Spring Data组件的目的在于统一和简化对各类型持久化存储的访问,以及对新的数据访问技术提供支持,如非关系型数据库,map-reduce框架,以及基于云的数据服务等。Spring Data包含许多子项目,一一对应到具体的数据库,目前提供了对十余种数据访问技术的支持,主要有JPA、JDBC Extension、Redis、MongoDB、HBase、Neo4j、Apache Hadoop、GemFire等。无论是哪种持久化存储,Spring Data都提供了统一的数据访问层作为数据持久化的顶层抽象,其基本的接口是Repository,派生出 CrudRepository,PagingAndSortingRepository等接口,用于声明领域对象的CRUD(创建、查询、更新、删除)操作、排序和分页方法等通用功能。

3.Spring DATA JPA技术

3.1 Spring DATA JPA和Spring MVC的集成

要在Java EE项目中要使用Spring DATA JPA,首先需要引入相关Spring DATA JPA的jar包,包括:spring-data-commons和spring-data-jpa。其次,需要在Spring的applicationContext.xml文件中添加以下配置,以使 Spring 能够扫描到需要实现的持久层接口,并为其创建对象:

<jpa:repositories base-package=”cn.edu.xiyou”

entity-manager-factory-ref=”entity ManagerFactory”

transaction-manager-ref=”transaction Manager” />

3.2 核心接口

Spring DATA JPA包括以下几个核心接口:

(1)Repository

Repository是Spring Data的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法。

(2)CrudRepository

CrudRepository继承Repository,增加了基本的CRUD功能。

(3)PagingAndSortingRepository

PagingAndSortingRepository继承CrudRepository,新增了以下两个方法,具有分页查询和排序功能。

(4)JpaRepository

JpaRepository继承PagingAndSorting-Repository,针对JPA技术提供的接口。

(5)JpaSpecificationExecutor

JpaSpecificationExecutor可以执行原生SQL查询。

3.3 数据访问接口定义

根据业务的需要,在数据访问构件接口中声明需要的方法,Spring DATA将根据给定的策略来为其生成实现代码,对于开发人员只需要知道如何定义方法,而不需要实现方法,方法由Spring DATA JPA来实现。

Spring DATA根据用户定义的方法名称来判断该方法需要实现什么业务逻辑。Spring DATA在进行方法名解析时,会先把方法名多余的前缀截取掉,比如 find、findBy、read、readBy、get、getBy,然后对剩下部分进行解析。并且如果方法的最后一个参数是 Sort 或者 Pageable 类型,也会提取相关的信息,以便按规则进行排序或者分页查询。

在创建查询时,我们通过在方法名中使用属性名称来表达,比如 findByName (String name)。框架在解析该方法时,首先剔除 findBy,然后对剩下的属性进行解析。

在查询时,通常需要同时根据多个属性进行查询,且查询的条件也格式各样(大于小于等于某个值、在某个范围、在什么值之间等等),Spring Data JPA 为此提供了一些表达条件查询的关键字。例如:And等价于SQL中的and关键字,比如 findByUsernameAndPassword(String user,Striang pwd)。

4.Spring Data JPA应用

利用Spring MVC、Spring Data搭建Java Web项目。

4.1 表现层

项目的表现层使用Spring MVC框架,用户与浏览器交互的请求首先发送到 DispatchServlet 中,DispatchServlet 主要用于分发请求,它定义在 web.xml 中,他定义了一个名为system的 DispatchServlet。它根据在system-servlet.xml中定义的页面构件与 Servlet 控制构件的对应关系,将请求转发到相应的控制构件进行处理。

4.2 控制层

业务层构件一般被控制层构件调用,控制层构件以接口的形式声明所需的业务层构件的服务,由Spring框架根据system-servlet.xml中的配置实例化业务层构件,并注入到控制层中。

4.3 业务层

业务层构件一般被控制层构件调用,Spring会实例化业务层构件, 并将其注入到控制层构件中,如下所示:

4.4 数据访问层

数据访问层构件由业务层构件调用,这里使用Spring Data JPA来实现数据访问层,Spring框架会为每一个实现了Spring Data接口的interface创建对象,并将对象注入到业务层构件中。如下所示:

5.结论

本文在分析了Spring Data框架的功能和特点,通过对Spring Data和Java EE系统的研究,将Spring MVC与Spring Data JPA整合,建立了一个轻量级的Java EE Web系统。该系统利用Spring Data JPA使得开发人员不需要实现数据访问层的业务逻辑,只需要根据Spring Data的规则创建接口即可,不需要对接口进行实现,减少了大量工作量,减少项目开发时间,增强了系统的稳定性,提高了开发效率。

参考文献

[1]郝佳.Spring源码深度解析[M].人民邮电出版社,2013.

[2](美)波拉克.Spring Data:企业级Java的现代数据访问技术[M].东南大学出版社,2013.

[3](美)拉德(Ladd,S.).深入解析Spring MVC与Web Flow[M].人民邮电出版社,2008.

[4]计文柯.Spring技术内幕(第2版)[M].机械工业出版社,2012.

基金项目:西安邮电大学校青年教师科研基金项目(项目编号:ZL2014-49)。

spring框架篇8

论文摘要:本文通过介绍框架技术特点,提出了基于五层Web应用的框架整合结构。并在此结构上实现了城市公共信息服务平台的应用,为类似的电子政务应用提供了参考。

随着网络技术、信息技术的发展,各类信息充斥我们生活、工作及学习周围,但这些信息之间重复严重,数据准确度不高,社会公众很难准确获取与个人生活、工作、学习密切相关的本地数据和信息,进而影响人们的网络生活,因而各类专业的本地信息服务已成为当前互联网应用的一种趋势。由政府牵头整合政府、市场、企业等多方面资源,共同构建一个统一、开放、跨平台、系统结构层次清晰的城市公共信息服务平台,并以灵活多样的形式为本地公众提供准确、权威的信息服务已经成为当地互联网应用的一种重要需求。

基于J2EE技术标准体系的框架技术能够快速、有效地支持大中型Web应用项目的开发,但是在大中型Web应用中,可能存在几个层次,需要使用几个不同的框架。那么如何整合各层框架以让每个层在一种松耦合的方式互相协作,这是一个在软件工程领域实践性很强的课题。本文介绍了一个以Spring框架为核心,结合Struts、Hibernate框架的一种快速有效构建Web应用的框架整合策略,并在此整合策略基础上阐述了城市公共信息服务平台应用的设计思想和实现技术。

1J2EE框架技术特点

目前随着软件开发技术的发展,可重用、易扩展,而且是经过良好测试的软件组件,越来越为人们所青睐。这意味着人们可有充裕的时间用来分析、构建业务逻辑,而不是繁杂的代码工程。于是人们将相同类型问题的解决途径进行抽象,抽取成一个应用框架。

1.1Spring框架

Spirng框架是一个以控制反转(IOC)模式和面向方面编程(AOP)思想为核心的轻量级框架,主要用于对中间层业务组件的管理。常用的中间件解决方案EJB是一种重量级的容器,主要有以下缺点:必须实现EJB的接口,对业务逻辑组件侵人性很大;应用依赖于EJB容器,不能单独运行,另外启动时间长,测试复杂、配置很困难。

首先,Spring是一种轻量级的框架,是基于组件化、模块化的结构。它有分层的体系结构,因而针对Spirng开发的组件不需要任何外部库,也可以选择某个模块独立使用,从而避免了EJB复杂、启动时间长的缺点。

其次,Spring也是一个IOC容器。IOC模式是Spring的核心,它的本质是由容器控制业务对象的协作关系,而非传统的用程序编码在业务对象直接控制,控制权由程序代码转移到外部容器。通过IOC模式可以很容易地管理和替换业务对象。

另外,Spring又是比较全面的框架,它并没有象EJB一样从底层开始全面实现J2EE的功能模块。Spring提供了大多数的层次功能模块,但它并不是从头开始实现的,它通过对其它框架技术的支持来实现各层功能。它包括SpringCore核心层、MVC模块、SpringDAO、SpringORM、上下文控制、WEB表示层、面向方面编程7个功能模块。

1.2Hibernate框架

Hibernate是一种专业的对象关系映射(O/R)工具,通过Hibernate的O/R映射,可以以对象化的方式处理数据库表中的记录。Hibernate通过Properties文件建立数据库连接,通过映射文件(.hbm.xm1)将数据库表映射为Java类,表中的每条记录对应为类的实例,而数据列值映射为实例的属性。Hiber—nate将这些实例以持久对象(Persistentobject)形式向中间业务层提供服务。

1.3Struts框架

Sturts框架很好地实现了MVC设计模式的概念。它通过ActionServlet对象实现集中控制,并利用Struts—conifg.xml文件,很好地实现了视图、控制、模型层次之间的分离,使得页面设计与改变真正做到与代码无关。

2整合框架的Web应用架构

如果以上述任何一个框架技术来实现大中型的Web应用,会存在效率不高,解决问题不彻底等问题,通过以轻量级框架Spring为核心,充分利用Spring框架的开放性、模块化以及对业务对象、事务管理等强大的功能,整合Sturts、Hibernate框架,可以构造出五层Web应用架构,分别为:客户层、Web层、业务层、持久层、企业资源层5个层次。整合框架的Web应用架构如图1所示:

在客户层,通过JSP页面实现交互,负责传送请求(Request)和接受响应(Response)。在Web层,Sturts根据ActionServlet接受到的请求,委派相应的Action。Action对象中的execute方法调用模型中的业务组件,决定“做什么”。在业务层,管理业务组件的SpringIOC容器负责向Action提供业务模型(Mode1)组件,决定“怎么做”和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件提升系统性能和保证数据完整性。业务层通过DAO数据访问对象,向持久层请求数据处理。在持久层,依赖于Hibernate的对象关系映射和对象化的查询语言操作,通过Hibernate的会话,处理DAO组件请求的数据,并返回处理结果。

对照基于EJB的一般WEB应用结构,整合框架的Web应用架构中通过Spring提供的轻量级业务组件的管理和IOC容器,实现了对EJB技术的替代和更好的组件重用性,使业务组件间的协作更加松耦合。同时利用Spirng的开放性、模块化以及对Hibernate良好支持的特点,通过引入专门的O/R映射框架Hibernate实现了对关系数据库的对象化,隐藏了数据库的底层细节,便于开发者以统一的面向对象思想来开发应用。另外通过Sturts的MVC模式,开发清晰明确的业务流程和用户交互,实现表现逻辑和业务逻辑的解耦,摆脱了原有的开发模式带来的高耦合性。通过框架的整合不仅集成了各种框架的优势,同时也构造了层次清晰,结构合理的5层Web应用架构。

3应用实例

3.1项目概述

“宁波市城市公共信息服务平台”是由宁波市信息产业局牵头,以政府投资形式建设的一个公益性地信息服务平台。平台整合本地各类专业的信息服务企业和机构的信息资源,以合作的方式共同打一个宁波市本地的信息资源集聚中心和本地的信息门户,进而既增值开发利用了政府信息资源,也提了信息服务业的核心竞争能力,同时也为社会公众提供了一个权威的、统一的信息渠道,达到了政府、业、公众共赢的局面。

本平台整合了与社会公众有关的衣、食、住、行等政府、企业信息。信息分基本信息和市场商业信息两类。对于基本信息,平台的管理员及加盟企业所有成员都能进行信息的维护和更新,并有专门的信息员进行审核和管理,保持平台基本信息的准确与及时性。对于商业信息,基本上由者负责为原则,平台提供一种免费的平台,同时对这些的信息给予地图定位以及与其它频道信息等关联的增值服务,进一步提升第三方网站的信息价值。根据本平台的用户角色区分,主要有:前端普通用户和后台管理用户。后台管理用户有4种,分别是系统管理员、频道运作单位、加盟企业、信息员,主要负责对信息的采集与。前端用户是指一般的网站浏览用户,前端普通用户可以按分类信息查询,也可以按搜索引擎方式查询,在查到文本信息的同时给出对应的GIS信息,进而可以获得行车路线等有关地图位置信息。另外,如用户根据本平台查到的信息,想进一步进行电子商务操作,如网上购物、电子订票等,本平台可以负责直接转向,起了一个信息门户的作用。

3.3主要实现技术

本平台采用Tomcat5.0作为Web服务器,Struts框架为1.2版本,Spring框架为1.2.5版,Hiber—nate框架为3.0版,根据上述整合框架的Web应用架构来实现平台的结构。

3.3.1视图层页面设计:根据前端用户灵活的信息浏览需求,同时又要适应频道运作单位自己管理频道模块的需求,因此,页面设计改动不能影响到其它业务逻辑。在实现中通过Sturts的自定义标签,结合MVC模式,实现页面与业务逻辑分离,做到JSP页面不包含Java代码。另外,利用JSP技术在显示页面嵌入地图内容,实现图文并茂的显示方式。

3.3.2Web层请求响应控制:通过struts—conifg.xml配置文件把后台用户管理页面或前台用户浏览页面都对应到每个Action,当页面发出请求后,根据struts—config.xml的配置文件中对应的Action部署,由Action对象调用本平台内的业务层组件。如果此时请求的是地图信息那么Action对象中以AP/方式向市规划局的GIS平俞调用地图位置信息,并把结果返回给客户端。如果此时请求是进一步需要第方电子商务服务,那么直接重定向到第方电子商务服务网站。

3.3.3业务对象的IOC方式管理:Web层的Action只是决定“做什么”,并没有实现“怎么做”,具体的业务逻辑由业务层的业务组件来完成。平龠中包括信息查询、会员注册、积分管理等功能模块都需要有一个业务组件来实现该功能。在项目实现中,把每一个业务组件包按接口类和实现类分开编码,当需要互相协作时,在代码层只要直接引用协作对象的接口类就可以了。协作对象的实现类统一南Spring容器根据配置文件的说明进行注入。如:在本项目中,普通会员信息的业务需要信息员审核,审核通过后要把该信息的状态记录到某个频道运作单位下。那就可以分为i个服务组件:信息组件、信息审核组件、信息状态记录组件,在Spring的IOC机制下,利用配置文件和基于接口与实现分离的编码方式可以很好地实现这个组件之间的松耦合协作,减轻了应用对容器的依赖。

3.3.4利用Spring框架实现事务管理及与持久层会话:在本项目中对于会员注册,积分管理等操作需要进行事务管理,同时所有的操作数据保存需要与持久层进行连接,这些都可利用Spring框架本身的功能来实现。如:通过Spring配置文件可以直接实现数据源、会话工厂、事务管理和数据访问对象的配置,数据访问对象根据上述Spring配置可以直接和持久层连接.这样在实现有中不用考虑这些功能的具体实现。Hibernate通过转换工具把各类信息保存表转换成相应的对象文件和.xml映射文件,Spring中的数据访问对象,直接对对象文件进行操作,由Hibernate完成数据的持久化。

4结束语

上一篇:mvc框架范文 下一篇:框架结构范文