admin 管理员组文章数量: 1184232
2024年3月12日发(作者:简要说明ajax框架技术)
维普资讯
2006年第7期 福建 电脑 113
基于Struts和Hibemate技术的网上书店系统的设计和实现
陶琳1张心凯2孟菊2赵雷新
(1.河南工业职业技术学院信息工程系河南南阳473009 2.天津工业大学计算机技术与自动化学院天津300160)
【摘 要】:本文介绍了运用了Struts和Hibemate两个开源框架及它们对MVC设计模式的实现来设计与实现网上书店电
子商务系统.给出了系统的结构、功能以及解决方案的设计,并就其中的关键技术MVC结构设计和Hibernate的运用进行分
析。给出了解决方案,并且就开发过程中的几个重要问题进行了详细说明。
【关键宇】:Strum;MVC;Hibernate;网上书店
4.基于的struts和Hibemate解决方案设计
本系统采用struts+Hibernate来实现,struts是基于J2EE的
2l世纪是网络时代,网络技术的飞速发展,极大地影响了商
它继承了MVC的各项特性.并且根据
业交易中传统的交易方式和流通方式。利用电子商务的优势同
Web形式MVC模式实现。
做了相应的变化和扩展。
现有销售模式和流通渠道相结合。扩大消费市场,为书店的再发
J2EE的特点.
1.弓l育
Hibemate是一个对象持久化工具,它通过其强大的O/R映
a a对象同存放于关系数据库中的数据进行映射,避
采用Java的Struts框架和Hibernate技术来开发本网上书店系
射功能将J
DBC的方式对数据库
统。充分利用MVC一模型(mode1)、视图(view)、控制器(controller)
免了开发人员使用大量的SQL语句通过J
可以有效地提高开发的效率。
三者之问的分离达到层间的松散耦合以实现代码重用和易于修
进行操作.
在本系统开发中,首先,用JSP技术结合Struts强大的
改。提高系统的灵活性、复用性和可维护性,达到提高软件质量的
C,Ub来实现表示层这些通常是使用了标记(ta曲的JSP页面:业
目的.利用Hibemate对JDBC进行了轻量级的对象封装,使得开
T ̄
发人员可以使用面向对象编程思维来操作关系数据库。而且管
务层由Struts的控制组件ActionServlet、Action-Mapping及
理人员通过后台管理能及时地发布新的书讯动态。加强了书店
Ac n和业务逻辑类JavaBean来实现:这些JavaBean里封装了
与Hibernate的交互关系业务层通过数据转换和访问层来实现
与消费者之问的联系。取得了显著的效果。
与数据库资源的交流:这一部分工作由Hibernate来做。我们在
2.系统结构模型
业务逻辑类里直接对对象进行操作,Hibernate将在java类里使
本系统是基于Intemet的结构.采用如
用的HQL语句转换为sQL语句,利用JDBC驱动进而操作数据
图l所示的三层架构模型。第一层采用浏览
源。完成数据的增、删、改等,最低层是关系数据库。
器.操作者通过界面向web提交服务请求。第
详细说来.来自客户端的bttp请求送到Struts框架中的控制
二层的web服务器专门用来进行请求中的
Hibcmat ̄
器Acti0nServlet等候处理ActionServlet包括一组基于配置的
逻辑处理.根据请求通过H/bemate与第三层
Web服务嚣
Acti0nMapping对象.每个ActionMapping对象实现了一个请求到
的数据库服务器进行数据交易.然后返回浏
】IP恤Ⅲl
个具体的Model部分中Action处理器对象之问的映射,
览者所需要的结果.显示在第一层的浏览器
AztioaStm:t ̄Javdk ̄
ActionServlet接受客户端的请求,并将请求交RequestProcessor
界面上.从而达到远程操作的目的。采用这样
来处理.RequestProcessor根据请求的URL从ActionMapping中
的架构改进了传统Client/Server结构的缺
Internet
+
得到相应的Acti0n并根据请求的参数实例化相应的
点。除降低了Client端程序逻辑的复杂度,更
ActionForm.再进行form验证验证通过则调用Action的Execute
减轻了后端数据库存取的负载.也平衡了整
方法:在方法体内.调用业务逻辑模块.由Hibernate在“幕后”完
个网络流量。
图1系统架构
成与数据库的交互:即业务逻辑类里通过HQL语句操作业务对
3.系统功能设计
Hibemate把HQL转换为sQI’通过0/R映射文件实现具体
系统的权限有两种:普通浏览者和系统管理员。以这两种不
象:
即穿过持久层映射到具体的数据库表。Execute
同的身份登录后系统给出的界面和功能不同。系统管理员拥有
对数据源的操作.
方法执行后须返回ActionForwant。ActionServlet接受Execute方
所有普通浏览者所能操作的功能。
法返Acti0nForward对象.转发到AcrionForward指定的JSP。
(11普通浏览者登录系统
展带来新的商机。也为各地消费者提供便利,而且降低商业成本。
一
[二口
①查看商品列表。可以查看到按时间先后列出的书籍的目
5.系统的买现
录。书籍的名字可以链接到本书籍的详细信息。在本功能网页的
最下面也有书籍的分类目录。可以点击关心的书籍分类,得到所
(1)模型的实现(hI)
本系统中编写了大量的JavaBean来提供所需要的业务逻
avaBean可以分为两类,一类是用于存储值对象的
有本类的书籍列表。②查询书籍。这是对于浏览者最有用的一个
辑。这些J
avaBean来为I-Iibemate持久化对象
功能.浏览者可以根据书名、作者、出版社等信息进行相关书籍
Be蚰以及对应数据库表的J
例如,存储用户信. ̄(user_info),存储图书分类的信息
的模糊查询,得到想要查找的书籍的详细信息,确定是否购买。③
提供服务。
book_catalog),存储书的详细信息(book_info)
查看新货。进入该网页可以看到最近发布的十本新书。④查看特
(
例如存储用户信息的Bean.对应着数据库表Userinfo(ID,
价商品。⑤登记缺货。读者如发现该书店的库存没有所想要的书
emame,Password,Country,Email,Re#st_date),其对应Bean就
籍.可以在这个功能网页中登记所想要的缺货书籍,以便书店管
U ̄
 ̄malne,password,country.email,reg t_date这五个属
理者尽快的补充货源。⑥采购书籍。读者可将自己满意的书籍放
应该具有us
et方法。将二者关联的映射文件为
人购物车,购物车会给出采购书籍的清单,读者停止购物以后填
性及其 t和s
写购物订单.写好自己的邮购地址和名字等详细信息。
(21系统管理员登录系统
<hibernate-mapping>
<class llame-¨corn.bookshop.user.hibernate.User_info"table=。User info“>
除拥有以上所有功能外。还有:①查看用户列表。②查看缺
货。可看到所有读者登记的缺货信息,及时反馈给书店的管理人
<id column=…id lensth=。22”IIa目De=”id。typIe=。Ions">
<generator cl∞8=” ̄[UeltOe。>
<pamm name=。 ̄[UeltOe。>SEQ_CUSTOMEB,.INFO..DETAH ̄</psmm>
</senerator>
员.补充货源。③发布新书。④发布特价书籍。⑤处理订单。
维普资讯
114
</id>
福 建 电脑 2006年第7期
actionMapping.ifndForward0来定位到JSP显示页面。
6、系统开发中几个主要问题的解决方案
<property column=”usenlsme“length=…20 itsine ̄”usernaln ̄“typefif“string”
<property column=”paaaword”length=”10“nM1e=“password”typefif”string”,)
<property columnfif。COuntry”length=”10”n&nle=”country”type=”string”,)
<property column=。email”length=…50 n&nle=。email”type=”string”,>
<property columnfif”Re.gist
date”na e=”Re ̄st_date”type ̄”Date”『)
_
(1)使用数据库连接池技术,来提高系统性能
由于本系统访问的用户较多.如果一个用户需要访问数据
库的时候就新创建一个连接。用完就关闭它,这样就会对系统带
</class>
</hibernate-mapping>
另一类是处理业务逻辑的动作类.例如用户登陆系统验证
身份和合法性的时候调用check
user(String us,ername,Sting
—
password)这个bean.
Conifguration config new ConfigurationO.configureO; .
SessionFactory sessionFactory config.buildSessionFactory0;
Session session=sessionFactory.openSession0;
String hql=”from userinfo where name--”admin”;
_
List userList=session。find(hq ̄;
Iterator iter=userList.i ̄mtor0;
If(iter.next0)
l
Boolean lfag=List.get(“password”、.equals(password);
l
eturn rlafg;
此外还有显示时问、显示表头、等许多JavaBean,构成整个
系统的功能和应用逻辑型.Actionservlet可以直接向模型发出请
求,一些逻辑请求经过处理后返回JSP.可以实现代码的重复利
来明显的性能上的开销.造成系统系统性能上的下降。所以本系
统采用连接池技术来对数据库的连接进行创建,释放和管理。首
先.先创建一定数量的连接,当用户需要对数据库进行访问的时
候从连接池内取出一个空闲连接。并且连接的引用数加1,若连
接池中没有空闲连接.查看当前所开的连接数是不是已经到达
最大连接数maxConnNum.如果没到达就重新创建一个连接给
请求的客户:如果到达就按设定的最大等待maxWaitTime(单位
ms1进行等待,如果等待maxWait Fime后仍没有空闲连接,就抛
出无空闲连接的例外给用户。当客户释放数据库连接时.先判断
该连接的引用次数是否超过了规定值.如果超过就删除该连接,
并判断当前连接池内总的连接数是否小于minCormNum.若小于
就将连接池充满;如果没超过就将该连接标记为开放状态,可供
再次复用。这样就保证了数据库连接的有效复用。
(2)通过在页面中添加隐藏的参数来保持Sesion
在服务器端的WEB容器.一个会话的多个WEB请求可以
通过会话的属性来共享信息.但是由于Sesion有其生存的期
限.如果超过了这一期限。se8sion就会丢失。假如当消费者将选
购好的书放人购物车后.由于某种原因没有提交这个请求,而是
而这时Session已经断开,消费者就
用,大大地简化了代码.且易维护。在对一些功能作改动时只需要
过了一段时间以后再提交.
在这个提交请求的
改动JavaBean.不需要改动所有设计到此功能的ActionServlet或
不得不重新选购。为了防止这一现象的出现.
页面将提交的参数封装隐藏在该页中.消费者提交这个页面时
JSP。
首先判断Sesion是否断开,如果断开词用Re 面n函数将刚刚
(2】视图的实现m
界面采用Applet+Ⅲ L+JSP结合Struts的TagLib设计完
成,在Dresmweaver中设计出静态页面.然后根据动态显现的需
要,插入JSP语句和Applet。有些特殊的效果要求需要在HTML
中插入JavaScript脚本语言来得到。如弹出要求大小的窗口。提交
时检验填写信息是否正确等。在JSP中基本没有什么逻辑代码.
只是负责将Servlet返回的结果显示出来。例如发布新书页面.在
Post.isp中,只是显示提交表单,没有任何处理逻辑,提交后交给
PostAction。处理后返回提交成功页面。
些地方为了更方便更直观地让用户达成操作而且做到美
观大方,采用Applet。如在分类查看中,书籍的分类分为若干个等
级,为方便用户查看,采用Applet中的J e来表示。用户在任一
一
封装在该页的隐藏参数重新提交。
7.总结
采用Struts和Hiberrmte在J2EE架构便于实现系统的大规
模开发和管理,层次之问松散耦合,在开发过程中,层与层之问的
工作几乎是完全独立的。而不同的业务逻辑基于模块进行开发,
所以便于团队开发利于系统业务的重用和改动。基于这种架构
的Web应用是基于模块的,表示层和业务逻辑分离.所以不至于
“牵一发而动全身”.这样也便于业务逻辑的重用。
目前该系统已经完成。在多个用户接人的情况下运转良好。
能够及时响应用户的要求.达到了预期的效果。
参考文献:
级的节点选择以后进行提交.经过查询就会返回用户想要的结
Hibernate在Struts中的研究和应用计算机工程.2004
果。JTree的生成是在页面被调用时,Applet词用它的TreeAcfion.
1.花兴健.徐良贤.
.30 No.zl
TreeAction从数据库的分类表中读取数据.然后用流输出给
Vo1
利用Hibernate对象持久化服务简化Java数据库访问.
Applet,Applet读取流中的数据,用递归算法得到书籍分类树。树
2.宋汉增.沈琳.
的每一个节点都对应一个分类值,读者选择节点提交后。Applet
计算机应用.2003 VoI.23 No.12
向QueryTreeAction传递该类的值.QueryTreeAction根据这个值
Vo1.29 No.22
将查询出的结果传送给相应JSP显示出来。
4.1ovthafew Hibernate[EB/OL].http:llfreshmeat.net/projects/hibemate.
(3)控制器的实现fc1
2oo3.02-24.
由Java erSvlet来实现,它负责视图和模型之间的交互 控制
5.Project:H emate [EB/OL].http://sourceforge.net/projects/hibernate.
器的每个人口点都由名为struts-config.xml的配置文件设置
2oo3-03-01.
Struts的中心控制器接受所有来自客户端的请求.并根据系统的
6.1rI Struts User S Guide[EB/OL].http://Jakarta.apache.org
配置(stmt8一co血g.xm1)路由H 兀P请求到其它Action对象.最后
3.田珂,谢世波,方马.T2EE数据持久屡的解决方案.计算机工程.2003
(上接第171页)
将对sigalarm函数的影响减少到了t//,。
参考书目:
1.(Linux操作系统内棱分析)陈莉君壕著
年3月版
月
1999年12月 ‘
4.(MySQL网络数据库指南)PaulDuBios著 机械工业出版社20OO
人民邮电出版社2000
年6月
5.<使用UNIX壕程) KayA.Robbim等著机械工业出版社1999年
2.(Linux壕程白皮书)David A.Ruding著机械工业出版社2000年4
10月
6.(UN[X网络壕租(第一.‘))W.Richard Srzvcm暑
机械工业出版社
1999年7月
清华大学出.簟社
3.(Linux系统分析与高扳壕租技术)周巍松壕著
版权声明:本文标题:基于Struts和Hibernate技术的网上书店系统的设计和实现 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710218062a562983.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论