劉萍
摘 要:隨著移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展,以及Android系統(tǒng)的智能手機(jī)在大學(xué)生中的普及,為了豐富大學(xué)生活,設(shè)計(jì)并實(shí)現(xiàn)了基于Android的校園服務(wù)平臺(tái)。按照軟件開發(fā)流程,對(duì)該平臺(tái)進(jìn)行需求分析、功能模塊設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì),最終編碼實(shí)現(xiàn),給出了實(shí)現(xiàn)過程中的系統(tǒng)架構(gòu)和關(guān)鍵技術(shù),以及Android客戶端和基于SSH框架的服務(wù)器端的運(yùn)行效果。
關(guān)鍵詞:Android;校園服務(wù)平臺(tái);SSH框架
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A
Abstract:With the rapid development of mobile internet,popularization and the android system of smart phones in college students,in order to enrich university life,the design and implementation of campus service platform based on the android.According to the software development process,the demand analysis,the platform function module design,database design,code realization are given.Finally,the implementation process of the system architecture and the key technology and the android client and SSH server running effect are given.
Keywords:android;campus service platform;SSH framework
1 引言(Introduction)
隨著智能手機(jī)在高校的普及以及3G/4G/無線網(wǎng)絡(luò)的覆蓋,學(xué)生更多地希望通過移動(dòng)終端,充分利用碎片化的時(shí)間隨時(shí)、隨地獲取信息[1]。目前基于Android平臺(tái)的手機(jī)在大學(xué)生中的普及率達(dá)到80%以上,為了豐富大學(xué)生在校生活,使得學(xué)生隨時(shí)隨地獲取信息,本文設(shè)計(jì)并實(shí)現(xiàn)了基于Android平臺(tái)的校園服務(wù)平臺(tái),通過該平臺(tái)的使用,可以促進(jìn)在全校范圍內(nèi)廣泛開展更多有意義的活動(dòng),并給學(xué)生的生活帶來便利。
2 需求分析與功能模塊設(shè)計(jì)(The demand analysis and function modules design)
為了使大學(xué)生可以利用碎片化的時(shí)間加強(qiáng)溝通交流,學(xué)生們?cè)谑謾C(jī)上安裝校園服務(wù)平臺(tái)的客戶端就可以進(jìn)行點(diǎn)餐、二手交易、論壇發(fā)帖、活動(dòng)發(fā)布等。該平臺(tái)分為兩大塊,第一大塊是后臺(tái)管理,這塊的使用者是系統(tǒng)管理員,登錄以后可以進(jìn)行系統(tǒng)角色管理、帖子分類管理、活動(dòng)分類管理、商品分類管理、用戶管理、店鋪管理、商品管理、帖子管理、交易管理、活動(dòng)管理等操作。
第二大塊是基于Android客戶端的開發(fā),該塊是提供給用戶進(jìn)行操作的,用戶在Android端可以進(jìn)行點(diǎn)餐,二手物品的交易,論壇的發(fā)帖和回復(fù),以及活動(dòng)的發(fā)布,而商家則可以在Android端進(jìn)行訂單的處理,讓用戶及時(shí)了解自己所訂餐的狀態(tài)。
3 數(shù)據(jù)庫設(shè)計(jì)(Database design)
根據(jù)系統(tǒng)的需求分析以及功能模塊設(shè)計(jì),我們完成了校園服務(wù)平臺(tái)的數(shù)據(jù)庫設(shè)計(jì),共設(shè)計(jì)了以下14張表:活動(dòng)信息表、活動(dòng)分類信息表、管理員信息表、商品信息表、商品分類表、權(quán)限信息表、訂購信息表、訂單信息表、帖子信息表、帖子分類信息表、回復(fù)信息表、店鋪信息表、交易信息表、用戶信息表。
4 平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)(Design and implementation of platform)
本項(xiàng)目客戶端基于Android平臺(tái)開發(fā),采用主流的Android SDK API-19(Android 4.3版本)進(jìn)行開發(fā)[2]。
服務(wù)器端本著最高限度降低程序模塊之間的耦合性,便于將來的維護(hù),采用JavaEE企業(yè)級(jí)應(yīng)用開發(fā)框架SSH(Struts+Spring+Hibernate)進(jìn)行開發(fā)[3]。整個(gè)平臺(tái)的系統(tǒng)架構(gòu)如圖1所示。
4.1 關(guān)鍵技術(shù)
實(shí)現(xiàn)校園服務(wù)平臺(tái)的過程中,主要使用以下技術(shù):
(1)Android端網(wǎng)絡(luò)請(qǐng)求及數(shù)據(jù)綁定:Android 3.0之后,所有網(wǎng)絡(luò)請(qǐng)求獲取數(shù)據(jù)等一系列的耗時(shí)操作不允許在主線程中進(jìn)行。我們要將所有的網(wǎng)絡(luò)操作轉(zhuǎn)移到子線程中進(jìn)行,但在子線程中是不允許對(duì)主線程中創(chuàng)建的組件進(jìn)行相關(guān)操作的。因此在處理網(wǎng)絡(luò)請(qǐng)求時(shí),創(chuàng)建線程,并在請(qǐng)求完成之后,通過消息隊(duì)列的方式將數(shù)據(jù)傳遞給主線程,再由主線程將數(shù)據(jù)綁定到相應(yīng)的控件上。
(2)遠(yuǎn)程獲取數(shù)據(jù)對(duì)象:Android和Web服務(wù)器端交互使用Apache Tomcat服務(wù)器進(jìn)行,借助Wifi,將Android手機(jī)的網(wǎng)絡(luò)IP和服務(wù)器的IP設(shè)置在同一網(wǎng)段,通過HTTP協(xié)議,客戶端通過發(fā)送網(wǎng)絡(luò)請(qǐng)求進(jìn)行數(shù)據(jù)的獲取,服務(wù)器端則將客戶端請(qǐng)求的數(shù)據(jù)以數(shù)據(jù)流的形式遠(yuǎn)程發(fā)送到手機(jī)App端。在服務(wù)器與客戶端進(jìn)行交互的過程中,如何實(shí)現(xiàn)將對(duì)象信息轉(zhuǎn)換成數(shù)據(jù)流傳遞是一個(gè)非常關(guān)鍵的問題。當(dāng)前對(duì)象的遠(yuǎn)程發(fā)送較為流行且高效的是根據(jù)對(duì)象的設(shè)計(jì)將對(duì)象信息序列化為JSON對(duì)象進(jìn)行傳輸,為了在發(fā)送數(shù)據(jù)和接收數(shù)據(jù)時(shí)對(duì)相關(guān)數(shù)據(jù)進(jìn)行轉(zhuǎn)化,我們采用了Google官方提供的Gson工具包進(jìn)行對(duì)象的序列化和反序列化。
(3)數(shù)據(jù)持久化:當(dāng)前,B/S架構(gòu)的軟件無一不牽扯到數(shù)據(jù)存儲(chǔ)的問題,即數(shù)據(jù)持久化。在系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)中,數(shù)據(jù)表之間的外鍵關(guān)系出現(xiàn)頻率相當(dāng)高,這就給數(shù)據(jù)封裝對(duì)象的設(shè)計(jì)帶來了一定的難度。我們使用Hibernate框架中的ORM(對(duì)象關(guān)系映射)特性,將數(shù)據(jù)封裝成的對(duì)象和數(shù)據(jù)表進(jìn)行一一對(duì)應(yīng),并使用其特有的HQL(Hibernate Query Language)進(jìn)行數(shù)據(jù)的查詢和寫入工作。
(4)業(yè)務(wù)邏輯處理及數(shù)據(jù)綁定:使用Struts2框架,通過對(duì)網(wǎng)絡(luò)請(qǐng)求的攔截進(jìn)行相應(yīng)的業(yè)務(wù)處理。在Action中調(diào)用DAO(Data Access Object,數(shù)據(jù)訪問對(duì)象)獲取相應(yīng)數(shù)據(jù),經(jīng)邏輯處理后,通過Struts的自動(dòng)傳值特性將處理后的數(shù)據(jù)放到相應(yīng)的對(duì)象中,JSP頁面使用JSTL標(biāo)準(zhǔn)標(biāo)簽庫中的邏輯標(biāo)簽和EL表達(dá)式進(jìn)行頁面數(shù)據(jù)的綁定輸出。
(5)服務(wù)器端系統(tǒng)的整合:同時(shí)使用Hibernate和Struts框架會(huì)產(chǎn)生大量的對(duì)象創(chuàng)建操作,如果對(duì)象的管理不當(dāng),很容易造成內(nèi)存溢出現(xiàn)象,而且DAO層和業(yè)務(wù)邏輯層之間的耦合性較大,針對(duì)這一現(xiàn)象,使用Spring框架對(duì)整個(gè)服務(wù)器端的系統(tǒng)進(jìn)行整合,利用Spring的IOC(Inversion of Control,控制反轉(zhuǎn))特性,將所有需用到的對(duì)象托管到Spring中進(jìn)行管理,需要使用對(duì)象時(shí),直接從對(duì)應(yīng)的對(duì)象池中獲取需要的對(duì)象進(jìn)行使用。這樣對(duì)于對(duì)象內(nèi)存的使用進(jìn)行了優(yōu)化。而且Spring的AOP(Aspect Oriented Programming,面向切面編程)也為之后對(duì)系統(tǒng)的維護(hù)做了準(zhǔn)備。
4.2 實(shí)現(xiàn)效果
本軟件Android客戶端包含四大模塊:快捷點(diǎn)餐模塊、二手交易模塊、校園論壇模塊、活動(dòng)發(fā)布模塊。Android客戶端實(shí)現(xiàn)效果如圖2所示?;赟SH框架開發(fā)的服務(wù)器端實(shí)現(xiàn)效果如圖3所示。
5 結(jié)論(Conclusion)
本文對(duì)基于Android的校園服務(wù)平臺(tái),進(jìn)行了需求分析和功能模塊設(shè)計(jì),并設(shè)計(jì)了該平臺(tái)的數(shù)據(jù)庫,在設(shè)計(jì)并實(shí)現(xiàn)該平臺(tái)的過程中給出了系統(tǒng)的架構(gòu)圖,闡述了實(shí)現(xiàn)該平臺(tái)過程中的若干關(guān)鍵技術(shù),最終給出了校園服務(wù)平臺(tái)的客戶端和服務(wù)器端的運(yùn)行效果,該系統(tǒng)通過在某職業(yè)技術(shù)學(xué)院試運(yùn)行,效果良好,該平臺(tái)唯一的不足是二手交易模塊不能在線支付,只能線下交易,后期會(huì)進(jìn)一步改進(jìn)。
參考文獻(xiàn)(References)
[1] 茅志剛.基于移動(dòng)互聯(lián)網(wǎng)的智慧校園服務(wù)平臺(tái)的研究與實(shí)現(xiàn)[D].杭州:杭州電子科技大學(xué)碩士學(xué)位論文,2013.
[2] 董濤.基于Android的移動(dòng)校園客戶端設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué)碩士學(xué)位論文,2014.
[3] 李寧寧,王遠(yuǎn)飛,張冉.基于Android的校園應(yīng)用軟件開發(fā)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2014,22(20):111-117.
作者簡(jiǎn)介:
劉 萍(1982-),女,碩士,講師.研究領(lǐng)域:軟件工程,系統(tǒng)集成.