软件工程硕士学位论文-电子产品自动搜索比价系统设计与实现.pdf_第1页
软件工程硕士学位论文-电子产品自动搜索比价系统设计与实现.pdf_第2页
软件工程硕士学位论文-电子产品自动搜索比价系统设计与实现.pdf_第3页
软件工程硕士学位论文-电子产品自动搜索比价系统设计与实现.pdf_第4页
软件工程硕士学位论文-电子产品自动搜索比价系统设计与实现.pdf_第5页
免费预览已结束,剩余55页可下载查看

软件工程硕士学位论文-电子产品自动搜索比价系统设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

山东大学 硕士学位论文 电子产品自动搜索比价系统设计与实现 姓名:祁良武 申请学位级别:硕士 专业:软件工程 指导教师:李学庆 20091010 山东大学硕士学位论文 摘要 i n t e r n e t 的迅猛发展将人类带入了信息社会和网络经济时代,对企业发展和 个人生活都产生了深刻的影响。随着i n t e r n e t 的广泛应用,消费者不再受物理空 间的约束,并且能通过搜索引擎或者直接访问购物网站获得尽可能多的商品信息, 同时网络产品种类的多样性、网络上商品价格的低廉、网络购物的便利性使得越 来越多的消费者利用因特网在电子商务购物平台上进行购物。网上购物,在为消 费者节省成本的同时,也给消费者带来了新的“成本花费大量的时间浏览 大量的网站,学习怎样提交查询和管理自己的订单。 另外,每个网站都含有大量的不同种类的商品,用户要选购商品就不得不在 大量网站内进行复杂的搜索,比较每种商品的报价、折扣和其它优惠措施。因此, 用户很希望电子商务系统具有这样一种功能来帮助他们完成对商品的选购,这种 功能可以发现大量网络上的购物网站,帮助用户获取大量的商品信息以选购商品。 正是在以上背景下,本文提出了“电子产品自动搜索比价系统”的研发工作。 论文首先对系统研究的背景和意义进行了论述,然后基于以上的实际情况, 本文对系统进行了详尽的需求分析,给出了系统的基本功能和性能上的要求;接 着对系统进行了初步的架构设计,陈述了系统的体系架构以及服务器端和移动设 备终端各自的功能模块设计,并给出了系统总的工作流程。 在以上需求分析和架构设计的基础上,针对系统实现的目标,本文给出了系 统数据库的设计方案,列举出系统设计的数据表和表之间的联系,进而详细介绍 了系统的详细设计和实现的思路和过程,包括系统所采用开发技术、系统各模块 的实现过程以及后台数据的抓取方法,并对系统实现的个别特色功能进行了简单 介绍。 最后,论文给出了系统的总结,对当前已完成的工作和系统存在的有待完善 之处进行了阐述。 综上所述,我们在充分进行需求分析的基础上,基于j a v a e e 技术和r u b y 技 术设计并实现了“电子产品自动搜索比价系统“ 。 关键字: 信息检索;w e b 信息抽取;j a v a e er u b y ;电子产品 山东大学硕士学位论文 a b s t r a c t t h eb r i s kd e v e l o p m e n to fi n t e r a c th a sb r o u g h th u m a nt ot h ei n f o r m a t i o na n dw e b e c o n o m i ca g e ,w h i c hm a k e sad i f f e r e n c ei n t ot h ed e v e l o p m e n to fe n t e r p r i s e sa n d h u m a n se v e r y d a yl i f e a sw i d ea p p l i c a t i o no fi n t e r n e t ,c o n s u m e ri s1 1 0 l o n g e r c o n s t r a i n e dt ot h ep h y s i c a ls p a c e ,b u tt h e yc a ng e tm o r ei n f o r m a t i o na b o u tp r o d u c t s t h r o u g hs e a r c he n g i n eo rv i s i t i n gw e b s i t ed i r e c t l y m e a n w h i l e ,m o r ea n dm o r e c o n s u m e r sb u ym e r c h a n d i s e sb yw a yo fe - s h o p p i n gp l a t f o r mo ni n t e r n e t ,b e c a u s eo f v a r i e t y , l o wc o s ta n dc o n v e n i e n c eo fe - s h o p p i n gp r o d u c t s s h o p p i n go n l i n ec a ns a v e c u s t o m e r s m o n e yb u tb r i n ga n o t h e rn e w c o s t “ - t h em u c ht i m es p e n d i n gi nb r o w s i n g t h ew e b s i t e s ,a n dl e a r n i n gh o wt os u b m i ta n dm a n a g eo r d e r s o t h e r w i s e ,t h e r ea r em a n yp r o d u c t so fd i f f e r e n tk i n d si ne a c hw e b s i t e s ot h e c o n s u m e rh a st od om a n yq u e r i e st oc o m p a r ep r o d u c t si nt h e i rq u o t a , d i s c o u n ta n do t h e r p r i v i l e g e s s o ,t h eu s e r sw i s ht h a tt h ee - c o m m e r c es y s t e mc a np o s s e s saf u n c t i o nt oh e l p t h e mi nc h o o s i n gt h ep r o d u c t s ,w h i c hc o u l db ef o u n di nm a n ys h o p p i n gp l a t f o r m b a s e d o nt h er i g h tb a c k g r o u n d ,t h i sp a p e rp r o p o s e st h ea u t o s e a r c ha n dc o m p a r i s o ns y s t e m f o re p r o d u c t s t h ep a p e rf i r s t l yd i s c u s s e st h eb a c k g r o u n da n ds i g n i f i c a n c eo ft h i sw o r k t h e n b a s e do nt h ea b o v ea c t u a l i t y , t h i sp a p e ra n a l y s e st h er e q u i r e m e n t si nd e t a i l ,a n dg a i n s t h er e q u i r e m e n to ft h i ss y s t e m ;f u r t h e r m o r e ,c o n s t r u c t st h es y n o p t i cf r a m e w o r k ,s t a t e s t h ea r c h i t e c t u r eo ft h es y s t e m ,a n dt h ed e s i g no fr e s p e c t i v ef u n c t i o nm o d u l eo ns e r v e r a n dm o b i l et e r m i n a le q u i p m e n t , a n dp r o p o s e st h ew h o l ep r o c e s so ft h es y s t e m b a s e do nt h ea b o v em e n t i o n , a c c o r d i n gt ot h ea i m ,t h ep a p e rp u t sf o r w a r d st h e d e s i g no fd a t a b a s e ,w h i c he n u m e r a t e st h er e l a t i o n s h i p sa m o n gt a b l e s ,a n da l s od i l a t e so n t h ed e t a i l e dd e s i g na n dt h ei m p l e m e n t a t i o n ,i n c l u d i n gt h ed e v e l o pm e t h o d ,t h e i m p l e m e n t a t i o no ff u n c t i o nm o d u l e s ,t h em e t h o do fg r a b b i n gd a t a , a n dg i v e sa no u t l i n e o fs p e c i a l t yf u n c t i o nm o d u l e i i a tl a s t ,t h ep a p e rc o n c l u d e st h ef i n i s h e dw o r ka n ds o m es h o r t c o m i n gn e e d i n gt o 山东大学硕士学位论文 i ns u m m a r y , t h i sp a p e ru s e st h ej a v a e ea n dr u b yt e c h n o l o g yt od e s i g na n d i m p l e m e n t sa u t o - s e a r c ha n dc o m p a r i s o ns y s t e mf o re - p r o d u c t s ,b a s e do na d e q u a t e r e q u i r e m e n ta n a l y s i s k e y w o r d s :i n f o r m a t i o nr e t r i e v a l ;w e b i n f o r m a t i o ne x t r a c t i o n ;j a v a e e r u b y ; e - p r o d u c t s i i i 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不 包含任何其他个人或集体己经发表或撰写过的科研成果。对本文的研 究作出重要贡献的个人和集体,均已在文中以明确方式标明。本声明 的法律责任由本人承担。 论文作者签名:他 日期: 关于学位论文使用授权的声明 本人完全了解山东大学有关保留、使用学位论文的规定,同意学 校保留或向国家有关部门或机构送交论文的复印件和电子版,允许论 文被查阅和借阅;本人授权山东大学可以将本学位论文的全部或部分 内容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段 :诬翩签名岔络期:型 山东大学硕士学位论文 1 1 项目研究背景 第1 章绪论 随着经济的飞速发展,人们对物质生活水平的要求有了较大的提高,而在这 其中,人们对电子产品的需求所占比重尤为重大。 随着数码相机的诞生,傻瓜相机便消无踪影;伴着m p 3 、m p 4 的到来,随身听 等等设备便淡出了我们的生活。音乐手机、3 g 手机、无线笔记本、超薄笔记本 所有这些都如潮水般的涌来。商家怎样能在这潮水中淘金,网站怎样能在潮流中 盈利,而消费者们怎样能在潮水中淘到自己的宝贝,这正是本文所考虑的问题。 现在流行的购物网站大多数都是以销售自己网站的产品为主的、专有型购物 网站( 如淘宝网) ,而缺乏与其他购物网站对比来显示自己网站优势的功能。这样 的网站有很多的局限性。网站的知名度会影响网站的访问量,例如知名度低的网 站,用户有可能不会去访问,或者根本就不知道这些网站的存在,这就会使这些 购物网站上店家的商品资源得不到有效的利用。 1 2 实现本系统的主要意义 基于j 2 e e 的电子产品( 手机产品) 自动搜索比价系统( 下文以e s e a r c h 来说 明) ,具有较全面的产品信息数据库,能够很好的满足公众对手机信息的查询和手 机价格比较的需求,也为购物网站( 如淘宝网站) 提供了一个网上吸收更多客源 的平台,更为店家( 如淘宝网站开店的商家) 带了更多的购买者。因此电子产品 搜索并带有价格比较的系统具有很大的商业价值,研究并开发实现结合j 2 e e 等相 关技术的电子产品搜索比价系统十分必要。 此外本系统对购物网站与购物网站之间的商品对比提供了比较的平台,并在 技术上解决了对采取数据保护策略的购物网站的产品信息如何c r a w l 的问题。克 服了部分传统比较网站的数据量小,数据不真实的缺点。无论是购物网站,还是 购物网站上的店家、店家出售的商品,都可以通过用户的访问本系统得到广大的 推广。当购物网站上的店家发布新电子产品或者更新电子产品的价格时,通过 山东大学硕士学位论文 r u b y + w a t i r 的支持,我们将获得电子产品的最新信息供用户查询、比较。 1 3 与本课题相关的主要研究工作 国外对d e e pw e b 的研究相比国内的研究开展的要早,取得的研究成果也比国 内多很多。对d e e pw e b 的搜索目前还停留在分类目录检索的阶段,大部分是手工 整理或半自动化处理,自动化的检索系统或搜索引擎离实际应用还有一段距离 h 2 1 。相应的国外对d e e pw e b 进行搜索的相关产品较多,例如d e e p w e b 、 i n v i s i b l e w e b 、b r i g h t p l a n e t 等公司的相关产品。 新加坡南洋科技大学的d e n i ss h e s t a k o v 、s o u r a vs b h o w m i c k 和e e p e n gl i m 共同开发了一个叫“d e q u e ”的系统强儿引,他们提出了一个表示和存储查询接口的 数据模型,同时提出了一种叫做“d e q u e l ”的查询接口语言从d e e pw e b 中查询数 据并且按照传统数据处理的格式存储数据。这个系统能够利用来自关系和查询结 果页面的输入值处理单个和连续的查询接口。他们提出了一种模型化连续查询接 口的新方法和父查询接口( s u p e rf o r m ) 的概念。 斯坦福大学的l u i sg r a v a n o 和哥伦比亚大学的g i o t i sg i p e i r o t i s 开发了 o p r o b e r 系统,这个系统能够通过文档分类器产生的查询探测器自动的进行分类过 程,q p r o b e r 系统可以利用各种文档分类器生成查询探测器。q p r o b e r 系统不需要 检索和检查数据库里面的文档,而是根据查询探测器返回的匹配数来进行数据库 的分类7 1 引。 宾厄姆顿大学的q i a np e n g 、w e i y im e n g 、h a lh e 和芝加哥伊利诺斯州大学 的c l e m e n ty u 开发的w i s e 系统是一个电子商务搜索引擎的原搜索引擎。w i s e 系 统根据电子商务搜索引擎查询接口的可利用特征进行电子商务搜索引擎的分类, 例如利用链接数目、图片数目、出现在查询接口中的术语和格式化的价格术语等 等。w i s e 系统采用复杂的算法完成了查询接口的集成n 邮。 中国人民大学的孟小峰教授、刘伟和孟卫一对d e e pw e b 的数据集成问题进行 了研究叫,将d e e pw e b 的搜索分为集成查询接口的生成和对集成查询接口上查询 的处理两大模块,两个模块又分为w e b 数据库的发现、查询接口模式的抽取、w e b 数据库的分类、查询接口的集成、w e b 数据库的选择和查询结果的抽取。苏州大学 2 山东大学硕士学位论文 的赵朋朋、高岭、郑冬冬和崔志明对d e e pw e b 的发现和搜索策略、d e e pw e b 的数 据源分类进行了研究1 4 1 。 1 4 本文的组织结构和章节安排 本文共分6 章,各章的主要内容如下: 第一章主要介绍了本系统的研究背景及其意义,并简要概括了本文的主要工 作和章节安排; 第二章对系统进行了细致的需求分析,从功能、性能等方面给出了系统实现 的具体要求; 第三章在落实需求分析的基础上,给出了系统的架构设计,从设计目标、系 统架构和工作流程等方面进行了陈述; 第四章给出了系统数据库的设计方案,包括系统创建的各个表以及表之间的 联系; 第五章对系统设计与实现的细节进行了详细的陈述,包括实现系统所采用的 技术,服务器端各模块的实现方法、基于r u b y + w a t i r 的网络数据采集过程等。 第六章对全文进行了总结和展望。 山东大学硕士学位论文 2 1 项目策划 第2 章系统需求分析 本系统的设计目标是实现一个能够为电子产品购物过程提供全方位服务的综 合性比较平台。用户都能在系统中得到满意的服务。系统计划分两个模块,其一 作为服务器端;另外一个作为移动终端。 以下是对整个系统策划的详细描述: 1 服务器端用户查询 在服务器端用户可以对电子产品进行基本搜索,也可以对电子产品进行高级 搜索。在搜索结果中可以进行价格比较,并可以对商品的详细信息加以查看。 2 移动设备端用户查询 在移动设备端用户可以对电子产品进行搜索。也可以对电子产品进行高级搜 索。在搜索结果中可以进行价格比较,并可以对商品的详细信息加以查看。 3 管理员对系统管理 管理员可以对商品分类( 如本网站将电子产品分为手机,电脑等类别) 、产品 品牌( 如诺基亚) 、产品( 如诺基亚2 6 3 0 ) 、商家网站( 如淘宝网) 、店家( 如淘 宝网的店家) 、日志、产品u r l 等进行管理。 2 2 功能需求 功能需求包括服务器端需求、移动设备端需求。 2 2 1 服务器端 1 用户基本查询 用户输入关键字选择相应的搜索方式,可以查询到符合自己要求的产品。 2 用户高级查询 用户通过选择电子产品的相关信息来确定产品,并输入自己期望的价格进行 查询。 4 山东大学硕士学位论文 3 产品价格比较 用户可以通过查询结果,进行相关操作获得产品价格比较的信息。 4 浏览产品详细信息 用户可以点击查询结果,访问店家网站获得具体商品信息。 5 管理员中心 管理员可以对产品进行相应的增、删等操作,完成对系统的管理。 2 2 2 移动设备端 1 基本搜索 用户输入关键字,选择相应的搜索方式,可以查询到符合自己要求的产品。 2 高级搜索 用户通过选择电子产品的相关信息来确定产品,并输入自己期望的价格进行 查询。 3 产品价格比较 用户可以通过查询结果,进行相关操作获得产品价格比较的信息。 4 浏览产品详细信息 用户可以点击查询结果,访问店家网站获得具体商品信息。 2 3 系统关键业务流程 2 3 1w e b 数据的自动抽取流程 为了能够顺利获取各购物网站的商品信息,本系统通过r u b y 结合w a t i r ,为 每个购物网站( 如图2 - 1 的淘宝网) 编写一个w e b c r a w e r 程序。 利用r u b y 程序从本地数据库中读取产品名,并通过w e b c r a w e r 构建相应的 查询请求,提交请求后,购物网站( 如图2 - 1 的淘宝网) 根据我们提交的请求查询 本地数据库( 如图2 1 的淘宝数据库) 并将查询结果返回给查询页面,这时我们通 过r u b y 程序对数据进行抽取,并将符合条件的查询结果存入到我们本地的数据库 中。同样过程我们可以通过相应w e b c r a w e r 对泡泡网、百度有啊、聪明点等等 购物网站的数据进行爬取。 5 基鬻嚣筹蠹照篓_ 嚣裟 库焖哟黼蝴蝴 数淤缎蚴懒觏 树啊攮 们甬数撕黼麟 入 k 地 萨施翻晁泡 ; j 幺, ,= ,询宝中雠憾鼽 撕诜懒 询定忱醐唯甄艟肛琢 不们魄娇跏檄 删耻雅m 骺黼 献醭懒 逊娥蚴孰 个譬“通鬻懈 山东大学硕士学位论文 户查看,详细流程如图2 - 2 。 查询结集页面价格对比页面商品详细信息页面 :网站用户 输入产品名并提交请求 一 ,返回杳询结果 、 用户 l 由量词结果电的:两品 昆据商品名称进入价术 比较页面 返回价格比较结具 高级搜索 户 毛奎蛾据t 一一 从上面的映射文件可以看出,映射文件主要用于将p o 实体映射到数据表中, 上面的映射文件是将p r o d u c t 实体映射到p r o d u c t 数据表中。 首先映射文件的根元素是c l a s s 元素。每个c l a s s 元素用于映射一个持久化列, 在c l a s s 中指定t a b l e 属性就是表明该持久化类的映射的数据表。如果没有写t a b l e 3 l 山东大学硕七学位论文 的话,则数据表名和持久化类名相同。 c l a s s 元素下包含很多p r o p e r t y 属性,每个p r o p e r t y 属性映射一个持久化属性。 在上面的映射文件中包含了m a n y t o o n e 子元素,每个m a n y t o o n e 子元素映射一 个多对一关联实体,映射m a n y t o - o n e 时,增加了l a z y = ”f a l s e ”属性,该属性表明该 实体关闭延迟加载。 在s e t 元素有i n v e r s e = “ t r u e “该属性表明在多的一端持有另一端的引用,并 且在本系统还添加了c a s c a d e = ”d e l e t e ”的属性表明了采用级联的策略,如果删除, 则删除与其相关的所有子元素。 由于映射文件较多篇幅较长,所以在此只对p r o d u c t 映射文件进行说明,其他 不做过多的描述。 3 管理s e s s i o n f a c t o r y h i b e r n a t e 只是完成对持久化的工作,但无法准确的知道操作的数据库,对数 据库的定义是通过s e s s i o n f a c t o r y 来管理的。 s p r i n gi o c 是一个功能非常强大的工厂,不仅可以管理业务逻辑组件,还可以 管理系统的数据源,也可以管理h i b e r n a t e 的s e s s i o n f a c t o r y 实例。我们在本系统 中将s e s s i o n f a c t o r y 配置成一个b e a n ,当s p r i n g 容器启动时系统就会自动的创建 s e s s i o n f a c t o r yb e a n 。 因为s p r i n g 的i o c 容器将s e s s i o n f a c t o r y 纳入了管理,而且系统的d a o 也在 容器的管理之中,因此i o c 还可以将s e s s i o n f a c t o r y 实例注入到每个需要持久化 操作的组件中,实现松耦合高聚集的管理。避免在d a o 主动获取s e s s i o n f a c o r y 实例 一旦s p r i n g 容器中配置了s e s s i o n f a c t o r y 的b e a n ,s p r i n g 容器将负责创建 并管理该s e s s i o n f a c t o r yb e a n ,利用i o c 优势将s e s s i o n f a c t o r yb e a n 注入给其他 d a o 组件。 5 5 系统0 a 0 层的设计与实现 j 2 e e 之所以如此流行,有很大的原因是建立在严格的分层结构上的,j 2 e e 系 统将系统的所有持久层访问都封装在系统的d a o 层,所有的持久化访问都通过系 3 2 山东大学硕士学位论文 统的d a o 组件来实现,避免了业务逻辑组件与持久化访问的耦合。 本系统d a o 的实现分为了3 部分 d a o 工厂类。 d a o 接口 d a o 接口的实现类。 d a o 模式是更符合软件工程的开发方式,本系统采用d a o 模式大致有如下 理由: 更好的软件复用 更好的可维护性。 更好的可移植行。 对于采用d a o 模式下的d a o 组件,用于完成对实体的c r u d 操作,故本系 统大部分d a o 中提供如下方法: 查找实体。 保存实体。 修改实体。 删除实体。根据主键。 删除实体,根据实体。 从上面介绍d a o 接口的类图大致为图5 7 所示。 d a o 接口 ,g e t ( p r ) :o b j e c t s a v e ( o b j e c to b j ) 0 :v o i d u p d a t e ( o b j e c to b j ) 0 :v o i d d e l e t e ( p r ) :v o i d 哪n d a ij o :l i s t 图5 - 7 d a o 接口图 山东大学硕士学位论文 本系统采用了s p r i n g 框架,则可以避免实现系统中d a o 组件的工厂,因为 s p r i n g 本身就是一个最大的工厂,可以管理容器中所有的组件,当然也就包括d a o 组件。 s p r i n g 为h i b e r n a t e 提供的d a o 支持类是:h i b e m a t e d a o s u p p o r t ,该类为实现 d a o 组件提供了两个便捷的方法: s e t s e s s i o n f a c t o r y ( s e s s i o n f a c t o r ys f ) ,可以用于依赖注入s e s s i o n f a c t o r y 实例。 g e t h i b e m a t e t e m p l a t e ( ) :该方法用于获取h i b e m a t e t e m p l a t e 实例。 一旦获取h i b e m a t e t e m p l a t e 实例之后,大部分操作就可以通过 h i b e m a t e t e m p l a t e 实例的一行代码来完成。 1 d a o 的基础配置 h i b e m a t e d a o s u p p o r t 类只需要一个s e s s i o n f a c t o r y 属性即可完成对数据库的访 问,实际的数据库访问通过模板h i b e m a t e t e m p l a t e 完成。 s p r i n g 为了将h i b e r n a t e 的s e s s i o n f a c t o r y 纳入其i o c 管理,s p r i n g 提供了一 个l o c a l s e s s i o n f a c t o r y b e a n 类,通过该类可以将s e s s i o n f a c t o r y 配置成s p r i n g 容器 2 实现系统d a o 组件 d a o 接口是最缺乏变化的对象,d a o 接口声明基本的增加、删除、修改、等 数量不等的查询方法。因此,d a o 接口的定义比较缺乏变化。 本系统包含了7 个实体,这7 个实体对了7 个d a o 组件用了操作这7 个实体, 并且向上支持e s e a r c h m a n a g e 业务逻辑组件的实现,如下图5 8 所示。 山东大学硕士学位论文 图5 8 业务逻辑组件d a o 上面的接口定义了p r o d u c t d a o 接口里应该包含的方法,仅仅是该组件所应该 遵守的规范。定义接口的目的就是为了让规范和实现分离,接口只是定义的一种 规范,规定每个d a o 组件必需实现拿些方法,随着系统采用不同的持久化技术, d a o 组件实现类可以完全不同,但是接口确实完全相同的,这就是面向接口编程 的好处,也是本系统产品面向接口的重要原因。 对于业务逻辑组件来说,应用逻辑组件仅仅依赖于系统的d a o 接口,各组件 面向接口编程,而不是具体的实现类,从而避免各组件以硬编码的方式耦合在一 起,从而使业务逻辑组件从具体的持久化技术中分离了出来。 本系统的每个d a o 组件都提供了一个实现类,所有的d a o 实现类都是基于 s p r i n g 的h i b e m a t e d a o s u p p o r t 的实现,一旦让d a o 实现类继承了 h i b e m a t e d a o s u p p o r t 基类,就可以使用该基类提供的方法。 由于篇幅所限只给出部分代码向大家说明。大家可以发现如果本系统不处理 非常复杂的分词工作,这些d a o 的实现将非常简单。只需要一两行代码即可完成 3 5 查询等操作,这些简化都得益于s p n n g 提供的支持:h i b e m a t e t e m p l a t e 。 与之类似的还有另外6 个d a o ,各个d a o 除了业务逻辑不同,其余的类似, 所以在这里就不做赘述。 3 配置系统的d a o 组件 本系统采用了s p r i n g 框架为系统的i o c 容器,当然系统的d a o 组件也在 s p r i n g 的管理之下。使用s p r i n g 容器管理d a o 有如下优势: 使用s p r i n g 容器作为d a o 工厂,从而避免了自己实现d a o 工厂,降低了编 程的难度。 d a o 组件无需自己定位数据源,d a o 组件的持久化访问所需的数据库连接可 由s p r i n g l o c 依赖注入。 d a o 组件可以由s p r i n g 容器依赖注入给上层的业务逻辑组件。 配置d a o 组件与配置s p r i n g 容器中的普通b e a n 没有太大的差别,而且因为 系统中的7 个d a o 配置大致相同,都需要有容器注入s e s s i o n f a c t o r y 实例,故本 系统采用b e a n 继承类简化d a o 组件的配置。 在使用b e a n 继承之前,应该先配置一个d a o 模板,该d a o 模板是所有 d a o b e a n 的父b e a n 。下面是d a o 模板的配置代码。 有的d a o 组件继承该d a o 模板即可。 下面是d a o 组件配置的代码片段: 3 6 山东大学硕士学位论文 5 6 系统业务逻辑层的设计与实现 因为d a o 组件提供的c r u d 方法主要是用于完成对数据表的各种操作,因 此系统的控制器组件是不应该直接调用d a o 组件的方法,系统通过业务逻辑组件 方法将多个d a o 方法组织起来,用来实现一个具体的业务逻辑,这个业务逻辑 具有逻辑上的整体性,所以我们为这个方法增加了事务控制。 本系统的业务逻辑组件封装了7 个d a o 组件,对于多个逻辑上存在丰富关联 关系的d a o 而言,通常只需要一个业务逻辑组件封装即可,因为本系统d a o 组 件之间存在着内在的逻辑关联,因此我们只使用了一个业务逻辑组件进行封装。 1 系统业务逻辑组件接口 本系统采用面向接口编程的原则,让系统中的控制器不是依赖于业务逻辑组 件的实现类,而是依赖于业务逻辑接口,这样可以降低系统重构的代价。也便于 错误的修改于查找 本系统逻辑组件接口类如图5 - 9 所示。 3 7 山东大学硕士学位论文 e s e a r c h m a n a g e 竹o n 3 # e i e 1 0 t ) g e t p r o d u c t b y l d 0 0 g e t a i i s e l l e t 0 0 g e t a i i 均n d 0 0 g e t a i i b r a n d 0 0 d e l e t e s e l l e r ( i n ts e l l e r l d ) o d e i e t e p r o d u c t o n tp r o d u c t l d ) 0 a d d s e e r ( s t r i n qn a m e ) o a d d br a n d ( s n 口n a m e ) o g e t b r a n d 日y p i d ( i n tk i n d l m 0 g e t p r o d u c t b v p i d ( i n tb l d ) o 图5 9 业务逻辑接1 3 类 该接口的作用于本系统要求的一样降低系统重构的代价,下面是该接口的部 分代码,及上述部分函数的说明。 接口中定义了大量的业务逻辑方法,并且本系统的这些业务逻辑方法通常都 是对应一次客户请求,每次客户请求发送到s t r u t s 2 的f i l t e r d i s p a t c h e r 之后, f i l t e r d i s p a t c h e r 将请求转发给对应的a c t i o n 实例,a c t i o n 实例调用对应的业务逻 辑方法来处理用户的请求。 对于系统的多个a c t i o n 实例而言,他们并不直接和业务逻辑组件的实现类耦 合而仅仅依赖于系统的接口,系统的接口不变,系统的功能则不变,系统的控制 器层也不需要改变,从而把系统的业务逻辑层的改变阻止在该层以内,避免了向 上扩散。 2 依赖注入d a o 组件 实现业务逻辑组件,就是为e s e a r c h m a n a g e 接1 :3 提供一个实现类,该实现类必 需依赖于d a o 组件,但是这种依赖是接口层次的依赖,而不是类层次上的依赖。 本系统的d a o 都是通过s p r i n gi o c 容器的注入,因此我们在 e s e a r c h m a n a g e r l m p 写了s e t t e r 方法,通过s e t t e r 能够接受s p r i n g 注入的内容。 3 8 山东大学硕士学位论文 3 业务逻辑组件中的异常处理 s p r i n g 的异常处理哲学简化了异常的处理,说有的数据库访问异常被包装了 r u n t i m e 异常,因此在我们的d a o 组件中无需显式的捕捉异常,所有的异常推迟 到业务逻辑组件中捕捉。 在业务逻辑中本系统采用以下方式处理业务逻辑: 该异常可以传递到客户端页面上输出,s t r u t s 2 可以根据捕捉到的异常种类自 动转向不同的显示页面。并输出异常信息。 4 事务管理 本系统借助于s p r i n g 的声明式事务管理,业务逻辑组件的方法内无需事务管 理代码,所有的事务管理都放在配置文件中进行。本系统采用了 b e a n n a m e a u t o p r o x y c r e a t o r 自动创建事务代理,采用这种事务声明方式有如下的好 处 避免了增量式的配置,不必为每个目标对象配置代理b e a n 。 避免目标对象被直接调用,使用b e a n n a m e a u t o p r o x y c r e a t o r 创建代理后,容 器中只有目标的代理存在原有的目标被完全取代。 避免了传统的配置是增量式的配置方式,导致配置文件很臃肿,难以阅读。 5 判断物品的价格区间 随着后台数据的爬取,数据库中的商品价格必然会发生变化,所以要判断系 统中的价格是否发生了变化,并修改价格,为了修改商品的价格,业务逻辑组件 提供了u p d a t e p r o d u c t 的方法来修订价格区间及商家情况。 6 配置业务层组件 随着本系统功能的逐渐扩充,如果将所有的组件都配置在同一个配置文件中, 3 9 山东大学硕士学位论文 必然导致配置文件的庞大。因此我们采用分模块的配置,我们将d a o 层的组件配 置在d a o c o n t e x t x m l 中,并在w e b x m l 中进行相应的改动。 5 7 系统w e b 层的设计与实现 w e b 层就是通常对应系统的m v c 结构的控制层,本系统使用s t r u t s 2 作为m v c 框架,本系统的控制器都是有s t r u t s 2 的a c t i o n 来充当,这些a c t i o n 通过调用系统 的业务逻辑方法来处理请求,并将处理结果放入到v a l u e s t a c k 中,在j s p 页面中 通过s t r u t s 2 标签库来取出。 1 配置s t r u t s 2 的核心f i l t e r s t r u t s 2 使用核心的f i l t e r d i s t p a t c h e r 来过滤用户的请求,一旦f i l t e r d i s p a t c h e r 拦截到用户的请求之后,用户请求将直接转入到s t r u t s 2 的体系内。 s t r u t s 2 的f i l t e r d i s t p a t c h e r 只会拦截宰a c t i o n 的请求,因此本系统所有的表单请 求都是以a c t i o n 结尾的,而且在本系统中后台的请求超链接也是通过s t r u t s 2 控制 器进行转发的,通过这种方式,可以让s t r u t s 2 来处理请求,对于普通的j s p 页面 必需通过s t r u t s 2 的过滤,保证了用户无法直接浏览任何页面。提供更好安全性。 2 w r e b 层的异常处理 在业务逻辑层异常处理时,先在业务逻辑方法中捕捉底层异常,并通过日志 功能将底层数据库异常记录下来,并抛出自定义业务逻辑异常:e s e a r c h e x c e p t i o n 。 从中可以发现当底层数据库访问出现异常时,业务逻辑方法抛出一个 e s e a r c h e x c e p t i o n 异常。 s t r u t s 2 中a c t i o n 的e x e c u t e ( ) 方法并未进行任何异常处理而是声明式的抛 出了所有的异常,这就意味着一旦底层数据库访问出现异常,则该异常在业务逻 辑层转换成e s e a r c h e x c e p t i o n 异常,该异常直接扩散到a c t i o n 的e x e c u t e 的方法, 转入s t r u t s 2 的异常处理体系。 山东大学硕士学位论文 5 8d a t a b a s e0 r a wle l - 网络数据库爬取 5 8 1r u b y 结合w a rir 的优势 w a t i r 是一个使用r u b y 实现的开源的w e b 自动化框架,相对于那些庞大的 商业工具来说,它很小巧,也很灵活,提供的功能也十分丰富。 通过r u b y 结合w a t i r 的使用,我们将网络数据库“d o w n l o a d ”本地数据库中, 为用户进行产品搜索产品比较提供丰富的数据信息。 对于大型的网站数据的抽取,通过r u b y + w a t i r 既简单又简洁,并且给管理 员一种直观的管理方式,即它的自动化。当运行t a o b a o r b 时,管理员只需双击 t a o b a o r b 即可,当然必须要安装r u b y ,w a t i r 及m y s q l 等的g e m ,安装方法十 分简单。安装成功后,启动程序,程序便自动开启浏览器,自动的输入产品的名 称,然后进行提交,并浏览器返回的结果进行解析。将我们想要的数据返回,并 写入到数据库中。这个全过程管理员是可以看到的。所以更加便于管理,分析。 5 8 2 r u b y 结合w a r ir 具体实现说明 假设r u b y 是整个流程中的a c t o r ( 如图5 1 0 ) ,在流程中r u b y 使用了w a t i r 的i e 对象,并对数据库进行了数据读出和写入的工作,因此需要在r u b y 程序中 加入对w a r i r 和m y s q l 数据库的引用。需要在r u b y 程序的开始输入下面两段代码: 本系统采用了u t f 8 的编码方式,而部分购物网站采用g b 2 3 1 2 的编码方式, 因此我们要对数据的编码方式进行转换,需要在上述两段代码后增加: 即对不同的编码方式进行转换( 如果不进行转换,则会产生乱码) 。 由于要从数据库中读取产品名并写入从网站抽取的数据信息,因此需要获得 数据库对象,代码如下: d b hq u e r ys e tn a m e sg b k ( ”“ ) i d b h q u e r y ( ”s e tc h a r a c t e rs e tg b k ”) 将读出数据的编码方式设y g q b k ( 为符合购l 物网站编码方式)l 4 1 山东大学硕士学位论文 上述工作完成后,便可使用r u b y 对w r e bd a t a b a s e 进行c r a w l 了。 首先,r u b y 通过w a t i r 获得i e 对象,代码如下: 通过上一行程序自动开启一个新的浏览器i e 对象调用g o t o 方法对购物网站 进行导航,代码如下: i e t e x t _ f i e l d 0 s e t ( 产品名) 的方式将产品名称自动的输入到上一步骤导航到的页面 的文本框中,并自动点击提交( 如图5 1 0 ) 。 购物网站根据r u b y 提交的请求,到本地数据库中进行查询,将查询结果返回 给r u b y ( 如图5 1 0 ) 。 最后,r u b y 对查询结果利用正则表达式进行分析,抽取有用信息,并将其写 回到数据库相应的表中,上述过程详见代码及流程图5 1 0 过程。 4 2 山东大学硕士学位论文 从本地数据库嚼读出产品名 使用w a t i r 辫产品名通过 由¥程序对结果 行分析。抽取 获碍i e 对象 x t f i e l d ( ) s 通过i e 对象的g o t o 方法对购物同站页面进行导航 品名。) 的方式 正则表达式 有用信息 到文本框中。并提

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论