基于Android和JavaEE訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
基于Android和JavaEE訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
基于Android和JavaEE訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
基于Android和JavaEE訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
基于Android和JavaEE訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于Android和JavaEE訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)1 引言(Introduction)隨著計(jì)算機(jī)和通信設(shè)備網(wǎng)路技術(shù)的不斷發(fā)展,人們對移動設(shè)備特別是Android移動終端開發(fā)出功能強(qiáng)大、界面美觀且操作簡易的應(yīng)用程序提出了更高的要求【1】。JavaEE是當(dāng)前比較流行的Web服務(wù)應(yīng)用框架【2】,Android移動終端如何與JavaEE服務(wù)器端進(jìn)行數(shù)據(jù)交互成為新的研究熱點(diǎn)【3】。隨著人們工作的繁忙、生活節(jié)奏的加快、有部分人沒有充足的時間到餐館或者酒店就餐,他們希望通過智能手機(jī)在網(wǎng)上進(jìn)行訂餐。如何利用基于Android的智能手機(jī)終端開發(fā)移動App,向顧客提供一種便捷、高效的餐飲服務(wù)具有重要的現(xiàn)實(shí)意義和

2、廣泛的應(yīng)用價值。文獻(xiàn)雖然設(shè)計(jì)并實(shí)現(xiàn)了基于Android平臺的訂餐系統(tǒng),但服務(wù)器端采用普通的Servlet控制器與Android客戶端進(jìn)行數(shù)據(jù)交互,對后期服務(wù)器的擴(kuò)展具有一定的局限性,同時服務(wù)器端與手機(jī)客戶端數(shù)據(jù)交互采用xml文件格式,數(shù)據(jù)傳輸效率有待提高。文獻(xiàn)雖然服務(wù)器端采用的是WebService與手機(jī)客戶端進(jìn)行數(shù)據(jù)交互,但對訂餐后臺管理系統(tǒng)的架構(gòu)研究較少,因此,本文提出并實(shí)現(xiàn)了一種基于Android和JavaEE的手機(jī)訂餐系統(tǒng),服務(wù)器端采用Struts2+Spring4+Hibernate4+DWR整合框架,該整合框架可以提高后臺管理系統(tǒng)的用戶使用體驗(yàn),手機(jī)客戶端與服務(wù)器端的數(shù)據(jù)交互采用J

3、SON格式,可以提高網(wǎng)絡(luò)數(shù)據(jù)的傳輸效率。該系統(tǒng)是對現(xiàn)有訂餐系統(tǒng)的一種補(bǔ)充,對類似系統(tǒng)的開發(fā)具有一定的參考價值。2 系統(tǒng)設(shè)計(jì)(Design of system)2.1 系統(tǒng)功能總體設(shè)計(jì)基于Android和JavaEE的訂餐系統(tǒng)包含基于Android的手機(jī)訂餐模塊和基于JavaEE的訂餐后臺管理模塊?;贏ndroid的手機(jī)訂餐模塊包括顧客登錄和廚師登錄。顧客登錄成功后可以瀏覽菜品、添加購物車、查看我的訂單,以及對菜品進(jìn)行評價。廚師登錄成功后可以瀏覽訂單、修改菜品制作狀態(tài)?;贘avaEE的訂餐后臺管理模塊包括系統(tǒng)管理、菜品類別管理、菜譜管理、訂單管理、菜品留言管理、菜品評價管理和結(jié)算管理等功能。

4、系統(tǒng)總體功能設(shè)計(jì)如圖1所示。2.2 系統(tǒng)架構(gòu)總體設(shè)計(jì)系統(tǒng)架構(gòu)總體設(shè)計(jì)采用Android手機(jī)客戶端訪問JavaEE服務(wù)器端的C/S架構(gòu)與訂餐后臺管理系統(tǒng)通過Web瀏覽器訪問JavaEE服務(wù)器端的B/S架構(gòu)相結(jié)合的架構(gòu)模式,其中,JavaEE服務(wù)器端直接訪問應(yīng)用數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存取,并將數(shù)據(jù)返回給Android手機(jī)客戶端和Web瀏覽器。系統(tǒng)總體架構(gòu)如圖2所示。整個系統(tǒng)的數(shù)據(jù)執(zhí)行流程為服務(wù)器端的訂餐后臺管理系統(tǒng)通過Web瀏覽器向服務(wù)器端請求存取數(shù)據(jù)操作如添加菜品類型和菜譜信息,服務(wù)器端接收請求數(shù)據(jù)后將數(shù)據(jù)存入數(shù)據(jù)庫,并將存入數(shù)據(jù)庫中的數(shù)據(jù)返回服務(wù)器端,服務(wù)器端再將數(shù)據(jù)返回瀏覽器。Android手機(jī)客戶

5、端要顯示菜品信息需要聯(lián)網(wǎng)請求服務(wù)器,服務(wù)器再根據(jù)需求訪問數(shù)據(jù)庫,數(shù)據(jù)庫系統(tǒng)處理完數(shù)據(jù)后將數(shù)據(jù)返回服務(wù)器端,服務(wù)器端將數(shù)據(jù)轉(zhuǎn)換成Json格式后再返回給Android手機(jī)客戶端。從整個系統(tǒng)數(shù)據(jù)流的執(zhí)行過程來看,Android手機(jī)客戶端和Web瀏覽器共用了JavaEE服務(wù)器端從而完成了數(shù)據(jù)的交互。2.3 系統(tǒng)服務(wù)器架構(gòu)設(shè)計(jì)從系統(tǒng)總體設(shè)計(jì)的數(shù)據(jù)流執(zhí)行過程來看,Android手機(jī)客戶端和Web瀏覽器共用了同一個服務(wù)器端,因此服務(wù)器端的架構(gòu)設(shè)計(jì)就顯得尤為重要。在JavaEE平臺下,服務(wù)器端的架構(gòu)大都采用三層架構(gòu),比較典型的框架有采用MVC模式的Jsp+Servlet+JavaBean、Struts+Spr

6、ing+Hibernate(SSH)和Struts2+Spring4+Hibernate4(SSH2)。其中Jsp+Servlet+JavaBean框架雖然采用MVC模式將顯示層、控制層和模型層分開,但由于Servlet和JavaBean負(fù)責(zé)了大量的運(yùn)算和業(yè)務(wù)處理工作,程序處理效率較為低下。SSH框架雖然也將視圖層、控制器與模型的徹底分開,但由于Struts框架存在線程安全、捕獲輸入較難,以及視圖展示都弱于Struts2框架等問題,因此本系統(tǒng)服務(wù)器端的架構(gòu)方案采用SSH2整合框架,整個系統(tǒng)架構(gòu)設(shè)計(jì)如圖3所示。在Struts2+Spring4+Hibernate4整合框架中,Struts2主要用

7、于Web展示和業(yè)務(wù)控制,Spring4主要用于業(yè)務(wù)實(shí)現(xiàn)和事務(wù)管理,而Hibernate4則用于數(shù)據(jù)持久化處理。在Struts2中Web瀏覽器請求服務(wù)器端的JSP頁面,JSP調(diào)用Struts2中的Action完成數(shù)據(jù)的交互,而手機(jī)客戶端則直接調(diào)用Struts2中的Action完成數(shù)據(jù)的交互。不論是Web端的JSP請求Struts2中的Action還是手機(jī)客戶端請求Struts2中的Action,都需要通過Struts.xml配置文件實(shí)現(xiàn)業(yè)務(wù)處理或頁面跳轉(zhuǎn)等動作。Action最終將業(yè)務(wù)層的執(zhí)行結(jié)果返回給Web瀏覽器或者手機(jī)客戶端。Spring4負(fù)責(zé)處理業(yè)務(wù)邏輯及事務(wù)管理,并將Struts2層傳遞過

8、來的數(shù)據(jù)依賴注入到持久層。在持久層中,Hibernate4是一個功能強(qiáng)大的ORM工具,它主要包括對數(shù)據(jù)源的配置、POJO組件以及DAO組件的管理,處理DAO組件的數(shù)據(jù),并將處理結(jié)果返回給業(yè)務(wù)層,業(yè)務(wù)層再將數(shù)據(jù)返回給表示層,最終通過瀏覽器或者手機(jī)客戶端展示數(shù)據(jù)。3 系統(tǒng)實(shí)現(xiàn)(Implementation of system)3.1 訂餐系統(tǒng)服務(wù)器端數(shù)據(jù)封裝在基于JavaEE的訂餐后臺管理系統(tǒng)中,服務(wù)器端數(shù)據(jù)的封裝既可以是JSON數(shù)據(jù)格式也可以是XML數(shù)據(jù)格式,由于JSON數(shù)據(jù)格式封裝的數(shù)據(jù)在網(wǎng)絡(luò)傳輸與解析中優(yōu)于XML數(shù)據(jù),因此在本系統(tǒng)中服務(wù)器端的數(shù)據(jù)采用JSON封裝。JSON即JavaScrip

9、t Object Natation,它主要用于Web服務(wù)器與JavaScript或者手機(jī)客戶端進(jìn)行交互的一種純文本的數(shù)據(jù)處理格式。該數(shù)據(jù)處理格式既可以處理字符串類型、數(shù)字類型、布爾類型、數(shù)組類型,也可以處理對象。在項(xiàng)目開發(fā)中,可以將字符串String、Object對象、JavaBean對象、List集合、數(shù)組對象、Map集合、Set集合等按照一定的算法封裝成JSON格式的數(shù)據(jù)。在本系統(tǒng)開發(fā)中,服務(wù)器首先從數(shù)據(jù)庫服務(wù)器獲取數(shù)據(jù),然后將數(shù)據(jù)存入List集合中,再將List集合中的數(shù)據(jù)封裝成JSON數(shù)據(jù)格式,List集合數(shù)據(jù)封裝成JSON格式數(shù)據(jù)的主要實(shí)現(xiàn)代碼如下:public static Str

10、ing getJson(ListfoodList) StringBuffer stringBuffer=new StringBuffer();/創(chuàng)建可改變的字符串對象stringBuffer/向stringBuffer對象中追加數(shù)據(jù)stringBuffer.append();stringBuffer.append(showGoodsList:);stringBuffer.append(´);stringBuffer.append();else stringBuffer.append();return stringBuffer.toString();在上述算法中,需要首先通過

11、菜品信息管理界面將菜品信息添加到數(shù)據(jù)庫中,然后Android客戶端在訪問菜品信息時再從數(shù)據(jù)庫中按照一定的條件查詢出數(shù)據(jù),再將查詢出來的數(shù)據(jù)封裝到List集合中,再將封裝好的List集合數(shù)據(jù)采用本算法封裝成JSON數(shù)據(jù)格式,并將該格式數(shù)據(jù)傳遞給Android客戶端。3.2 訂餐系統(tǒng)客戶端數(shù)據(jù)解析在Android應(yīng)用系統(tǒng)開發(fā)中,Android客戶端經(jīng)常與服務(wù)器端進(jìn)行數(shù)據(jù)通信。由于在本系統(tǒng)中服務(wù)器端的數(shù)據(jù)都是封裝成JSON格式的數(shù)據(jù),因此在Android手機(jī)客戶端解析JSON數(shù)據(jù)就顯得尤為重要。在Android客戶端解析用List類型封裝的JSON格式的數(shù)據(jù)代碼實(shí)現(xiàn)如下:public Listget

12、FoodList() List foods=new ArrayList();/定義封裝菜品的集合對象String url=path+showFoodList.action;/客戶端請求服務(wù)器端的url地址String str=connWeb(url);/客戶端請求服務(wù)器端,并返回具有JSON格式的字符串try JSONObjectfoodjob=new JSONObject(str);/對返回的JSON格式的字符串封裝成JSONObject對象JSONArray foodjay=foodjob.getJSONArray(showGoodsList);/調(diào)用getJSONArray得到Json數(shù)

13、組對象int i=0;int length=foodjay.length();while(iJSONObject temp=(JSONObject) foodjay.get(i);/取出json中的每一個數(shù)組對象Food food=new Food();/取出json中對應(yīng)的值并存放入food對象 food.setFprice(temp.getInt(fprice); food.setFoodName(temp.getString(foodName);food.setFcount(temp.getInt(fcount);foods.add(food);/將food對象放入food集合中i=i+

14、1; catch(Exception e) e.printStackTrace();return foods;通過上述Android客戶端解析用List類型封裝的JSON格式數(shù)據(jù)后,將得到的List類型數(shù)據(jù)通過SimpleAdapter適配器將數(shù)據(jù)映射到Android XML文件上,得到菜品數(shù)據(jù)列表。3.3 SSH2+DWR整合框架應(yīng)用在基于JavaEE的訂餐后臺管理系統(tǒng)中,Web頁面經(jīng)常要與服務(wù)器端進(jìn)行數(shù)據(jù)交互,而大多數(shù)Web頁面希望與服務(wù)器進(jìn)行數(shù)據(jù)交換時只能局部刷新頁面,這樣能提高用戶的使用體驗(yàn),而要實(shí)現(xiàn)Web頁面局部刷新,可以采用Ajax框架,而Ajax框架有很多,如Extjs、Gwt、

15、Dwr、JQuery等,其中DWR(Direct Web Remoting)是Getahead推出的基于java的Ajax框架,它能夠?qū)⒎?wù)器端的java代碼轉(zhuǎn)換成JavaScript中引用的對象,從而簡化客戶端javaScript的編程。為了提高Web頁面中Javascript編程效率,本系統(tǒng)采用DWR框架與SSH2框架整合應(yīng)用實(shí)現(xiàn)后臺管理系統(tǒng)功能,其整合步驟如下:(1)在web.xml文件中配置DwrServlet來加載DWR框架,部分代碼如下:dwrorg.directwebremoting.servlet.DwrServlet.(2)在WEB-INF工程下面創(chuàng)建dwr.xml文件,在該

16、文件中通過creator屬性定義服務(wù)器端的java類的產(chǎn)生方式。如果creator=new,則直接調(diào)用普通的類,如果creator=spring,則通過Spring文件中的bean組件找到需要調(diào)用的java類,并將該java類生成javaScript代碼供jsp調(diào)用。在本系統(tǒng)中dwr采用Spring文件的方式將java類生成javaScript的部分代碼如下:/定義調(diào)用bean的id值為duser /定義調(diào)用java類中的getUser方法 在該代碼中,spring文件中bean組件所對應(yīng)的代碼為:而UserServiceImpl所對應(yīng)的java類代碼如下:public class UserS

17、ervice Implimplements IUserServicepublic String getUser(String name)/該方法也就是javascript調(diào)用的方法.在jsp中要用dwr框架來調(diào)用服務(wù)器端產(chǎn)生的javaScript代碼,需要在jsp中導(dǎo)入DWR核心庫文件util.js、engine.js,以及動態(tài)生成的js庫文件DWRUser.js。Jsp中通過DWR調(diào)用java類中的方法的部分代碼如下:function checkUser()DWRUser.getUser(lgt,callBack);/調(diào)用UserServiceImpl中的getUser方法function

18、callBack(data).4 結(jié)論(Conclusion)本文提出了基于Android和JavaEE訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),整個系統(tǒng)由Android手機(jī)客戶端、JavaEE服務(wù)器端和數(shù)據(jù)庫三部分組成。JavaEE服務(wù)器端采用SSH2整合框架將服務(wù)器端的架構(gòu)分為展示層、業(yè)務(wù)邏輯層以及數(shù)據(jù)持久層,這樣不僅降低了各個模塊數(shù)據(jù)之間的依賴性,而且還提高了系統(tǒng)的可擴(kuò)展性與可重用性。Struts2+Spring4+Hibernate4框架整合Ajax框架DWR,提高了客戶端javascript編程效率,增強(qiáng)了后臺管理系統(tǒng)用戶使用體驗(yàn)。Android手機(jī)客戶端與JavaEE服務(wù)器端采用JSON數(shù)據(jù)格式進(jìn)行數(shù)

19、據(jù)通信的方法提高了網(wǎng)絡(luò)數(shù)據(jù)的傳輸效率。因此整個系統(tǒng)的架構(gòu)方案與開發(fā)方法對其他類似系統(tǒng)的設(shè)計(jì)與開發(fā)具有一定的參考價值。參考文獻(xiàn)(References)【1】 Xinjun Xu,Liu Yue,Du Cui.Design and Implementation of Personnel Location System Based on Android.Proceedings of 2014 International Conference on Advances in Materials Science and Information Technologies in Industry(AMSITI 2014).Applied Mechanics and Materials,2014:1038-1041.【2】 Zhenwu Wang.A Rapid Development Framework of Enterprise Information System Based on Components and JavaEE.Computer Science and its Applications:Ubiquitous Information Technologies,6th FTRA International Conference on Comp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論