賀建英等
摘 要: 使用SpringMVC作為基礎(chǔ)開發(fā)框架,針對大型數(shù)據(jù)模型的服務(wù)平臺(tái),利用Java反射機(jī)制開發(fā)泛型數(shù)據(jù)持久層和服務(wù)層,大批量簡化這兩層重復(fù)性代碼的編寫,縮短開發(fā)周期,降低BUG出現(xiàn)的概率,提高系統(tǒng)在后期的可維護(hù)性。結(jié)合擁有龐大用戶的微信平臺(tái),利用開放接口服務(wù)(OpenAPI)進(jìn)行二次開發(fā),搭建出為各個(gè)高校服務(wù)的便捷服務(wù)平臺(tái)。
關(guān)鍵詞: SpringMVC; OpenAPI; 泛型框架; 微信公眾服務(wù); 微校城; 便捷服務(wù)
中圖分類號(hào): TN711?34; TP311 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2015)17?0049?04
Construction and implementation of “micro?school city” platform
based on WeChat public platform and OpenAPI
HE Jianying, LI Ruyu, TAN Lin, YANG Xiaoman, QIAO Yunxun
(College of Computer, Sichuan University of Arts and Science, Dazhou 635000, China)
Abstract: Taking SpringMVC as foundation development framework, and on the basis of the service platform of large?scale data model, the generic data persistence layer and service layer were developed by using Java reflection mechanism, which can simplify the compiling of repetitive codes in the two layers, shorten the development cycle and reduce BUG probability, and improve system maintainability in the later. On the basis of WeChat platform with huge users, the open interface (OpenAPI) service is applied to proceeding with secondary development. The convenient service platform was established for all colleges.
Keywords: SpringMVC; OpenAPI; generic framework; WeChat public service; micro?school city; convenient service
0 引 言
目前全國高校共計(jì)有2 198所,在校大學(xué)生人數(shù)逾2 400萬,這些學(xué)生的業(yè)余生活既豐富多彩,又顯得凌亂,無統(tǒng)一的管理平臺(tái),同時(shí)這2 400萬學(xué)生也是一個(gè)龐大的消費(fèi)市場,在《大學(xué)生藍(lán)皮書:中國大學(xué)生生活形態(tài)研究報(bào)告(2013)》中指出,當(dāng)前大學(xué)生的月消費(fèi)已經(jīng)達(dá)到了上千元,一年的消費(fèi)超過了萬元。大學(xué)生的消費(fèi)能力在不斷上升。
以高校學(xué)生的課余生活網(wǎng)絡(luò)服務(wù)平臺(tái)為研究對象,將校內(nèi)社團(tuán)、班級特色展示、便捷生活、校內(nèi)迷你創(chuàng)業(yè)等整合,解決服務(wù)平臺(tái)種類繁多和散亂的弊端,采用J2EE技術(shù),結(jié)合微信公眾平臺(tái)、網(wǎng)絡(luò)爬蟲、數(shù)據(jù)挖掘等技術(shù)進(jìn)行研究和設(shè)計(jì)。本項(xiàng)目的開展,以實(shí)驗(yàn)論證為基礎(chǔ),以計(jì)算機(jī)數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)挖掘等理論為依托,提高軟件在計(jì)算機(jī)和手持設(shè)備上的兼容性為創(chuàng)新,致力于研發(fā)適合為各高校學(xué)生服務(wù)的通用型網(wǎng)絡(luò)平臺(tái),使學(xué)生在不同的終端設(shè)備上更好地享受快捷服務(wù),且本平臺(tái)能產(chǎn)生可觀的經(jīng)濟(jì)效益。
1 底層基礎(chǔ)架構(gòu)(SpringMVC)
SpringMVC框架實(shí)現(xiàn)了Model?View?Controller模式,方便地把數(shù)據(jù)模型、業(yè)務(wù)處理與表示層進(jìn)行分離。從這個(gè)角度來說,SpringMVC和Struts,Struts2非常類似。SpringMVC的設(shè)計(jì)是圍繞DispatcherServlet展開的,DispatcherServlet負(fù)責(zé)將請求派發(fā)到特定的Handler。通過可配置的HandlerMappings,ViewResolution,Locale以及ThemeResolution處理請求并且轉(zhuǎn)到對應(yīng)的視圖。SpringMVC請求處理流程如圖1所示。
圖1中SpringMVC的整體流程是用戶向服務(wù)器發(fā)出請求,被Spring前端控制ServeltDispatcherServlet所捕獲;DispatcherServlet對請求的URL地址進(jìn)行解析,得到相應(yīng)的URI地址,再調(diào)用HandlerMapping獲得Handler配置所有相關(guān)的對象(包括Handler對象及該對象所對應(yīng)的攔截器),最后以HandlerExecutionChain對象的形式返回;DispatcherServlet根據(jù)獲得的Handler,選擇一個(gè)合適的HandlerAdapter;提取Request中的模型數(shù)據(jù),填充Handler入?yún)?,開始執(zhí)行Handler(Controller);Handler執(zhí)行完成后,向DispatcherServlet返回一個(gè)ModelAndView對象;根據(jù)返回的ModelAndView,選擇一個(gè)適合的ViewResolver(必須是已經(jīng)注冊到Spring容器中的ViewResolver)返回給DispatcherServlet;ViewResolver結(jié)合Model和View渲染視圖,將渲染生成的結(jié)果返回到客戶端瀏覽器。
2 使用反射機(jī)制實(shí)現(xiàn)泛型框架
“微校城”便捷服務(wù)平臺(tái)是一個(gè)大型的綜合性業(yè)務(wù)集成服務(wù)平臺(tái),由多個(gè)子系統(tǒng)統(tǒng)一組合而成的門戶型服務(wù)網(wǎng)站,因而其中數(shù)據(jù)模型對象非常繁多。而對數(shù)據(jù)模型的持久化操作(即CRUD操作)大部分代碼基本相同,如果在開發(fā)過程中大量書寫重復(fù)性代碼,將使得開發(fā)效率大幅度下降,程序中的總體出錯(cuò)率上升,系統(tǒng)維護(hù)難度增加等。本平臺(tái)在開發(fā)過程引入反射機(jī)制實(shí)現(xiàn)泛型框架,其過程如圖2所示。
在本系統(tǒng)中,使用反射機(jī)制實(shí)現(xiàn)泛型框架的方式進(jìn)行開發(fā),提高了軟件設(shè)計(jì)的可重復(fù)性復(fù)用。當(dāng)前在國內(nèi)多數(shù)軟件的復(fù)用率并不高,復(fù)用的好處在于可以得到較高的軟件生產(chǎn)效率,降低開發(fā)成本、提高軟件的質(zhì)量以及改善系統(tǒng)的可維護(hù)性,在圖2中A為具體的數(shù)據(jù)模型,即數(shù)據(jù)表對象。
通過Java反射機(jī)制,并結(jié)合設(shè)計(jì)模式中的“抽象工廠模式”,將所有數(shù)據(jù)持久層、服務(wù)層中的基本CRUD操作統(tǒng)一封裝至一個(gè)接口及其實(shí)現(xiàn)類中,作為所有數(shù)據(jù)模型對象的基類,并利用Spring的@Resource注解統(tǒng)一將JdbcTemplate服務(wù)注入該基類中。開發(fā)時(shí),只須簡單的幾行代碼即可將具體數(shù)據(jù)模型的CRUD操作全部注入,無需再重新編寫這部分代碼。
根據(jù)圖2所示,所有數(shù)據(jù)模型都可以按照A.java類的方式類進(jìn)行開發(fā),從而大幅度提高了四個(gè)基類的重復(fù)利用率,減少了數(shù)據(jù)持久層中的所有CRUD操作代碼和服務(wù)層中的所有基本CRUD操作方法。利用以上泛型開發(fā)方式,在本微校城便捷服務(wù)平臺(tái)中減少了至少70%的代碼量的編寫,提高了開發(fā)效率,同時(shí)也降低了系統(tǒng)后期的維護(hù)難度,使開發(fā)人員的開發(fā)重點(diǎn)轉(zhuǎn)移至了業(yè)務(wù)的處理上。
3 開放接口服務(wù)(OpenAPI)
OpenAPI是當(dāng)前比較流行和能有效提高開發(fā)效率的一種典型應(yīng)用。網(wǎng)站服務(wù)提供商將各自的網(wǎng)站服務(wù)封裝成一系列的API 接口開放出去,供第三方開發(fā)者免費(fèi)或者付費(fèi)使用,把他們所開放的API稱作OpenAPI(開放API),一方面由于信息聯(lián)合的需要;另一方面是來自利益驅(qū)動(dòng)使得OpenAPI自然而然的出現(xiàn)了。OpenAPI提供的基本架構(gòu)如圖3所示。
利用OpenAPI提供商提供的接口服務(wù),實(shí)現(xiàn)互聯(lián)網(wǎng)中自定義的個(gè)性化服務(wù),吸引更多的用戶,提高用戶在平臺(tái)的滯留時(shí)間和互動(dòng)程度,同時(shí)利用OpenAPI開發(fā)服務(wù),大幅度降低了開發(fā)成本,縮短了開發(fā)周期,開發(fā)者只需按照給出的開發(fā)規(guī)則,快速而高效地完成復(fù)雜的業(yè)務(wù)處理和開發(fā),這便是OpenAPI發(fā)展最大的引擎動(dòng)力。
對于一個(gè)設(shè)計(jì)比較好的軟件數(shù)據(jù)或服務(wù)平臺(tái),基本都會(huì)存在自己的OpenAPI,這些OpenAPI中有價(jià)值的部分接口被官方開放出來,供第三方開發(fā)者對其進(jìn)行再次開放,從而提高了數(shù)據(jù)和服務(wù)的價(jià)值和重用性。當(dāng)然也有部分OpenAPI卻未被開放出來,但因系統(tǒng)平臺(tái)的原因,這部分接口依然是存在的,當(dāng)需要這部分接口時(shí),即可通過其他方式捕獲這部分?jǐn)?shù)據(jù)接口進(jìn)行更深層次的開發(fā)?;ヂ?lián)網(wǎng)中常見的OpenAPI有:天氣預(yù)報(bào)開放接口、火車余票查詢接口、快遞查詢接口、車輛違章查詢和基站查詢等。
4 微校城服務(wù)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
在現(xiàn)今的微信時(shí)代,要想成為市場上一個(gè)較實(shí)用的系統(tǒng),就必須要有其可取之處。高校便捷模塊作為高校便捷服務(wù)平臺(tái)微校城的核心模塊,主要采用當(dāng)前最為流行的微信公眾平臺(tái)技術(shù)進(jìn)行開發(fā),高校便捷功能模塊淋漓盡致的將其便捷之處表現(xiàn)在手機(jī)微信平臺(tái)的使用上,其主要功能為四六級查詢、火車票查詢、快遞查詢等。每一項(xiàng)都是高校學(xué)生生活中不可缺少的一部分。從另一個(gè)方面來看,在這個(gè)互聯(lián)網(wǎng)時(shí)代,大學(xué)生科技生活也必不可少,然而目前大部分高校并未把移動(dòng)互聯(lián)網(wǎng)技術(shù)使用在學(xué)生的生活中。而在高校便捷服務(wù)的各個(gè)功能,只需要簡單的幾步便可解決學(xué)生貼切的生活問題,當(dāng)然平臺(tái)只是單一的便捷肯定是不具有說服力的,高效便捷服務(wù)最為吸引人的地方便是用最少的流量來完成反復(fù)的功能查詢等,它主要是通過手機(jī)網(wǎng)絡(luò)發(fā)送語音短信、視頻、圖片和文字命令,本系統(tǒng)二次開發(fā)的微信公眾平臺(tái)將根據(jù)命令發(fā)送相應(yīng)的結(jié)果,這樣就避免了傳統(tǒng)的手機(jī)網(wǎng)頁瀏覽,反復(fù)刷新這一過程,大大的節(jié)省了流量。高校便捷模塊作為高校便捷服務(wù)平臺(tái)的核心模塊,也必須具有服務(wù)平臺(tái)的特性,如基于SpringMVC框架靈活性強(qiáng)、良好的可擴(kuò)展性等。可擴(kuò)展性體現(xiàn)在具有操作權(quán)限的用戶可以直接在微信公眾平臺(tái)自定義菜單進(jìn)行模塊式開發(fā),如本平臺(tái)后期開發(fā)的使用手機(jī)實(shí)現(xiàn)命令查詢成績功能,減輕學(xué)校服務(wù)器因龐大的訪問量出現(xiàn)的網(wǎng)絡(luò)堵塞情況。
根據(jù)分析,“微校城”平臺(tái)主要設(shè)計(jì)了快捷生活、校園服務(wù)、高校社團(tuán)、高校交流、校城網(wǎng)購等幾個(gè)功能模塊,如圖4所示。
便捷生活功能主要用于手機(jī)微信平臺(tái),查詢四六級成績,火車票查詢,快遞查詢及招聘信息等的功能實(shí)現(xiàn)。
校園服務(wù)功能為班級和班級中的每個(gè)同學(xué)服務(wù),記錄他們的相關(guān)信息。
高校社團(tuán)模塊主要針對高校社團(tuán)的管理問題,使社團(tuán)的管理和日常工作有一個(gè)公共管理和交流平臺(tái)。
高校交流功能是為滿足各高校學(xué)生注冊到微校城平臺(tái)后能與其他高校的同學(xué)進(jìn)行直接交流,打破緘默和傳統(tǒng)的交流方式。
校城網(wǎng)購功能是為大學(xué)生創(chuàng)業(yè)提供平臺(tái),進(jìn)行實(shí)名制注冊,解決學(xué)校管理難的問題。
當(dāng)然,在微校城平臺(tái)的主要功能模塊中又細(xì)分了子模塊,在此就不再一一講解。
5 微信公眾服務(wù)平臺(tái)
移動(dòng)網(wǎng)絡(luò)正悄然改變和影響著人們的生活方式,如微信的應(yīng)用,使得交流的方式更加便捷。微信主要在手機(jī)上使用,通過微信在網(wǎng)絡(luò)上發(fā)送語音短信、視頻、圖片和文字,另外微信還提供了準(zhǔn)確定位,分享資源等功能。無論是個(gè)人或者企業(yè)都可以在微信平臺(tái)上建立公共交流平臺(tái)。本系統(tǒng)結(jié)合Java版微信公眾服務(wù)平臺(tái),設(shè)計(jì)圖如圖5所示,進(jìn)行設(shè)計(jì)開發(fā)。
微校城的用戶群體為在校大學(xué)生,微信在這個(gè)群體中的普及度和使用度很高,因此在系統(tǒng)中加入微信公眾服務(wù)平臺(tái),更利于本平臺(tái)的應(yīng)用及知名度推廣,從而達(dá)到更大的商業(yè)數(shù)據(jù)。利用以上的原理結(jié)構(gòu)圖,設(shè)計(jì)出高校便捷服務(wù)平臺(tái)的微信公眾服務(wù)端,吸引更多的在校大學(xué)生使用微校城平臺(tái)。
6 總結(jié)與展望
本文重點(diǎn)研究基于微信公眾平臺(tái)和SpringMVC泛型架構(gòu)的高校便捷服務(wù)平臺(tái)(微校城),由于高校大學(xué)生需求越來越多,具有一定特色的問題漸漸開始突出,故構(gòu)建一個(gè)高校便捷服務(wù)平臺(tái)在所難免,通過對高校學(xué)生的調(diào)查與分析,基于微信公眾平臺(tái),能夠使更多用戶參與使用,并且隨著微信的發(fā)展和普及,很大程度上使高校便捷服務(wù)得以宣傳和推廣,而基于SpringMVC的模式下,就開發(fā)者而言,在很大程度上提高了代碼的復(fù)用率,減少了代碼的編寫量,從而實(shí)現(xiàn)項(xiàng)目后期的易維護(hù)性和易擴(kuò)展性等。本平臺(tái)的特色成果主要體現(xiàn)在以下幾點(diǎn):
(1) 通過分析我國互聯(lián)網(wǎng)與微信公眾平臺(tái)的現(xiàn)狀,實(shí)現(xiàn)了基于微信公眾平臺(tái)的高校便捷服務(wù)。
(2) 為了使廣大高校學(xué)生能夠便捷地享受特色化的服務(wù),實(shí)現(xiàn)了一些特色功能,例如:四六級查詢、火車票查詢、快遞查詢等。
(3) 基于SpringMVC泛型架構(gòu),采用此技術(shù)構(gòu)建并實(shí)現(xiàn)了本項(xiàng)目,使項(xiàng)目更可靠,更易維護(hù)、易擴(kuò)展。
(4) 基于用戶的使用群體分析,該項(xiàng)目減少了用戶手機(jī)流量,增加了用戶反復(fù)查詢功能,使用戶有較好的用戶體驗(yàn)。
在接下來的研究工作中,可繼續(xù)對基于微信公眾平臺(tái)和SpringMVC泛型架構(gòu)的高校便捷服務(wù)進(jìn)行功能性的擴(kuò)充,使項(xiàng)目的功能更加完善和豐富。同時(shí)也將對用戶體驗(yàn)部分作出深入的研究,將用戶拉入到研究中來,從而增強(qiáng)項(xiàng)目與用戶之間的交互和互動(dòng),使用戶體驗(yàn)更好,這是以后深入探討的方向。
參考文獻(xiàn)
[1] 張瑞青,李鐵柱.基于SpringMVC的用戶登錄系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].科技信息,2012(10):246?247.
[2] 邵鋼.基于Spring框架的MVC控制器的優(yōu)化與改進(jìn)[D].濟(jì)南:山東大學(xué),2011.
[3] 計(jì)文柯.Spring技術(shù)內(nèi)幕:深入解析Spring架構(gòu)與設(shè)計(jì)原理[M].北京:機(jī)械工業(yè)出版社,2010.
[4] 徐靜.微信對大學(xué)生社交的影響[J].新聞傳播,2013(2):39?40.
[5] 張宇,王映輝,張翔南.基于Spring的MVC框架設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2010,36(4):59?62.
[6] 謝征.官方微信及其在報(bào)刊媒體中的運(yùn)用[J].出版發(fā)行研究,2013(9):72?76.
[7] 苗曉輝.基于J2EE的數(shù)據(jù)持久化的研究和實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2007(5):272?274.
[8] 孟晨,趙春亮,張建國.泛型DAO模式在Java Web開發(fā)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2012(1):175?177.
[9] 李森,馬琰.Java泛型的研究與應(yīng)用[J].硅谷,2008(3):22?23.