蔡群英
摘要:通過分析Android的技術(shù)體系和流行的JAVA EE服務(wù)器端SSH框架,給出了Android客戶端與服務(wù)器端的數(shù)據(jù)交互方式。
關(guān)鍵詞:移動互聯(lián)網(wǎng);Android客戶端;服務(wù)器端;SSH;數(shù)據(jù)交互
中圖分類號:TP393? ? ? ?文獻標識碼:A
文章編號:1009-3044(2020)16-0055-02
Abstract:Through the analysis of Android technology architecture and popular Java EE server-side SSH frame, the data interaction mode between Android client and server-side is given.
Key words:mobile Internet; Android client; server-side; SSH; data interaction
1引言
手機作為移動互聯(lián)網(wǎng)的終端,相比較原來的計算機終端,Android有其內(nèi)存少,運行速度慢等特點,要求網(wǎng)絡(luò)傳輸數(shù)據(jù)量小,開發(fā)以手機為終端的移動互聯(lián)網(wǎng)項目,需要解決的關(guān)鍵技術(shù)就是智能終端如何與服務(wù)器端進行數(shù)據(jù)交互,本文就此方面展開介紹。
2 Android與SSH
2.1 Android的技術(shù)體系
Android是Google公司于2007年11月發(fā)布的基于Linux平臺的開源手機操作系統(tǒng),基于Linux技術(shù),由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。Android的體系結(jié)構(gòu)是由五大部分組成:Linux內(nèi)核、Android Runtime、Libraries、Application Framework和Application。在Android的Android Runtime中,提供了大部分java語言核心庫的功能,系統(tǒng)支持的運用一般都是使用java語言并基于Android SDK進行開發(fā),而對于那些大規(guī)模運算和執(zhí)行效率要求高的應(yīng)用,使用c/c++語言來開發(fā),開發(fā)完成后編譯生成類庫添加到應(yīng)用中,但整個應(yīng)用程序如界面繪制、進度調(diào)試等核心機制都是部署到框架層通過java來實現(xiàn)[1]。
Android應(yīng)用程序的組件有四種類型:Activity組件、Intent組件、Service組件和用戶界面。用戶界面和控制是分離的,用戶界面是一個xml文件,activity是用于控制用戶界面的,使之與系統(tǒng)進行交互,每一個用戶界面,都需要編寫與之對應(yīng)的activity程序,要從一個用戶界面進入另一個界面,通過調(diào)用activity的startActivity()方法來實現(xiàn)。AndroidMainfesg.xml是整個Android應(yīng)用程序的配置文件,在這里對Activity、Intent、Service等組件進行配置,并進行應(yīng)用程序的權(quán)限聲明。
2.2 SSH
JAVA EE是JAVA語言體系中的三大技術(shù)平臺之一,用于開發(fā)企業(yè)級的應(yīng)用程序。在移動互聯(lián)網(wǎng)時代,很多web應(yīng)用項目的客戶端都同時部署到Android平臺上,并使用JAVA EE搭建服務(wù)器端。在JAVA EE的體系結(jié)構(gòu)中,SSH(Struts2、Hibernate和Spring)是一個流行的輕量級框架組合。
3 Android客戶端與服務(wù)器端的數(shù)據(jù)交互
3.1什么是JSON
JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,采用完全獨立于編程語言的文本格式,是目前比較流行的數(shù)據(jù)交換語言,在網(wǎng)絡(luò)數(shù)據(jù)傳輸中應(yīng)用非常廣泛。JSON中對象以“{”開始,以“}”結(jié)束,對象中的每一個item都是一個鍵值對,表現(xiàn)為“key:value”的形式,鍵值對之間使用逗號分隔。以對象address用JSON格式來表示為例,{“city”:”chaozhou”,”street”:”xiyang road”,”zip”:521000}
JSON相比較XML,更適合處理格式簡單的數(shù)據(jù),JSON傳輸數(shù)據(jù)不需要將數(shù)據(jù)保存為一個獨立的文件,直接編寫成字符串就可以,并且通常傳輸?shù)臄?shù)據(jù)是有規(guī)則的數(shù)據(jù),具有一定的結(jié)構(gòu)的,符合JSON數(shù)據(jù)解析的特點。
3.2解析服務(wù)器端返回的JSON數(shù)據(jù)
從服務(wù)器端響應(yīng)過來的數(shù)據(jù)是JSON格式的,需要在客戶端進行解析,然后將解析后的內(nèi)容顯示在智能終端的界面上[2]。Android自帶JSON處理,通過org.json包進行解析,主要有JSONObject類、JSONStringer類和JSONArray類。解析時服務(wù)器端返回的字符串作為JSONArray的參數(shù),通過循環(huán),將字符串中的每個對象讀取出來,保存在JSONObject對象中。通過JSONObject對象的getString()方法取得每個鍵值。
3.3 SSH架構(gòu)的客戶端與服務(wù)器端的數(shù)據(jù)交互
整個WEB應(yīng)用程序采用MVC的設(shè)計模式,M是模型;V是視圖,由Android客戶端的界面來實現(xiàn);C是控制器,由action來實現(xiàn)。分為表現(xiàn)層、控制層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。表現(xiàn)層由Struts2框架實現(xiàn),業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層的組件交給Spring框架來管理,通過Hibernate實現(xiàn)對象關(guān)系映射,將數(shù)據(jù)訪問層對表的操作映射為對對象的操作。
在Struts2框架中,服務(wù)器端向客戶端傳送數(shù)據(jù),是使用Struts2的JSON數(shù)據(jù)封裝功能自動將對象封裝并返回JSON數(shù)據(jù);而客戶端向服務(wù)器端傳送數(shù)據(jù),是將JSON轉(zhuǎn)換成對象。
以查詢所有用戶為例,包括登錄界面main.xml和顯示所有用戶界面showAllUser.xml,分別對應(yīng)兩個程序來處理:MainActivity.java和ShowAllUserActivity.java,由Activity來處理與服務(wù)器端的action進行交互。
登錄界面main.xml,相應(yīng)的處理程序是MainActivity.java,由MainActivity.java訪問服務(wù)器端的login.action,并傳遞了兩個參數(shù)username和password,由login.action執(zhí)行了之后,判斷如果有返回值,并且等于“1”,表示登錄成功,接著跳轉(zhuǎn)到showAllUserActivity.java程序,在ShowAllUserActivity.java程序控制訪問服務(wù)器端的showallUser_Android( ),查詢所有用戶,返回結(jié)果all,是List
在struts.xml文件中,設(shè)置返回的類型是“json”,則在服務(wù)器端將all封裝為JSON數(shù)據(jù),在Android客戶端的showAllUserActivity.java程序中取得返回值json數(shù)據(jù),按json的格式,讀取出每個對象,顯示在界面上showAllUser.xml。
4總結(jié)
本文簡單地介紹移動互聯(lián)網(wǎng)中Android客戶端與服務(wù)器端的數(shù)據(jù)交互,通過使用JSON進行數(shù)據(jù)交互,能夠提高系統(tǒng)的信息傳輸效率。
參考文獻:
[1] 胡文發(fā),白中英.基于J2ME/J2EE的JSON數(shù)據(jù)交換的探討[J].電子設(shè)計工程,2009,17(12):102-103.
[2] 樊紅林.Android平臺與SSH2的通信[J].電腦知識與技術(shù),2015,11(13):35,37.
【通聯(lián)編輯:王力】