admin 管理员组

文章数量: 1184232


2024年3月28日发(作者:坚定不移推动构建hyruxz共同体)

S0FrWARE DEVEL0PMENT AND DESIGN 软件开发与设计 

Struts+Spring+Hibernate框架的开发 

嵇可可 

(江苏食品职业技术学院计算机应用技术系,淮安223003) 

摘要:Struts+Spring+Hibernate组成了一个功能强大的应用开发平台,在此介绍了它们的组成、特点及功能。 

关键词:框架;Java;Struts;Spring;Hibernate 

The Development of Struts+Spring+Hibernate F ̄mework 

JI Xd∞ 

(department of computer technology application,Jiangsu food science college,Huai an 223003) 

Abstract:Struts+Spring+Hibernate composes of a powerful application development platform,this article describes their 

composition,characteristics and functions. 

Key words:Framework;Java;Struts;Spring Hibernate 

经过数年的“框架大战”,Java界的各种框架找到了自己 

应有的位置。Stutrs+Spring+Hiberuate已成为Java开发的主流 

abean封装,业务逻辑一般要访问数据库。 

体系。考虑到应用的特点,我们选用Spring作为基础架构, 

通过Spring IOC容器提供基础服务,并整合Web框架Struts 

和持久层框架Hibernate,组成一个功能强大的应用开发平台。 

该开发平台具有通用性,可以广泛应用于应用系统的开发中, 

利于开发高质量的系统。基于Stutrs、Spring和Hibernate框架 

构建的Web系统架构如图1所示。 

图2 Struts处理流程图 

(3)业务逻辑返回后,Action Class根据处理结果决定跳 

转到哪个Jsp页面,Action Class中只需指定Jsp逻辑上的名 

称,逻辑名称和实际名称的对应关系在配置中配置,这样在 

需要改变控制流程时,只需改变配置即可。 

(4)Jsp页面显示业务处理结果的过程中可以读取action— 

formo 

图1基于Stutrs、Spring和Hibernate框架构建的Web系统架构 

(5)Jsp生成动态页面返回至浏览器。 

从上述处理流程可以看到,系统利用Stutrs有效地实现了 

页面逻辑和业务逻辑的分离,页面逻辑主要由Action Class和 

Jsp处理,而业务逻辑全部封装在Ejb中。通过配置文件可以 

灵活配置页面跳转流程,使得业务逻辑和页面逻辑的耦合更 

加松散。一方面增加了系统的灵活性,另一方面可以安排页 

面制作人员和后台业务逻辑开发人员同时开展工作,使得整 

个开发过程更加有效。 

l Struts框架 

采用Struts作为MVC的Web框架,Stutrs是目前最成熟 

的的MVC Web框架,提供了对开发MVC系统的底层支持, 

它采用的主要技术是Servlet,JSP和custom tag library。Stutrs 

帮助开发人员利用Servlet和JSP技术快速构建Web应用㈣, 

Struts向开发人员提供了统一的体系结构,在此基础上开发人 

员可以集中精力关注具体的业务逻辑的实现,而不必顾虑体 

系结构的问题,从而提高开发效率和开发质量。 

2 Spring框架 

Spring是一个基于J2EE平台的分层的应用程序框架,为 Struts处理流程如图2所示。 

(1)浏览器通过Http协议发送业务请求,请求首先被 

Stutrs中的ActionServlet捕获。 

企业级应用提供了一个轻量级的解决方案,这个方案包括声 

明式事务管理、通过RMI或WebService远程访问业务逻辑、 

(2)ActionServlet根据配置信息把业务请求数据填充至 

mail支持工具以及对于数据持久层的各种配置的支持。Spring 

还提供了一个MVC应用框架,Spring还可以通过集成AOP透 

明地嵌入软件,同时Spring包含一个优秀的异常处理体系, 

ActionForm,并把ActionForm作为参数执行相应的Action 

Class、Action Class调用业务逻辑,业务逻辑由Ejb或者jav一 

本文收稿日期:2009—12—10 

这个异常体系可以自动从属性异常体系进行映射。 

17— 

电脑编程技巧与维护 

Spring框架可以成为企业级应用程序一站式的解决方案, 

同时它也是模块化的框架,允许开发人员使用其中一部分的 

了处理多部分请求以及将请求参数绑定到域对象的工作。 

(7)Spring MVC框架:MVC框架是一个全功能的构建 

模块进行开发。比如,开发者可以使用容器与分层的框架进 

行工作,也可以只使用集成框架或抽象层进行工作。Spring框 

架是一个松耦合的框架,Spring框架的各部分耦合度被设计为 

最小,在各个层次上具体选用哪个框架取决于开发者的需要。 

Spring框架是一个分层架构,由7个定义良好的模块组 

成。Spring模块构建在核心容器之上,核心容器定义了创建、 

配置和管理bean的方式,如图3所示。 

图3 Spring框架的7个模块 

组成Spring框架的每个模块(或组件)都可以单独存在, 

或者与其他一个或多个模块联合实现。每个模块的功能如下: 

(1)核心容器:核心容器提供Spring框架的基本功能。 

核心容器的主要组件是BeanFactory,它是工厂模式的实现。 

BeanFactory使用控制反转(IOC)模式将应用程序的配置和 

依赖性规范与实际的应用程序代码分开。 

(2)Spring上下文:Spring上下文是一个配置文件,向 

Spring框架提供上下文信息。Spring上下文包括企业服务,例 

如JNDI、EJB、电子邮件、国际化、校验和调度功能。 

(3)Spring AOP:通过配置管理特性,Spring AOP模块直 

接将面向方面的编程功能集成到了Spring框架中。所以,可 

以很容易地使Spring框架管理的任何对象支持AOP。Spring 

AOP模块为基于Spring的应用程序中的对象提供了事务管理 

服务。通过使用S两ng AOP,不用依赖EJB组件,就可以将 

声明性事务管理集成到应用程序中。 

(4)Spring DAO:JDBC DAO抽象层提供了有意义的异 

常层次结构,可用该结构来管理异常处理和不同数据库供应 

商抛出的错误消息。异常层次结构简化了错误处理,并且极 

大地降低了需要编写的异常代码数量(例如打开和关闭连 

接)。Spring DAO的面向JDBC的异常遵从通用的DAO异常 

层次结构。 

(5)Spring ORM:Spring框架插入了若干个ORM框架, 

从而提供了ORM的对象关系工具,其中包括JDO、Hibernate 

和iBatis SQL Map。所有这些都遵从Spring的通用事务和DAO 

异常层次结构。 

(6)Spring Web模块:Web上下文模块建立在应用程序 

上下文模块之上,为基于Web的应用程序提供了上下文。所 

以,Spring框架支持与Jakarta Struts的集成。Web模块还简化 

18一 

Web应用程序的MVC实现。通过策略接口,MVC框架变成为 

高度可配置的,MVC容纳了大量视图技术,其中包括JSP、 

Velocity、Tiles、iText和POI。 

Spring框架的功能可以用在任何J2EE服务器中,大多数 

功能也适用于不受管理的环境。Spring的核心要点是:支持不 

绑定到特定J2EE服务的可重用业务和数据访问对象。毫无疑 

问,这样的对象可以在不同J2EE环境(Web或EJB)、独立 

应用程序、测试环境之间重用。 

3 Hibernate框架 

Hibernate是一种比较新的O/R映射框架,它帮助基于普 

通的Java对象模型的持久对象的创建,从而允许持久对象拥 

有复杂的结构如混合类型、集合和属性,还可以拥有用户自 

定义的类型,使得这些持久对象可以有效地反映出底层数据 

库模式的复杂结构。Hibernate依赖“运行期反射”在运行期 

收集关于对象和它们相应的数据库映射的信息,这就废除了 

持久层内对象数据库映射的硬编码[121。这样,Hibernate使得 

持久层以该层代码的最小修改就能适应底层数据库模式的任 

何未知变化。反射是核心Java的一个特征,它促使Java代码 

发现关于所装载的类的域、方法和构造器。反射允许使用反 

射的域、方法和构造器,在安全限制内,运行对象上的底层 

配对物。为了提高效率,Hibernate还包括了一些策略,如与 

数据库交互时的多重最优化,包括对象的缓存、有效外部连 

接的获取、必要时SQL语句的执行等。通过以上的优化策略 

采用Hibernate的过程开销一般比JDBC少10%。 

图4展示了Hibernate的工作原理,从该图中很清楚地了 

解到Hibernate框架是在物理数据库之上利用一些配置文件如 

hibemate.properties(现在改变为hibernate.cfg.xml文件)、XML 

Mapping(映射文件)等来为应用系统提供数据持久化方面的 

服务,同时达到将应用系统的持久层与不同的物理数据库系 

统相互隔离开的目的。 

图4 Hibernate框架的工作原理图 

Hibernate具有很大的灵活性,但同时它的体系结构比较 

复杂,提供了好几种不同的运行方式。在轻型体系中,应用 

程序提供JDBC连接,并且自行管理事务,这种方式使用了 

Hibemate的一个最小子集;在全面解决体系中,对于应用程 

序来说,所有底层的JDBC/JTA API都被抽象了,Hibernat会 

(下转到88页) 

电脑编程技巧与维护 

DINFO

_

UPDATE 0; da.Fill(dset); 

} 

foreach(DataRow drow in dset.Tables【0】.Rows) 

5代码 

{ 

SqlCommand cmd=new SqlCommand r”update 

private static void DINFO

_

INSERT 0 

【 

DSend set review=1 where rid=”+drow【2】); 

SqlConnection con=new SqlConnection r”context con— 

cmd.CommandType=CommandType.Text; 

nection=true”); 

cmd.Connection=con; 

con.Open 0; 

cmd.ExecuteNonQuery(); 

cmd.Dispose 0; 

SqlDataAdapter da=new SqlDataAdapter(”select did, 

SqlCommand cmd=new SqlCommand f”update 

sid,rid from inserted”,con); 

DRece set review=1 where rid=”+drow【21); 

DataSet dset=new DataSet 0: 

cmd.CommandType=CommandType.Text; 

da.Fill(dset); 

cmd.Connection=con; 

foreach(DataRow drow in dset.Tables[0】.Rows) 

cmd.ExecuteNonQuery 0; 

{ 

cmd.Dispose 0; 

SqlCommand cmd=new SqlCommand f”insert into 

) 

DSend(sid,did,review)value(”+drow【l】+”,”十drow 

dset.Dispose 0; 

【0】+”,0)”); 

da.Dispose(); 

cmd.CommandType=CommandType.Text; 

} 

cmd.Connection=con; 

) 

cmd.ExecuteNonQuery 0; 

6结语 

cmd.Dispose 0; 

综上所述,SQL触发器可以在开发过程中起到重要作用, 

SqlCommand cmd=new SqlCommand r”insert into 

为提高数据库查询效率提供帮助。但在实际应用中也应注意 

DRece(rid,did,review)value(”+drow[2]+”,”+drow 

到不能滥用触发器,因为那样会造成数据库和应用程序维护 

【o】+”,O)”); 

cmd.CommandType=CommandType.Text; 

困难。在实际应用,应该使用诸如关系、触发器、存储过程、 

cmd.Connection=con; 

应用程序等多种手段结合来进行数据库操作,因篇幅有限无 

cmd.ExecuteNonQuery 0; 

法在此讨论。 

cmd.Dispose(); 

本程序在Windows XP、VS 2005、SQL Server 2005中调 

) 

试通过。 

dset.Dispose 0; 

da.Dispose(); 

) 

参考文献 

【1】赵辉,陆冷飞.SQL Server触发器在保持数据库完整性中 

private s ̄tic void DINFO

_

UPDATE 0 

的应用,电脑开发与应用,2007. 

{ 

【2]张丹.SQL Server中存储过程与触发器技术的研究与应用, 

if(SqlContext.TriggerContext.IsUpdatedColumn(4)) 

科技创新导报,2008. 

{ 

SqlConnection con=new SqlConnection(”context 

『31 MSDN. 

connection=true”): 

con.Open 0; 

作者简介 

SqlDataAdapter da=new SqlDataAdapter r”select 

张铭铎,男(1984一),湛江师范学院助理实验师,现正在职 

idd,sid,rid from inserted”,con); 

攻读重庆大学计算机学院计算机专业工程硕士学位,研究方 

DataSet dset=new DataSet 0: 

向:计算机技术领域专业。 

(上接第18页) 

照管所有的细节。 

[3]孙卫琴.精通Struts: ̄MVC的Java Web设计与开发 

参考文献 

[M】.北京:电子工业出版社,2004. 

[1】闫宏.Java与模式[M】.北京:电子工业出版社,2002. 

【2】曹晓钢.Hibernate2.1参考手册[EB/OL].http://www.matrix. 

作者简介 

org.cn/downview.asp?id=449. 

嵇可可,女(1971一),讲师顾士,研究方向:计算机应用。 

_

88一 


本文标签: 框架 业务 应用 逻辑 开发