劉方
摘要:針對(duì)農(nóng)特產(chǎn)品網(wǎng)上銷售需求,基于SSH框架構(gòu)建了一款農(nóng)特產(chǎn)品網(wǎng)上銷售系統(tǒng)。采用SSH多層整合框架技術(shù),通過(guò)清晰分層結(jié)構(gòu)與松散耦合設(shè)計(jì),對(duì)系統(tǒng)主要功能與整體架構(gòu)進(jìn)行了開(kāi)發(fā)與實(shí)現(xiàn)。應(yīng)用結(jié)果顯示,該系統(tǒng)運(yùn)行穩(wěn)定、復(fù)用性強(qiáng)、便于維護(hù),能滿足消費(fèi)者購(gòu)買過(guò)程中各種需求,為特色農(nóng)產(chǎn)品產(chǎn)銷對(duì)接及流通提供良好服務(wù)。該系統(tǒng)開(kāi)發(fā)表明,采用SSH架構(gòu)設(shè)計(jì)模式,使程序?qū)哟胃忧逦夷芎?jiǎn)化開(kāi)發(fā)過(guò)程并易于控制。
關(guān)鍵詞關(guān)鍵詞:農(nóng)產(chǎn)品銷售;SSH;MVC;B/S結(jié)構(gòu);電商平臺(tái)
DOIDOI:10.11907/rjdk.172246
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2017)011009404
0引言
隨著信息技術(shù)發(fā)展,“互聯(lián)網(wǎng)+”模式也逐漸融入傳統(tǒng)農(nóng)業(yè),特別是農(nóng)村電商平臺(tái),在提升特色農(nóng)產(chǎn)品產(chǎn)銷對(duì)接與流通效率,扶持農(nóng)村青年創(chuàng)業(yè),以及幫助大學(xué)生村官探索村級(jí)經(jīng)濟(jì)產(chǎn)銷模式轉(zhuǎn)型方面,正發(fā)揮著積極作用。
本文基于SSH架構(gòu)設(shè)計(jì)并實(shí)現(xiàn)了一款農(nóng)特產(chǎn)品網(wǎng)上銷售系統(tǒng),以大別山區(qū)生態(tài)綠色農(nóng)特產(chǎn)品為產(chǎn)銷服務(wù)對(duì)象,旨在通過(guò)B2C電商平臺(tái)形式,為農(nóng)村扶貧開(kāi)發(fā)與農(nóng)產(chǎn)品產(chǎn)銷配送提供新方式與手段。
1系統(tǒng)功能
構(gòu)建農(nóng)特產(chǎn)品網(wǎng)上銷售系統(tǒng),其功能應(yīng)充分展示農(nóng)特產(chǎn)品信息、滿足客戶購(gòu)買需求,為順利完成購(gòu)銷雙方交易活動(dòng)提供良好服務(wù)。該系統(tǒng)為基于B/S結(jié)構(gòu)的Web系統(tǒng),分為前、后臺(tái)2部分。
1.1前臺(tái)模塊
前臺(tái)模塊用戶角色包括瀏覽用戶與會(huì)員用戶。實(shí)現(xiàn)主要功能有:
(1)商品瀏覽。實(shí)現(xiàn)商品類別分級(jí)顯示,提供人氣商品(按商品瀏覽量多少排序)、熱銷商品(銷量較多)及推薦商品展示。
(2)會(huì)員管理。使用購(gòu)物車功能,用戶需要驗(yàn)證身份。注冊(cè)會(huì)員并登錄后,才可進(jìn)行購(gòu)物及生成訂單系列操作。
(3)購(gòu)物車管理。包括保存商品購(gòu)買信息,調(diào)整某商品訂單條目信息,以及創(chuàng)建購(gòu)物訂單、實(shí)時(shí)網(wǎng)上支付等。
農(nóng)特產(chǎn)品網(wǎng)上銷售系統(tǒng)前臺(tái)功能結(jié)構(gòu)如圖1所示。
圖1農(nóng)特產(chǎn)品網(wǎng)上商城前臺(tái)功能結(jié)構(gòu)
1.2后臺(tái)模塊
系統(tǒng)后臺(tái)功能為管理員設(shè)計(jì),主要提供類別管理、商品管理、訂單管理等3大功能。
管理員登錄后,可進(jìn)行商品類別與商品信息維護(hù)(添、刪、改、查),上傳農(nóng)特產(chǎn)品相關(guān)圖片、介紹,修改、查詢訂單狀態(tài)以及自定義查詢等操作。
農(nóng)特產(chǎn)品網(wǎng)上銷售系統(tǒng)后臺(tái)功能結(jié)構(gòu)如圖2所示。
2系統(tǒng)架構(gòu)
2.1SSH框架
本系統(tǒng)實(shí)現(xiàn)基于SSH輕量級(jí)架構(gòu),它由J2EE的3個(gè)主要框架技術(shù)組合而成。
(1)Struts框架。該框架基于MVC設(shè)計(jì)模式,可將軟件功能分層化,通過(guò)控制器將視圖與訪問(wèn)控制分離,使模塊結(jié)構(gòu)更加清晰[1]。
(2)Spring框架。該框架優(yōu)勢(shì)是分層架構(gòu)技術(shù),允許對(duì)其所提供的7個(gè)模塊自主選擇合適模塊[2]。Spring核心理念是依賴注入,即將程序之間依賴關(guān)系轉(zhuǎn)移到外部容器中。程序不再自己建立對(duì)象,而是由Spring容器根據(jù)需要?jiǎng)討B(tài)地建立并注入對(duì)象,簡(jiǎn)化系統(tǒng)開(kāi)發(fā)難度。
(3)Hibernate框架。該框架基于對(duì)象/關(guān)系映射(ORM)技術(shù)[3]。通過(guò)映射機(jī)制,將對(duì)數(shù)據(jù)庫(kù)中表記錄處理變成對(duì)Java對(duì)象的處理,使程序員可將對(duì)數(shù)據(jù)庫(kù)操作轉(zhuǎn)換成面向?qū)ο笳Z(yǔ)言的操作,減輕編程工作量。
SSH架構(gòu)融合了三者優(yōu)勢(shì),Struts MVC模式,可方便地搭建系統(tǒng)整體架構(gòu);ORM框架,能直接持久化復(fù)雜的Java對(duì)象,將面向?qū)ο蟛僮鬓D(zhuǎn)化為底層SQL操作;IoC機(jī)制,提供強(qiáng)大Bean工廠容器,通過(guò)配置方式來(lái)描述對(duì)象及依賴關(guān)系,實(shí)現(xiàn)了層間松耦合。SSH是目前應(yīng)用較廣的Web應(yīng)用開(kāi)發(fā)框架。
2.2系統(tǒng)分層
系統(tǒng)在整體設(shè)計(jì)上,采用了SSH分層構(gòu)架技術(shù),分為視圖表示層、業(yè)務(wù)層、數(shù)據(jù)持久層(PO)。其中業(yè)務(wù)層又細(xì)分為:Web控制層(Struts的Action)、業(yè)務(wù)邏輯層、數(shù)據(jù)操作層(DAO)。各層相互獨(dú)立,分工明確,層之間通過(guò)通信接口聯(lián)系。分層設(shè)計(jì)架構(gòu)如圖3所示。
圖3系統(tǒng)分層架構(gòu)
分層架構(gòu)中,Struts將頁(yè)面與訪問(wèn)控制分離,當(dāng)它要執(zhí)行控制邏輯時(shí),就調(diào)用Action模塊,Action在處理中若要訪問(wèn)數(shù)據(jù)庫(kù),則通過(guò)負(fù)責(zé)實(shí)現(xiàn)業(yè)務(wù)邏輯的Service組件。而Service需調(diào)用DAO接口實(shí)現(xiàn)類中的方法,才直接操作數(shù)據(jù)庫(kù)[4]。Hibernate將數(shù)據(jù)庫(kù)表持久化為POJO類,DAO類再以面向?qū)ο蠓绞綇腜OJO類中讀取數(shù)據(jù)[5]。整合框架以Spring為核心,所有組件包括DAO、Service與Action,都由Spring的ApplicationContext.xml文件進(jìn)行配置管理。
3系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3.1數(shù)據(jù)庫(kù)
根據(jù)系統(tǒng)業(yè)務(wù)功能分析,設(shè)計(jì)出系統(tǒng)數(shù)據(jù)庫(kù)主要數(shù)據(jù)表:customer_info表(會(huì)員)、order_info表(訂單)、order_Detail表(訂單明細(xì))、product_info表(商品)、productsort_info表(商品類別)、Admin_info表(管理員)、uploadfile_info表(上傳文件)。上述表關(guān)聯(lián)關(guān)系如圖4所示。
圖4系統(tǒng)數(shù)據(jù)表關(guān)系
3.2視圖表示層
視圖表示層是Web前端界面,采用HTML、JSP、Struts標(biāo)簽加以實(shí)現(xiàn),在這些JSP文件中不需進(jìn)行任何實(shí)際業(yè)務(wù)處理。
3.3業(yè)務(wù)層
業(yè)務(wù)層主要以Spring為集成環(huán)境[6],整合以下各層:
3.3.1Web控制層endprint
即指Struts的Action業(yè)務(wù)控制層,其功能是當(dāng)用戶請(qǐng)求到達(dá)Struts控制器核心,根據(jù)Struts.xml配置信息,轉(zhuǎn)發(fā)給業(yè)務(wù)控制器Action完成數(shù)據(jù)處理,并根據(jù)處理結(jié)果,決定跳轉(zhuǎn)至相應(yīng)頁(yè)面。Action并不承擔(dān)直接處理業(yè)務(wù)邏輯,而是調(diào)用業(yè)務(wù)邏輯層組件完成處理。
Web層實(shí)現(xiàn):①創(chuàng)建Action類(根據(jù)對(duì)用戶請(qǐng)求處理邏輯編寫);②配置Struts.xml文件,讓程序執(zhí)行成功后跳轉(zhuǎn)到對(duì)應(yīng)頁(yè)面;③將Struts2的Action類創(chuàng)建交給Spring;④在Action對(duì)象中,通過(guò)Spring的IoC將ordersService業(yè)務(wù)組件注入。
3.3.2業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層通常包括Service接口與接口實(shí)現(xiàn)類。其職責(zé)是提供處理應(yīng)用程序業(yè)務(wù)邏輯與業(yè)務(wù)校驗(yàn),需要依賴調(diào)用DAO接口方法對(duì)數(shù)據(jù)庫(kù)執(zhí)行操作。
Service組件實(shí)現(xiàn):創(chuàng)建相應(yīng)Service接口及接口實(shí)現(xiàn)類,在Spring的ApplicationContext.xml文件中進(jìn)行配置。
3.3.3數(shù)據(jù)操作層
數(shù)據(jù)操作層通常包括DAO接口與接口實(shí)現(xiàn)類。DAO核心思想是將底層數(shù)據(jù)庫(kù)訪問(wèn)操作與業(yè)務(wù)層邏輯分開(kāi),Dao組件封裝了數(shù)據(jù)庫(kù)增、刪、改、查等操作細(xì)節(jié),所有數(shù)據(jù)庫(kù)訪問(wèn)都通過(guò)Dao組件完成。
DAO實(shí)現(xiàn):首先創(chuàng)建相應(yīng)DAO接口與接口實(shí)現(xiàn)類,在Spring的ApplicationContext.xml文件中進(jìn)行配置。
下面以“結(jié)算下訂單”為例,說(shuō)明實(shí)現(xiàn)上述業(yè)務(wù)時(shí)各組件調(diào)用關(guān)系:①用戶點(diǎn)擊“Submit”按鈕,該請(qǐng)求到達(dá)服務(wù)器,F(xiàn)ilterDispatcher作為控制器中心,負(fù)責(zé)分配工作,決定調(diào)用Account.java,并回調(diào)其execute()方法,實(shí)現(xiàn)下訂單功能;②AccountAction類調(diào)用業(yè)務(wù)層OrdersService接口save()方法,該方法則調(diào)用DAO層OrdersDAOImpl類save(OrdersVo new Order)方法,完成數(shù)據(jù)訪問(wèn),實(shí)現(xiàn)將訂單項(xiàng)信息存入數(shù)據(jù)表;③OrdersDAO完成下訂單操作后,依次返回信息;④核心控制器根據(jù)返回的success以及struts.xml文件配置,找到order_list.jsp文件,執(zhí)行該文件,轉(zhuǎn)換成HTML頁(yè)面(訂單列表),傳遞給瀏覽器。各層組件調(diào)用時(shí)序如圖5所示。
圖5訂單功能實(shí)現(xiàn)時(shí)序
上例中,Spring的IOC容器通過(guò)配置文件,對(duì)AccountAction對(duì)象、OrdersServiceImpl對(duì)象、OrdersDAOImpl對(duì)象生成進(jìn)行管理,并通過(guò)依賴注入,將OrdersDAO注入到OrdersService中,再將OrdersService注入到AccounAction中,實(shí)現(xiàn)無(wú)縫集成[7]。
配置在ApplicationContext.xml進(jìn)行依賴注入部分代碼如下[8]:
ref bean="ordersDAO" />
3.4數(shù)據(jù)持久層
數(shù)據(jù)持久層設(shè)計(jì)在MyEclipse運(yùn)行環(huán)境下通過(guò)Hibernate框架完成。
首先創(chuàng)建與數(shù)據(jù)表對(duì)應(yīng)的Hibemate持久化類及與持久化類對(duì)應(yīng)的映射文件。在IoC容器中,對(duì)上述映射文件進(jìn)行注冊(cè)。接著實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接。Spring與Hibernate整合后,Spring容器會(huì)利用LocalSessionFactoryBean自動(dòng)創(chuàng)建本地Hibernate的sessionFactory實(shí)例對(duì)象并接管DAO,并可為其注入dataSource引用[9]。通過(guò)ApplicationContext.xml文件配置,dataSource(數(shù)據(jù)源)被注入到sessionFactory中,sessionFactory被注入到DAO中。
以“結(jié)算下訂單”為例,先在項(xiàng)目文件夾下domain包中,創(chuàng)建與數(shù)據(jù)表Orders表對(duì)應(yīng)的持久化類OrdersVo.java與映射文件Ordersvo.hhm.xml,該表中存儲(chǔ)有會(huì)員訂單信息。由于DAO注入了sessionFactory對(duì)象,而sessionFactory中保存有當(dāng)前數(shù)據(jù)庫(kù)配置信息,因此用OrdersDAOImp類調(diào)用HihernateTemplate模板save(newOrder)方法,即可實(shí)現(xiàn)將持久化類OrdersVo.java中數(shù)據(jù),保存于數(shù)據(jù)表Orders中對(duì)應(yīng)記錄項(xiàng)[10]。
ApplicationContext.xml部分代碼如下:
<!配置Hihernatese sessionFactory bean>
class="org.springframework.orm.hiber- nate3.LocalSessionFactoryBean">
org.hibernate.dialect.MySQLDialect
<!配置映射文件>
該系統(tǒng)實(shí)現(xiàn)部分界面如圖6、圖7所示。
圖6商城前臺(tái)主界面
圖7商城后臺(tái)系統(tǒng)界面
4結(jié)語(yǔ)
本文針對(duì)農(nóng)特產(chǎn)品網(wǎng)上銷售需求,基于Struts2+Spring+Hibernate整合框架技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了一款農(nóng)特產(chǎn)品網(wǎng)上銷售系統(tǒng)。系統(tǒng)開(kāi)發(fā)過(guò)程表明,運(yùn)用SSH架構(gòu)技術(shù),不僅簡(jiǎn)化了系統(tǒng)開(kāi)發(fā)過(guò)程,也使程序設(shè)計(jì)更加合理,運(yùn)行更加穩(wěn)定。
參考文獻(xiàn)參考文獻(xiàn):
[1]孟凡奇,曲朝陽(yáng),侯松林.SSH架構(gòu)在導(dǎo)師實(shí)驗(yàn)室綜合管理系統(tǒng)開(kāi)發(fā)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(8):174177.
[2]余穎,李曉峋,歐陽(yáng)純萍.一種SSH框架的在線程序自動(dòng)評(píng)判系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].南華大學(xué)學(xué)報(bào):自然科學(xué)版,2012,26(4):6568.
[3]堪湘倩,狄文輝.基于J2EE輕量級(jí)框架的移動(dòng)卡類渠道銷售管理系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009(17):9597.
[4]鄭阿奇.Java EE教程[M].北京:清華大學(xué)出版社,2012.
[5]趙彥.JavaEE框架技術(shù)進(jìn)階式教程[M].北京:清華大學(xué)出版社,2011.
[6]霍迎秋.基于SSH架構(gòu)的農(nóng)產(chǎn)品信息交換平臺(tái)[J].實(shí)驗(yàn)室研究與探索,2013,32(5):6366.
[7]趙曉君,崔建濤,鄧璐娟,等.基于SSH2和jQuery的大學(xué)生校園綜合服務(wù)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].鄭州輕工業(yè)學(xué)院學(xué)報(bào):自然科學(xué)版,2014,29(3):100104.
[8]馬慧斌.JavaEE框架技術(shù)研究及其在OAO電子商務(wù)模式中的實(shí)現(xiàn)[D].西安:長(zhǎng)安大學(xué),2013.
[9]李雷孝,劉曉軍,劉利民,等.基于SSH整合框架的科研項(xiàng)目管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(bào),2012,33(1):210214.
[10]劉勇軍,王電鋼.Java EE項(xiàng)目應(yīng)用開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2012.
責(zé)任編輯(責(zé)任編輯:何麗)endprint