Android平臺(tái)應(yīng)用軟件開(kāi)發(fā)課件:Android中的網(wǎng)絡(luò)訪問(wèn)_第1頁(yè)
Android平臺(tái)應(yīng)用軟件開(kāi)發(fā)課件:Android中的網(wǎng)絡(luò)訪問(wèn)_第2頁(yè)
Android平臺(tái)應(yīng)用軟件開(kāi)發(fā)課件:Android中的網(wǎng)絡(luò)訪問(wèn)_第3頁(yè)
Android平臺(tái)應(yīng)用軟件開(kāi)發(fā)課件:Android中的網(wǎng)絡(luò)訪問(wèn)_第4頁(yè)
Android平臺(tái)應(yīng)用軟件開(kāi)發(fā)課件:Android中的網(wǎng)絡(luò)訪問(wèn)_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Android中的網(wǎng)絡(luò)訪問(wèn)8.1在Eclipse上搭建服務(wù)器8.2Android利用HttpURLConnection?訪問(wèn)網(wǎng)絡(luò)8.3Android利用HttpClient訪問(wèn)網(wǎng)絡(luò)8.4Android從服務(wù)器下載文件8.5xml的生成與解析8.6JSON的生成與解析8.7服務(wù)器與數(shù)據(jù)庫(kù)的通信8.8本章項(xiàng)目實(shí)戰(zhàn)

8.1在Eclipse上搭建服務(wù)器

8.1.1搭建服務(wù)器環(huán)境工具介紹Tomcat是Apache軟件基金會(huì)Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun和其他一些公司及個(gè)人共同開(kāi)發(fā)而成。

8.1.2工具軟件的安裝

1.Tomcat的安裝

從“開(kāi)發(fā)所需工具”中找到安裝軟件apache-tomcat-8.0.24-windows-x64.zip壓縮文件,解壓縮里面的文件到E盤。

2.Tomcat環(huán)境變量的配置

右鍵“我的電腦”→“屬性”→“高級(jí)系統(tǒng)設(shè)置”,切換到高級(jí)選項(xiàng)卡,點(diǎn)擊“環(huán)境變量”,如圖8-1所示。圖8-1環(huán)境變量界面

點(diǎn)擊“Administrator的用戶變量”一欄的“新建”,在變量名一欄輸入“CATALINA_HOME”,在變量值一欄輸入“E:\apache-tomcat-8.0.24\bin”,如圖8-2所示,點(diǎn)擊“確定”,這樣,Tomcat的環(huán)境變量就配置好了。圖8-2新建用戶變量界面

8.1.3搭建服務(wù)器

在Eclipse工作窗口的右上角區(qū)域,找到“OpenPerspective”按鈕,點(diǎn)擊打開(kāi)OpenPerspective窗口,選擇“JavaEE”,點(diǎn)擊“OK”,如圖8-3所示。

圖8-3選擇JavaEE界面

在ProjectExplorer一欄,單擊鼠標(biāo)右鍵,選擇new→DynamicWebProject,彈出如圖8-4所示的界面。圖8-4選擇Tomcat安裝路徑

在ProjectName一欄輸入服務(wù)器的名稱,比如輸入“MyServer”,Targetruntime一欄選擇要配置的服務(wù)器,點(diǎn)擊“NewRuntime”按鈕,在彈出的窗口中選擇“ApacheTomcatv8.0”,點(diǎn)擊“Next”,彈出圖8-5所示的界面。圖8-5RunOnServer窗口

8.2Android利用HttpURLConnection訪問(wèn)網(wǎng)絡(luò)

8.2.1HttpURLConnection介紹隨著智能手機(jī)和平板電腦等移動(dòng)終端設(shè)備的迅速發(fā)展,現(xiàn)在的Internet已經(jīng)不再只是傳統(tǒng)的有線互聯(lián)網(wǎng),還包括移動(dòng)互聯(lián)網(wǎng)。同有線互聯(lián)網(wǎng)一樣,移動(dòng)互聯(lián)網(wǎng)也可以使用HTTP訪問(wèn)網(wǎng)絡(luò)。在Android中,針對(duì)HTTP進(jìn)行網(wǎng)絡(luò)通信的方法主要有兩種:一種是使用HttpURLConnection實(shí)現(xiàn);另一種是使用HttpClient實(shí)現(xiàn)。

8.2.2HttpURLConnection的使用方法

1.HttpURLConnection連接URL

(1)創(chuàng)建一個(gè)URL對(duì)象。

URLurl=newURL();

(2)利用HttpURLConnection對(duì)象從網(wǎng)絡(luò)中獲取網(wǎng)頁(yè)數(shù)據(jù)。

HttpURLConnectionconn=(HttpURLConnection)url.openConnection();

(3)設(shè)置連接超時(shí)。

conn.setConnectTimeout(6*1000);

(4)對(duì)響應(yīng)碼進(jìn)行判斷。

if(conn.getResponseCode()!=200)//從Internet獲取網(wǎng)頁(yè),發(fā)送請(qǐng)求,將網(wǎng)頁(yè)以流的形式讀回來(lái)

thrownewRuntimeException("請(qǐng)求url失敗");

(5)得到網(wǎng)絡(luò)返回的輸入流。

InputStreamis=conn.getInputStream();

(6)?Stringresult=readData(is,"GBK"); //文件流輸入出文件用outStream.write

(7)?conn.disconnect();

總結(jié):

①記得設(shè)置連接超時(shí),如果網(wǎng)絡(luò)不好,Android系統(tǒng)在超過(guò)默認(rèn)時(shí)間會(huì)收回資源中斷操作。

②返回的響應(yīng)碼若為200,則成功。

③在Android中對(duì)文件流的操作和JAVASE上面是一樣的。

④在對(duì)大文件操作時(shí),要將文件寫到SDCard上面,不要直接寫到手機(jī)內(nèi)存上。

⑤對(duì)文件流操作完,要記得及時(shí)關(guān)閉。

2.向Internet發(fā)送請(qǐng)求參數(shù)

向Internet發(fā)送請(qǐng)求參數(shù)的步驟如下:

(1)創(chuàng)建URL對(duì)象:

URLrealUrl=newURL(requestUrl);

(2)通過(guò)HttpURLConnection對(duì)象,向網(wǎng)絡(luò)地址發(fā)送請(qǐng)求:

HttpURLConnectionconn=(HttpURLConnection)realUrl.openConnection();

(3)設(shè)置允許輸出:

conn.setDoOutput(true);

(4)設(shè)置不使用緩存:

conn.setUseCaches(false);

(5)設(shè)置使用POST的方式發(fā)送:

conn.setRequestMethod("POST");

(6)設(shè)置維持長(zhǎng)連接:

conn.setRequestProperty("Connection","Keep-Alive");

(7)設(shè)置文件字符集:

conn.setRequestProperty("Charset","UTF-8");

(8)設(shè)置文件長(zhǎng)度:

conn.setRequestProperty("Content-Length",String.valueOf(data.length));

(9)設(shè)置文件類型:

conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

(10)以流的方式輸出。

8.2.3使用HttpURLConnection訪問(wèn)服務(wù)器

在8.1.3中搭建好的“MyServer”服務(wù)器中,依次展開(kāi)“MyServer”→“JavaResources”,在src目錄上單擊右鍵,選擇“new”→“Servlet”,在彈出的窗口中,在“Classname”一欄中輸入要新建的Servlet的名字,比如輸入“MyServlet”,這樣,一個(gè)Servlet就新建好了,接下來(lái)我們要運(yùn)行服務(wù)器,在“MyServer”項(xiàng)目上單擊右鍵,選擇“Runas”單擊右鍵“RunOnServer”,服務(wù)器的運(yùn)行就大功告成了,我們還要修改“MyServlet”里的“doGet”方法:

在訪問(wèn)網(wǎng)絡(luò)的點(diǎn)擊事件中,服務(wù)器的地址通過(guò)getInfoFromServlet(path)傳進(jìn)去,然后通過(guò)newURL(path)構(gòu)建一個(gè)URL對(duì)象,之后通過(guò)url.openConnection()建立一個(gè)連接,通過(guò)con.getInputStream()得到輸入流,然后通過(guò)讀寫這個(gè)輸入流,最終得到我們需要的字符串

結(jié)果。

8.3Android利用HttpClient訪問(wèn)網(wǎng)絡(luò)

8.3.1HttpClient的介紹在Android開(kāi)發(fā)中,AndroidSDK附帶了Apache的HttpClient。HttpClient是一個(gè)完善的客戶端,提供了對(duì)HTTP協(xié)議的全面支持,可以使用HttpClient的對(duì)象來(lái)執(zhí)行HTTPGET和HTTPPOST調(diào)用。

HTTP工作原理:

(1)客戶端(一般是指瀏覽器,這里是指自己寫的程序)與服務(wù)器建立連接;

(2)建立連接后,客戶端向服務(wù)器發(fā)送請(qǐng)求;

(3)服務(wù)器接收到請(qǐng)求后,向客戶端發(fā)送響應(yīng)信息;

(4)客戶端與服務(wù)器斷開(kāi)連接。

HttpClient的一般使用步驟:

(1)使用DefaultHttpClient類實(shí)例化HttpClient對(duì)象。

(2)創(chuàng)建HttpGet或HttpPost對(duì)象,將要請(qǐng)求的URL通過(guò)構(gòu)造方法傳入HttpGet或HttpPost對(duì)象。

(3)調(diào)用execute方法發(fā)送HTTPGET或HTTPPOST請(qǐng)求,并返回HttpResponse對(duì)象。

(4)通過(guò)HttpResponse接口的getEntity方法返回響應(yīng)信息,并進(jìn)行相應(yīng)的處理。

最后記得要在AndroidManifest.xml文件添加網(wǎng)絡(luò)權(quán)限:

8.3.2使用HttpClient來(lái)執(zhí)行GET調(diào)用

通過(guò)按鈕的點(diǎn)擊事件執(zhí)行g(shù)etInfoFromServlet(path)方法,就可以把服務(wù)器的URL傳進(jìn)去,用HttpClientgetClient=newDefaultHttpClient()得到一個(gè)HttpClient對(duì)象,用HttpGetrequest=newHttpGet(path)得到一個(gè)HttpGet對(duì)象,用HttpResponseresponse=getClient.execute(request)發(fā)起客戶端的請(qǐng)求,得到一個(gè)服務(wù)器的回應(yīng)“response”,用InputStreamis=response.getEntity().getContent()得到輸入流,之后就是從輸入流里面得到返回的字符串。使用HttpClient執(zhí)行GET請(qǐng)求的流程就是這樣。

8.3.3使用HttpClient來(lái)執(zhí)行POST調(diào)用

使用HTTPGET調(diào)用有一個(gè)缺點(diǎn)就是,請(qǐng)求的參數(shù)作為URL一部分來(lái)傳遞,以這種方式傳遞的時(shí)候,URL的長(zhǎng)度應(yīng)該在2048個(gè)字符之內(nèi)。如果超出這個(gè)范圍,就要使用HTTPPOST調(diào)用。

下面新建一個(gè)服務(wù)器,命名為“MyServer_6-3-3”,依次展開(kāi)“MyServer_6-3-3”→“JavaResources”,在src目錄上單擊右鍵,選擇“new”→“Servlet”。在彈出的窗口中,在“Classname”一欄中輸入要新建的Servlet名字,比如輸入“MyServlet”,這樣一個(gè)Servlet就新建好了。

在訪問(wèn)網(wǎng)絡(luò)的點(diǎn)擊事件中,調(diào)用getInfoFromServlet(path)方法訪問(wèn)網(wǎng)絡(luò),同時(shí)把服務(wù)器的URL傳進(jìn)去,使用NameValuePair來(lái)保存要傳遞的Post參數(shù),使用UrlEncodedFormEntityformEntity=newUrlEncodedFormEntity(postParameters)把參數(shù)放到formEntity中,通過(guò)request.setEntity(formEntity)把參數(shù)放入請(qǐng)求中,最后通過(guò)EntityUtils.toString(response.getEntity())得到服務(wù)器返回的字符串。

8.4Android從服務(wù)器下載文件

8.4.1從服務(wù)器下載圖片首先,要在服務(wù)器上放一張名為“myimage.jpg”的JPG格式的圖片,以便我們進(jìn)行測(cè)試,將圖片放在“MyServer”項(xiàng)目的“WebContent”目錄結(jié)構(gòu)下,最終結(jié)果如圖8-6所示。圖8-6MyServer項(xiàng)目結(jié)構(gòu)目錄界面

可以看到,關(guān)鍵下載代碼里用InputStreamis=con.getInputStream()得到輸入流,然后用BitmapFactory.decodeStream(is)方法將流轉(zhuǎn)換成一個(gè)Bitmap對(duì)象,最后用handler將bitmap對(duì)象設(shè)置在imageview控件上。

8.4.2從服務(wù)器下載文件

在“MyServer”服務(wù)器的“WebContent”目錄下放一個(gè)名為”mytext.txt”的文本文檔,里面隨便輸入測(cè)試文字,效果如圖8-7所示。圖8-7MyServer項(xiàng)目結(jié)構(gòu)目錄界面

8.5xml的生成與解析8.5.1什么是xmlxml是可擴(kuò)展標(biāo)記語(yǔ)言(ExtensibleMarkupLanguage)的縮寫,其中的標(biāo)記是關(guān)鍵部分。用戶可以創(chuàng)建內(nèi)容,然后使用限定標(biāo)記標(biāo)記它,從而使每個(gè)單詞、短語(yǔ)或塊成為可識(shí)別、可分類的信息。用戶創(chuàng)建的文件或文檔實(shí)例由元素(標(biāo)記)和內(nèi)容構(gòu)成。當(dāng)從打印輸出讀取或以電子形式處理文檔時(shí),元素能夠幫助用戶更好地理解文檔。元素的描述性越強(qiáng),文檔各部分越容易識(shí)別。

8.5.2在服務(wù)器端生成xml

在Eclipse中,新建“DynamicWebProject”,命名為“MyServer_6-5”,點(diǎn)擊“finish”,完成服務(wù)器的創(chuàng)建,搭建服務(wù)器的具體步驟可見(jiàn)本章8.1節(jié),之后在服務(wù)器上創(chuàng)建名為“MyServlet”的Servlet,完成Servlet的創(chuàng)建,創(chuàng)建Servlet的具體方法請(qǐng)看本章8.3.1節(jié)。

我們?cè)谶@里生成xml數(shù)據(jù)需要用到dom4j.jar包,這個(gè)工具包已經(jīng)在本書(shū)的光盤里攜帶,當(dāng)然也可以從網(wǎng)絡(luò)上搜索并下載dom4j.jar包,有了dom4j.jar包以后,把它復(fù)制到服務(wù)器項(xiàng)目的“WebContent”→“WEB-INF”→“l(fā)ib”目錄下,右鍵dom4j.jar包,選擇“BuildPath”→“AddToBuildPath”,這樣,這個(gè)包就算導(dǎo)入到項(xiàng)目里了。

8.5.3在客戶端解析xml數(shù)據(jù)

在Android中常用的xml解析器有三種,分別為DOM解析器、SAX解析器和PULL解析器,下面是PULL解析器的方式。為什么要學(xué)習(xí)PULL解析器呢?因?yàn)镻ULL解析器是在xml文檔中尋找想要的標(biāo)記,把需要的內(nèi)容拉入內(nèi)存,而不是把整個(gè)文檔都拉入內(nèi)存,這種方式比較適合手機(jī)等內(nèi)存有限的小型的移動(dòng)設(shè)備。

Android并未提供對(duì)JavaStAXAPI的支持。但是,Android附帶了一個(gè)PULL解析器,其工作方式類似于StAX。它允許用戶的應(yīng)用程序代碼從解析器中獲取事件,這與SAX解析器自動(dòng)將事件推入處理程序相反。

PULL解析器的運(yùn)行方式和SAX類似,都是基于事件的模式。不同的是,在PULL解析過(guò)程中返回的是數(shù)字,且需要我們自己獲取產(chǎn)生的事件然后做相應(yīng)的操作,而不像SAX那樣由處理器觸發(fā)一種事件的方法,執(zhí)行代碼。

PULL解析器小巧輕便,解析速度快,簡(jiǎn)單易用,非常適合在Android移動(dòng)設(shè)備中使用,Android系統(tǒng)內(nèi)部在解析各種xml時(shí)也是用PULL解析器,Android官方推薦開(kāi)發(fā)者們使用PULL解析技術(shù)。PULL解析技術(shù)是第三方開(kāi)發(fā)的開(kāi)源技術(shù),它同樣可以應(yīng)用于JavaSE開(kāi)發(fā)。

PULL解析器的工作原理:xmlPULL提供了開(kāi)始元素和結(jié)束元素。當(dāng)某個(gè)元素開(kāi)始時(shí),我們可以調(diào)用parser.nextText從xml文檔中提取所有字符數(shù)據(jù)。當(dāng)解析到一個(gè)文檔結(jié)束時(shí),自動(dòng)生成EndDocument事件。

常用的xmlPULL的接口和類:

XmlPullParser:xmlPULL解析器是一個(gè)在xmlPULLVlAP1中提供了定義解析功能的接口。

XmlSerializer:它是一個(gè)接口,定義了xml信息集的序列。

XmlPullParserFactory:這個(gè)類用于在xmlPULLV1API中創(chuàng)建xmlPULL解析器。

XmlPullParserException:拋出單一的xmlPULL解析器相關(guān)的錯(cuò)誤。

8.6JSON的生成與解析

8.6.1什么是JSON

JSON(JavaScriptObjectNotation)是一種輕量級(jí)的數(shù)據(jù)交換格式。簡(jiǎn)單地說(shuō),JSON可以將JavaScript對(duì)象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個(gè)字符串,或者在異步應(yīng)用程序中將字符串從Web客戶機(jī)傳遞給服務(wù)器端程序。這個(gè)字符串看起來(lái)有點(diǎn)兒古怪,但是JavaScript很容易解釋它,而且JSON可以表示比“名稱/值對(duì)”更復(fù)雜的結(jié)構(gòu)。

JSON的值可以是:數(shù)字(整數(shù)或浮點(diǎn)數(shù))、字符串(在雙引號(hào)中)、邏輯值(true或false)、數(shù)組(在方括號(hào)中)、對(duì)象(在花括號(hào)中)。

JSON中有且只有兩種結(jié)構(gòu):對(duì)象和數(shù)組。

對(duì)象:對(duì)象在JS中表示為“{}”括起來(lái)的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為{key:value,key:value,…}鍵值對(duì)的結(jié)構(gòu),在面向?qū)ο蟮恼Z(yǔ)言中,key為對(duì)象的屬性,value為對(duì)應(yīng)的屬性值,所以很容易理解,取值方法為對(duì)象.key獲取屬性值,這個(gè)屬性值的類型可以是數(shù)字、字符串、數(shù)組、對(duì)象幾種。

數(shù)組:數(shù)組在JS中是中括號(hào)“[]”括起來(lái)的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為[“java”,“javascript”,“vb”,…],取值方式和所有語(yǔ)言中一樣,使用索引獲取,字段值的類型可以是數(shù)字、字符串、數(shù)組、對(duì)象幾種。

8.6.2JSON在服務(wù)端的生成

在Eclipse中,新建“DynamicWebProject”,命名為“MyServer_6-6”,點(diǎn)擊“finish”,完成服務(wù)器的創(chuàng)建,搭建服務(wù)器的具體步驟可見(jiàn)本章8.1節(jié)。然后在服務(wù)器上創(chuàng)建名為“MyServlet”的Servlet,完成Servlet的創(chuàng)建,創(chuàng)建Servlet的具體方法請(qǐng)看本章8.3.1節(jié)。

我們?cè)谶@里生成JSON數(shù)據(jù)需要用到gson.jar包,這個(gè)工具包已經(jīng)在本書(shū)的光盤里攜帶,當(dāng)然也可以從網(wǎng)絡(luò)上搜索并下載gson.jar包,有了gson.jar包以后,把它復(fù)制到服務(wù)器項(xiàng)目的“WebContent”→“WEB-INF”→“l(fā)ib”目錄下,右鍵gson.jar包,選擇“BuildPath”→“AddToBuildPath”,這樣,這個(gè)包就算導(dǎo)入到項(xiàng)目里了。

8.6.3JSON在客戶端的解析

AndroidSDK提供了org.json用來(lái)解析JSON,在Android3.0又提供了android.util包中的JsonReader和JsonWriter來(lái)進(jìn)行JSON的解析和生成。使用org.json包JSONObject和JSONArray進(jìn)行JSON解析,我們知道JSON中只有兩種結(jié)構(gòu)array和object,因此就只對(duì)這兩個(gè)類進(jìn)行解析。

8.7服務(wù)器與數(shù)據(jù)庫(kù)的通信

8.7.1數(shù)據(jù)庫(kù)的安裝MySQL是一種開(kāi)放源代碼的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫(kù)系統(tǒng)使用最常用的數(shù)據(jù)庫(kù)管理語(yǔ)言——結(jié)構(gòu)化查詢語(yǔ)言(SQL)進(jìn)行數(shù)據(jù)庫(kù)管理。在“開(kāi)發(fā)所需工具”文件夾中,找到“mysql安裝包”,解壓縮至本地磁盤任意目錄,找到解壓縮后的“mysql-5.5.15-win32.msi”,雙擊進(jìn)行安裝,安裝界面如圖8-8所示。圖8-8mysql安裝界面

按照如下點(diǎn)擊事件進(jìn)行安裝:“Next”→“Next”→“Typical”→“Install”,之后會(huì)彈出幾個(gè)界面,一直點(diǎn)擊“Next”,直到出現(xiàn)如圖8-9所示界面。圖8-9mysql設(shè)置默認(rèn)編碼界面

需要注意要把選項(xiàng)切換到最下面的選項(xiàng)“ManualSelectedDefaultCharacterSet/Collation”,把“CharacterSet”設(shè)置為“utf8”,然后點(diǎn)擊“Next”,直到出現(xiàn)如圖8-10所示界面。圖8-10設(shè)置mysql密碼界面

但是到這里并沒(méi)有結(jié)束,我們?nèi)绻胍僮鲾?shù)據(jù)庫(kù)就只能在cmd的命令行里操作,這樣對(duì)我們來(lái)說(shuō)太不方便了,現(xiàn)在需要安裝一個(gè)mysql的管理軟件,它是可視化的圖形管理界面,極大地方便了人們對(duì)于mysql的操作,打開(kāi)之前解壓縮的文件夾,雙擊解壓縮“SQLyog-11.2.7-0.x64.rar”,打開(kāi)里面的可執(zhí)行文件,打開(kāi)如圖8-11的安裝界面。圖8-11SQLyog安裝界面

8.7.2服務(wù)器與mysql的連接

在mysql中,在菜單欄選擇“Database”→“createDatabase”,在“Databasename”一欄輸入“mytest”,點(diǎn)擊“Create”創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),然后選擇“mytest”數(shù)據(jù)庫(kù),在右側(cè)的“Query”命令行里輸入“CREATETABLEUSER(idINTEGERPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(20),PASSWORDVARCHAR(20));”按“F9”執(zhí)行命令,再按“F5”刷新界面,此時(shí)可以看到一張名為“user”的表就被新建在了“mytest”數(shù)據(jù)庫(kù)中。

我們連接的是mysql數(shù)據(jù)庫(kù),所以需要一個(gè)mysql的數(shù)據(jù)庫(kù)驅(qū)動(dòng),在“開(kāi)發(fā)所需工具”文件夾中,找到“mysql-connector-java-5.1.7-bin.jar”這個(gè)包,當(dāng)然我們也可以去mysql的官網(wǎng)上下載,把它復(fù)制到服務(wù)器目錄下的“WebContent”→“WEB-INF”→“l(fā)ib”文件夾下,右鍵這個(gè)jar包,選擇“buildpath”→“AddToBuildPath”,這樣,數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序就被添加到我們的項(xiàng)目里。

8.7.3數(shù)據(jù)庫(kù)的增、刪、改、查語(yǔ)句

1.向數(shù)據(jù)庫(kù)增加一條數(shù)據(jù)

2.向數(shù)據(jù)庫(kù)刪除和更新數(shù)據(jù)

3.從數(shù)據(jù)庫(kù)查詢語(yǔ)句

8.8本章項(xiàng)目實(shí)戰(zhàn)

8.8.1項(xiàng)目流程分析經(jīng)過(guò)這一章的學(xué)習(xí),我們已經(jīng)掌握了Android訪問(wèn)網(wǎng)絡(luò)的方法,以及怎樣解析生成xml數(shù)據(jù)和JSON數(shù)據(jù),如何搭建服務(wù)器,如何搭建數(shù)據(jù)庫(kù),如何實(shí)現(xiàn)服務(wù)器與數(shù)據(jù)庫(kù)的通信。

下面分析大致流程,在進(jìn)入登錄界面以后,用戶點(diǎn)擊注冊(cè)按鈕,輸入用戶名密碼,點(diǎn)擊確定,將用戶名密碼發(fā)送給服務(wù)器,服務(wù)器接收到客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù),連接數(shù)據(jù)庫(kù),將用戶名密碼插入到“user”表里面,注冊(cè)功能就到這里完成了。其次就是登錄,在登錄界面,用戶輸入以前注冊(cè)過(guò)的用戶名密碼,將用戶名密碼發(fā)送到服務(wù)器,服務(wù)器將接收到的數(shù)據(jù)和數(shù)據(jù)庫(kù)里的用戶名密碼進(jìn)行比對(duì),如果正確,則返回一個(gè)代表成功的字段,通知客戶端成功登錄,客戶端跳轉(zhuǎn)到登錄成功的界面,這時(shí)候用戶可以選擇做兩件事,一是從SD卡選擇文件進(jìn)行上傳,二是將之前上傳過(guò)的文件下載下來(lái)。

8.8.2做項(xiàng)目之前的準(zhǔn)備

在Eclipse上搭建服務(wù)器,命名為“MyServer_6-8”,因?yàn)槲覀冺?xiàng)目要用到JSON數(shù)據(jù),并且要操作數(shù)據(jù)庫(kù),所以將“mysql-connector-java-5.1.7-bin.jar”和“gson-2.3.1.jar”復(fù)制到“WebContent”→“WEB-INF”→“l(fā)ib”文件夾下,并且右鍵單擊jar包,點(diǎn)擊“BuildPath”→“AddToBuildPath”。

打開(kāi)mysql,首先要新建一個(gè)我們項(xiàng)目要用的數(shù)據(jù)庫(kù),點(diǎn)擊菜單欄的“Database”→“CreateDatabase”,輸入數(shù)據(jù)庫(kù)名“cloudroom”,數(shù)據(jù)庫(kù)就建立好了。其次需要建兩張表,一張表名是“user”,用來(lái)存儲(chǔ)用戶信息,里面包含兩個(gè)字段,分別是用戶名和密碼,還有一張表名是“user_file”,主要用來(lái)存儲(chǔ)用戶上傳文件的路徑。

鼠標(biāo)左鍵選中剛剛建好的數(shù)據(jù)庫(kù)“cloudroom”,在右側(cè)的“Query”命令行輸入“CREATETABLEUSER(idINTEGERPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(20),PASSWORDVARCHAR(20));”然后按“F9”執(zhí)行命令,再按“F5”刷新界面,可以看到“user”表已經(jīng)建好了,再在右側(cè)的“Query”命令行輸入“CREATETABLEuser_file(idINTEGERPRIMARYKEYAUTO_INCREMENT,filepathVARCHAR(30),user_idINTEGER(10));”同樣的,“user_file”表就建立好了。

8.8.3開(kāi)始做項(xiàng)目

新建一個(gè)Android項(xiàng)目,命名為“study_6-8”,因?yàn)榭紤]到這個(gè)項(xiàng)目涉及訪問(wèn)網(wǎng)絡(luò)、讀寫SD卡文件的功能,所以先在AndroidManifest.xml里添加權(quán)限:

接下來(lái)在項(xiàng)目的src目錄下新建一個(gè)源程序文件,命名為“RegisterActivity”,讓它繼承“Activity”,重寫onCreate方法,來(lái)看注冊(cè)功能的代碼,用戶想要登錄界面必須先要注冊(cè),所以,注冊(cè)界面有三個(gè)輸入框,分別是“輸入注冊(cè)賬號(hào)”,“輸入密碼”,“輸入確認(rèn)密碼”,用戶在輸完三個(gè)輸入框的內(nèi)容以后,點(diǎn)擊注冊(cè)按鈕,將用戶名密碼發(fā)送到服務(wù)器,服務(wù)器把用戶名密碼保存到數(shù)據(jù)庫(kù),完成注冊(cè)。

其中,sendData是SendDataToService這個(gè)工具類的對(duì)象,這個(gè)工具類的作用就是訪問(wèn)相對(duì)應(yīng)的Servlet。Constant類很簡(jiǎn)單,是存儲(chǔ)服務(wù)器IP地址的類:

我們會(huì)發(fā)現(xiàn)UserTableDao里用于連接數(shù)據(jù)庫(kù)的Connection對(duì)象conn是通過(guò)ConnectionDataBase這個(gè)類里面的方法得到的,ConnectionDataB

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論