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系统分析与高扳壕租技术)周巍松壕著 


本文标签: 系统 连接 书籍