劉 穎,翟開云
(1.吉林財(cái)經(jīng)大學(xué) 管理科學(xué)與信息工程學(xué)院,吉林 長(zhǎng)春 130117;2.物流產(chǎn)業(yè)經(jīng)濟(jì)與智能物流吉林省高校重點(diǎn)實(shí)驗(yàn)室,吉林 長(zhǎng)春 130117)
基于Sp ring MVC框架的鮮活農(nóng)產(chǎn)品供應(yīng)鏈交易平臺(tái)構(gòu)建
劉 穎1,2,翟開云1
(1.吉林財(cái)經(jīng)大學(xué) 管理科學(xué)與信息工程學(xué)院,吉林 長(zhǎng)春 130117;2.物流產(chǎn)業(yè)經(jīng)濟(jì)與智能物流吉林省高校重點(diǎn)實(shí)驗(yàn)室,吉林 長(zhǎng)春 130117)
針對(duì)鮮活農(nóng)產(chǎn)品供應(yīng)鏈的業(yè)務(wù)需求,提出基于Spring MVC框架的鮮活農(nóng)產(chǎn)品供應(yīng)鏈交易平臺(tái),該平臺(tái)利用Spring MVC+Mybatis設(shè)計(jì)系統(tǒng)的主體架構(gòu),使用分層技術(shù)實(shí)現(xiàn)對(duì)象之間的松耦合;部署B(yǎng)ES作為Web服務(wù)器,以提高框架運(yùn)行穩(wěn)定性。鮮活農(nóng)產(chǎn)品銷售供應(yīng)鏈交易平臺(tái)的構(gòu)建,可為鮮活農(nóng)產(chǎn)品物流提供支持與保障。
鮮活農(nóng)產(chǎn)品;交易平臺(tái);供應(yīng)鏈;Spring MVC框架;BES
鮮活農(nóng)產(chǎn)品主要指新鮮蔬菜、水果、鮮活水產(chǎn)品、活的畜禽和新的肉蛋奶等五類農(nóng)產(chǎn)品[1]。鮮活農(nóng)產(chǎn)品在采摘后仍有生命活動(dòng),在運(yùn)輸、銷售的過程中很容易腐爛或者變質(zhì),從而帶來較大經(jīng)濟(jì)損失[2]。近年來,針對(duì)鮮活農(nóng)產(chǎn)品供應(yīng)鏈流通的研究逐漸增多[3-5],然而,鮮活農(nóng)產(chǎn)品在線交易平臺(tái),是農(nóng)產(chǎn)品流通模式不可或缺的一部分,對(duì)最優(yōu)物流配貨、降低農(nóng)產(chǎn)品的損失率、促進(jìn)價(jià)格穩(wěn)定具有重要的現(xiàn)實(shí)意義。
輕量級(jí)Spring框架提供了對(duì)MVC模式的實(shí)現(xiàn)機(jī)制,有效的實(shí)現(xiàn)跨平臺(tái)信息交流[6]。目前,許多學(xué)者針對(duì)這一框架進(jìn)行研究,申彬等為了滿足中小企業(yè)對(duì)于庫存管理系統(tǒng)的業(yè)務(wù)要求,研究了基于MVC模式S2SH框架的庫存管理系統(tǒng)[7]。黎吾鑫在Spring MVC框架和前端Extjs技術(shù)的基礎(chǔ)上,提出將Spring MVC和Extjs進(jìn)行高效整合的Web系統(tǒng)框架[8]。廖福保針對(duì)目前Spring MVC模塊的不足,對(duì)模塊進(jìn)行了擴(kuò)展,并將AJAX,技術(shù)引入到Spring MVC模塊中,使其具有易維護(hù)性[9]。然
而,上述研究中,缺乏服務(wù)器的配置研究,本文利用Spring MVC+Mybatis設(shè)計(jì)系統(tǒng)的主體架構(gòu),同時(shí),為了使運(yùn)行平臺(tái)達(dá)到穩(wěn)定性、服務(wù)易于控制等需求,使用BES部署Web服務(wù)器,分別從顯示層、控制層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層搭建整體框架,并將其應(yīng)用于鮮活農(nóng)產(chǎn)品交易實(shí)踐平臺(tái)。
2.1 Spring框架
Spring是一個(gè)為解決企業(yè)應(yīng)用開發(fā)而創(chuàng)建的開源框架??蚣艿闹饕獌?yōu)勢(shì)之一就是其分層架構(gòu),使得應(yīng)用時(shí)允許用戶選擇任意組件,同時(shí)也為J2EE應(yīng)用程序開發(fā)提供集成的框架[10-12],如圖1所示。
圖1 Spring框架結(jié)構(gòu)
其主要優(yōu)點(diǎn)包括:
(1)輕量。輕量級(jí)的容器框架沒有侵入性;
(2)松耦合。容易組合對(duì)象直接間關(guān)系,面向接口編程,降低耦合;
(3)可擴(kuò)展。AOP可以更加容易的進(jìn)行功能擴(kuò)展,遵循OCP開發(fā)原則;
(4)面向切面。允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)進(jìn)行內(nèi)聚性的開發(fā)。
2.2 Spring MVC框架
Spring MVC是一個(gè)簡(jiǎn)單靈活的輕量級(jí)MVC框架,其工作原理如圖2所示,用戶向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求會(huì)被DispatcherServlet捕獲,通過HandlerMapping找到相應(yīng)處理請(qǐng)求的控制器Controller,Controller接收請(qǐng)求后進(jìn)行相應(yīng)邏輯的處理,處理完成后返回一個(gè)ModelAndView(視圖和模型的集合),然后DispatcherServlet查詢ViewResoler視圖解析器,找到ModelAndView指定的視圖并通過視圖將結(jié)果顯示到客戶端。
2.3 Mybatis
Mybatis是存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架,提供了數(shù)據(jù)映射功能,可實(shí)現(xiàn)對(duì)底層數(shù)據(jù)訪問的封裝。Mybatis原理是使用簡(jiǎn)單的XML文件或注解S將Javabean,Map的實(shí)現(xiàn)和基本數(shù)據(jù)類型的包裝類映射成JDBC的PreparedStatement,實(shí)現(xiàn)Java對(duì)象與數(shù)據(jù)庫之間的映射關(guān)系。相比于Hibernate,Mybatis為系統(tǒng)的設(shè)計(jì)提供了更大的自由空間,維護(hù)更簡(jiǎn)單。
圖2 Spring MVC工作原理
本平臺(tái)的設(shè)計(jì)分為四層架構(gòu),分別為顯示層、控制層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。為了降低層與層之間的耦合度,提高系統(tǒng)的可維護(hù)性和擴(kuò)展性,框架以Mysql作為底層數(shù)據(jù),使用Maven進(jìn)行代碼管理,用MyEclipse作為開發(fā)工具。顯示層用Jsp+Jstl實(shí)現(xiàn),控制層以Spring MVC作為控制器,業(yè)務(wù)層用Spring控制日志記錄與事務(wù)一致,數(shù)據(jù)訪問層用Mybatis實(shí)現(xiàn)與Mysql數(shù)據(jù)庫之間的訪問。在每個(gè)在功能上職責(zé)明確,功能獨(dú)立,各層通過通信接口實(shí)現(xiàn)相互聯(lián)系,整個(gè)平臺(tái)的架構(gòu)關(guān)系如圖3所示。
3.1 顯示層
顯示層是用戶與管理員與系統(tǒng)進(jìn)行直接進(jìn)行交互的界面,本平臺(tái)采用Jsp和Jstl標(biāo)簽實(shí)現(xiàn)數(shù)據(jù)頁面的展示,通過El表達(dá)式接收控制層傳來的數(shù)據(jù),并用Jstl進(jìn)行數(shù)據(jù)的控制,展示在頁面上,使頁面代碼簡(jiǎn)潔。
3.2 控制層
控制層相當(dāng)于一個(gè)路由器,起到一個(gè)線路開關(guān)的作用,它接收頁面的請(qǐng)求,調(diào)用業(yè)務(wù)邏輯層接口進(jìn)行相應(yīng)處理,再將處理的數(shù)據(jù)返回給相應(yīng)的顯示層頁面。
3.3 業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層提供了系統(tǒng)所需要的業(yè)務(wù)邏輯方法,是平臺(tái)設(shè)計(jì)的核心,負(fù)責(zé)處理系統(tǒng)的業(yè)務(wù)邏輯以及數(shù)據(jù)訪問層與控制層之間的通訊。本平臺(tái)由Spring實(shí)現(xiàn)業(yè)務(wù)
邏輯層,并負(fù)責(zé)日志和事務(wù)的管理。
3.4 數(shù)據(jù)訪問層
數(shù)據(jù)訪問層是由數(shù)據(jù)訪問對(duì)象組成,這些數(shù)據(jù)訪問對(duì)象提供對(duì)基本對(duì)象的創(chuàng)建、查詢、修改、刪除等操作。框架由Mybatis實(shí)現(xiàn)數(shù)據(jù)訪問層,使用泛型創(chuàng)建基類,且基類包含對(duì)基本對(duì)象的創(chuàng)建、查詢、修改、刪除、分頁等操作,并使其他數(shù)據(jù)訪問對(duì)象繼承該基類,使不同的實(shí)體對(duì)象保持相同的數(shù)據(jù)訪問方法,為業(yè)務(wù)邏輯層數(shù)據(jù)存取提供方法,實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的增、刪、改、查操作。
圖3 平臺(tái)架構(gòu)
考慮平臺(tái)的訪問量需求,也為了使運(yùn)行平臺(tái)達(dá)到穩(wěn)定性、服務(wù)易于控制等要求,本平臺(tái)選擇BES作為Web服務(wù)器,通過為平臺(tái)設(shè)置集群以解決海量訪問的問題,部署過程如圖4所示。
圖4 主機(jī)部署與項(xiàng)目發(fā)布
主機(jī)部署與項(xiàng)目發(fā)布過程中,F(xiàn)TP實(shí)現(xiàn)Windows系統(tǒng)與Linux主機(jī)之間文件傳輸,將主機(jī)需要的文件上傳到Linux主機(jī),同時(shí)也可以從Linux主機(jī)上下載文件;通過BES服務(wù)器的iastool命令對(duì)項(xiàng)目進(jìn)行發(fā)布,或通過BES管理控制臺(tái)圖形化界面進(jìn)行項(xiàng)目的發(fā)布與管理;利用MySQL作為項(xiàng)目底層數(shù)據(jù)庫支持;Windows系統(tǒng)經(jīng)過HTTP網(wǎng)絡(luò)協(xié)議,通過瀏覽器對(duì)項(xiàng)目進(jìn)行訪問。如果項(xiàng)目運(yùn)行出現(xiàn)問題,使用SecureCRT登錄主機(jī),查看相應(yīng)日志,或通過Navicat for Mysql遠(yuǎn)程連接數(shù)據(jù)庫,查看日志表記錄,快速定位以提高系統(tǒng)的可維護(hù)性。
本文以鮮活農(nóng)產(chǎn)品展示模塊為例說明系統(tǒng)的實(shí)現(xiàn)過程,該模塊的功能是通過Mybatis將數(shù)據(jù)庫中的商品數(shù)據(jù)讀取出來,經(jīng)過業(yè)務(wù)邏輯層將數(shù)據(jù)交給控制層,最終在顯示層以列表的形式展示。
5.1 表示層構(gòu)建
表示層中的Jsp頁面放在Java Web項(xiàng)目的View目錄下,采用Sitemesh技術(shù)保持頁面風(fēng)格的一致性,JSP頁面通過El表達(dá)式接收變量,利用Jstl標(biāo)簽控制頁面內(nèi)容顯示。下面以鮮活農(nóng)產(chǎn)品展示頁面為例進(jìn)行配置說明。
配置視圖解析
搭建后效果如圖5所示。
圖5 鮮活農(nóng)產(chǎn)品展示頁面
5.2 控制層構(gòu)建
控制層主要在Web.xml文件中進(jìn)行配置,定義了控制器對(duì)象和所作用的Spring容器路徑,負(fù)責(zé)管理和分配用戶,主要配置如下:
對(duì)Spring MVC控制器進(jìn)行配置:
在容器將請(qǐng)求交給控制器類時(shí),Controller類中通過使用@RequestMapping對(duì)請(qǐng)求進(jìn)行映射,其中兩個(gè)重要的參數(shù)Value和Method,分別對(duì)應(yīng)URL和請(qǐng)求的方式(Post或者Get),Controller類處理完相應(yīng)業(yè)務(wù)后,交給Spring容器中的視圖解析器,然后映射到相應(yīng)Jsp頁面,返回到客戶端。
5.3 業(yè)務(wù)邏輯構(gòu)建
業(yè)務(wù)邏輯層根據(jù)業(yè)務(wù)具體要求,實(shí)現(xiàn)業(yè)務(wù)功能的處理,在系統(tǒng)中使用@Service注解實(shí)現(xiàn)業(yè)務(wù)邏輯類被Spring的Bean管理,使用@Resource注解引入數(shù)據(jù)訪問實(shí)現(xiàn)類,通過調(diào)用接口中的方法訪問數(shù)據(jù)庫。
5.4 數(shù)據(jù)訪問層構(gòu)建
使用泛型構(gòu)建一個(gè)數(shù)據(jù)訪問基類,并為該類封裝對(duì)數(shù)據(jù)庫的增、刪、改,查操作,為每一個(gè)實(shí)體類構(gòu)建一個(gè)數(shù)據(jù)訪問類,繼承基類以及不同實(shí)體對(duì)象的使用,使用相同的數(shù)據(jù)訪問接口,不同的訪問形式,最終實(shí)現(xiàn)對(duì)數(shù)據(jù)的CRUD操作。
數(shù)據(jù)庫連接配置分為Windows開發(fā)環(huán)境和Linux主機(jī)部署環(huán)境,配置如下:
通過dbcp連接池創(chuàng)建數(shù)據(jù)源-
數(shù)據(jù)訪問通過調(diào)用基類的分頁功能,實(shí)現(xiàn)商品分頁展示
基類利用泛型,實(shí)現(xiàn)分頁功能
本文從軟件的架構(gòu)流程入手,設(shè)計(jì)實(shí)現(xiàn)基于Spring MVC框架的鮮活農(nóng)產(chǎn)品交易平臺(tái)。該平臺(tái)使用分層設(shè)計(jì),實(shí)現(xiàn)對(duì)象之間的松耦合,使得程序具有更好的可擴(kuò)展性和可維護(hù)性。此外,平臺(tái)還采用企業(yè)級(jí)BES服務(wù)器,并將平臺(tái)部署在Linux系統(tǒng)上,進(jìn)而加快了系統(tǒng)的反應(yīng)速度。該框架為鮮活農(nóng)產(chǎn)品供應(yīng)鏈流通提供技術(shù)平臺(tái),具有一定的實(shí)用性和推廣價(jià)值。
[1]林略,楊書萍,但斌.時(shí)間約束下鮮活農(nóng)產(chǎn)品三級(jí)供應(yīng)鏈協(xié)調(diào)[J].中國管理科學(xué),2011,19(3):57-62.
[2]樊西峰.鮮活農(nóng)產(chǎn)品流通電子商務(wù)模式構(gòu)想[J].中國流通經(jīng)濟(jì),2013,(4):85-90.
[3]趙霞,吳方衛(wèi).隨機(jī)產(chǎn)出與需求下農(nóng)產(chǎn)品供應(yīng)鏈協(xié)調(diào)的收益共享合同研究[J].中國管理科學(xué),2009,17(5):88-95.
[4]吳忠和,陳宏,趙千,等.時(shí)間約束下鮮活農(nóng)產(chǎn)品供應(yīng)鏈應(yīng)急協(xié)調(diào)契約[J].系統(tǒng)管理學(xué)報(bào),2014,23(1):49-61.
[5]王婧,陳旭.考慮期權(quán)合同的生鮮農(nóng)產(chǎn)品批發(fā)商的最優(yōu)訂貨[J].系統(tǒng)工程理論與實(shí)踐,2010,30(12):2 137-2 144.
[6]Johnson R,Hoeller J,Arendsen A.Spring Java/J2EE application Framework[R].2004.
[7]申斌,李利民.基于MVC模式S2SH框架的庫存管理系統(tǒng)[J].實(shí)驗(yàn)室研究與探索,2014,33(11):113-117.
[8]黎吾鑫,王新.基于Extjs+Spring MVC的Web系統(tǒng)框架及應(yīng)用研究[J].云南大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,35(S2):110-115.
[9]廖福保.擴(kuò)展Spring MVC模塊的Web應(yīng)用[J].實(shí)驗(yàn)室研究與探索,2012,31(10):70-73.
[10]高秀慧,高建華.基于J2EE框架的Web應(yīng)用可靠性研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(4):1 270-1 275.
[11]Gary M.Spring recipes:A problem-solution approach[M]. New York:Apress L P,2008.
[12]Wang H T,Jia B X.Research based on Web Development of Spring Integration Framework[A].International Forum on Information Technology and Applications[C].2010.
Establishment of Fresh Farm Produce Supp ly Chain Trade Platform Based on Spring MVC
Liu Ying1,2,Zhai Kaiyun1
(1.School of Management Science&Information Engineering,Jilin University of Finance&Economics,Changchun 130117; 2.Jilin Province University Key Laboratory for Logistics Industrial Economy&Intelligent Logistics,Changchun 130117,China)
In this paper,in view of the business demand of the fresh farm produce supply chain,we proposed the fresh farm produce supply chain trade platform based on the Spring MVC,which is built around the Spring MVC+Mybatis design system as its main framework, uses the layering technology to realize the loose coupling of the objects and deploys the BES as the Web server to improve the stability of the system.
fresh farm produce;trade platform;supply chain;Spring MVC framework;BES
F274;F721.8;U16
A
1005-152X(2016)10-0133-05
10.3969/j.issn.1005-152X.2016.10.031
2016-08-02
國家自然科學(xué)基金(61402193);吉林省教育廳"十二五"科學(xué)技術(shù)研究項(xiàng)目(2015410);物流產(chǎn)業(yè)經(jīng)濟(jì)與智能物流實(shí)驗(yàn)室開放基金(201401);吉林省社會(huì)科學(xué)基金項(xiàng)目(2015BS48)
劉穎(1979-),女,博士,副教授,主要研究方向:計(jì)算智能、物流供應(yīng)鏈管理。