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一
版权声明:本文标题:Struts+Spring+Hibernate框架的开发 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1711610161a602195.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论