項(xiàng)目4任務(wù)7-APP的用戶登錄功能_第1頁
項(xiàng)目4任務(wù)7-APP的用戶登錄功能_第2頁
項(xiàng)目4任務(wù)7-APP的用戶登錄功能_第3頁
項(xiàng)目4任務(wù)7-APP的用戶登錄功能_第4頁
項(xiàng)目4任務(wù)7-APP的用戶登錄功能_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2相關(guān)知識(shí)34任務(wù)小結(jié)與練習(xí)1任務(wù)實(shí)施任務(wù)引入與目標(biāo)APP的用戶登錄功能一、任務(wù)引入與目標(biāo)任務(wù)引入任務(wù)6實(shí)現(xiàn)了APP的用戶注冊功能,接下來是APP的用戶登錄功能。用戶能否注冊成功的關(guān)鍵是提交的用戶名和數(shù)據(jù)表中的用戶名是否匹配。那么用戶能否登錄成功的關(guān)鍵又是匹配什么呢?很顯然,既要用戶名匹配,也要密碼匹配,具體在Node-RED中通過流程實(shí)現(xiàn)判斷。任務(wù)目標(biāo)任務(wù)7將實(shí)現(xiàn)以下目標(biāo):在APP中點(diǎn)擊btn11按鈕時(shí),彈出自定義對話框;在對話框中輸入要登錄的用戶名和密碼,通過HTTP客戶端向Web服務(wù)器發(fā)送POST方式的請求;Web服務(wù)器接收到請求后,查詢用戶表中是否已存在用戶名以及密碼是否相符,并發(fā)回response;如果用戶名和密碼均匹配,則發(fā)回登錄成功的response;APP的HTTP客戶端收到HTTPresponse后,根據(jù)response的內(nèi)容,決定是否跳轉(zhuǎn)到APP第二頁,或者Toast提示信息。二、相關(guān)知識(shí)Android工程中變量的作用域在Android工程中,變量的作用域是指變量在程序中可以被訪問的范圍。變量的作用域由它在代碼中聲明的位置和使用的修飾符等決定。以下是一些常見的變量作用域:(1)局部變量是在方法內(nèi)部或代碼塊中定義的變量,只能在該方法或代碼塊中使用。局部變量可以根據(jù)需要進(jìn)行初始化,包括基本數(shù)據(jù)類型和對象引用類型。(2)成員變量是在類中定義的變量,可以被類中的所有方法和代碼塊訪問。成員變量分為實(shí)例變量和靜態(tài)變量兩種類型。實(shí)例變量只有在創(chuàng)建類的實(shí)例后才能訪問,而靜態(tài)變量可以在類被加載時(shí)就被訪問。(3)參數(shù)變量是作為方法的參數(shù)傳遞進(jìn)來的變量,可以在方法內(nèi)部使用。參數(shù)變量的作用域與局部變量相同,只能在方法內(nèi)部訪問。需要注意的是,變量的作用域和生命周期不同,變量作用域結(jié)束并不意味著它的生命周期也結(jié)束。例如,一個(gè)對象引用類型的變量,在方法結(jié)束后其作用域結(jié)束,但是其引用的對象可能仍然存在于內(nèi)存中,直到垃圾回收器將其清除。二、相關(guān)知識(shí)Android中的Toast在Android開發(fā)中,Toast是一個(gè)簡單的提示框架,用于在屏幕上顯示短暫的消息。Toast可以用于提示用戶某個(gè)操作已成功完成、某個(gè)錯(cuò)誤已發(fā)生或其他一些需要向用戶展示信息的場景。以下是使用Toast的一般步驟:調(diào)用靜態(tài)方法makeText()來創(chuàng)建Toast對象,并傳入Context、提示文本和Toast顯示時(shí)間等參數(shù);調(diào)用show()方法將Toast顯示在屏幕上;當(dāng)Toast顯示時(shí)間結(jié)束后,Toast會(huì)自動(dòng)消失。例如,下面的代碼演示了如何在Android應(yīng)用程序中使用Toast://定義一個(gè)Context變量Contextcontext=getApplicationContext();//創(chuàng)建和顯示ToastCharSequencetext="HelloToast!";intduration=Toast.LENGTH_SHORT;Toasttoast=Toast.makeText(context,text,duration);toast.show();在這個(gè)例子中,我們首先獲取了一個(gè)ApplicationContext對象;然后創(chuàng)建了一個(gè)Toast對象,并設(shè)置Toast提示文本為“HelloToast!”,Toast顯示時(shí)間為SHORT(即2秒鐘);最后,調(diào)用show()方法,在屏幕上顯示Toast。三、任務(wù)實(shí)施實(shí)施設(shè)備部署了AndroidStudio、MySQL、Node-RED開發(fā)環(huán)境的計(jì)算機(jī)。實(shí)施過程1.APP設(shè)計(jì)(1)btn11按鈕的單擊事件監(jiān)聽。btn11按鈕在第一個(gè)頁面的布局如圖4-111所示。圖4-111btn11的布局三、任務(wù)實(shí)施在第一個(gè)頁面的活動(dòng)文件MainActivity.java中編寫btn11按鈕的事件監(jiān)聽方法,如圖4-112所示。項(xiàng)目2的任務(wù)6實(shí)現(xiàn)過btn11的單擊功能,單擊btn11后APP直接跳轉(zhuǎn)到page2。本任務(wù)需要完善btn11的單擊功能,實(shí)現(xiàn)點(diǎn)擊btn11后訪問數(shù)據(jù)庫,用戶名和密碼驗(yàn)證無誤后APP跳轉(zhuǎn)到page2。另外,登錄功能的很多代碼與注冊功能類似,可以拷貝后修改。圖4-112btn11按鈕的事件監(jiān)聽三、任務(wù)實(shí)施對話框代碼:程序的功能:點(diǎn)擊btn11后,會(huì)跳出2個(gè)輸入框和1個(gè)“確定”按鈕;取出輸入框的內(nèi)容賦值給變量userNameLog和passWordLog;點(diǎn)擊“確定”按鈕后,將userNameLog和passWordLog作為參數(shù),以post的方式提交HTTP請求到Node-RED中的HTTP服務(wù)端。binding1.btn11.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){//容器layout:線性布局,包括2個(gè)輸入框LinearLayoutlayout=newLinearLayout(MainActivity.this);layout.setOrientation(LinearLayout.VERTICAL);finalEditTextet3=newEditText(MainActivity.this);et3.setText("用戶名:");layout.addView(et3);finalEditTextet4=newEditText(MainActivity.this);et4.setText("密碼:");layout.addView(et4);//對話框:由Title、2個(gè)輸入框、確定按鈕、取消按鈕組成AlertDialogalertDialog=newAlertDialog.Builder(MainActivity.this).setTitle("請輸入用戶名和密碼")//標(biāo)題.setView(layout)//輸入框et3和et4.setPositiveButton("確定",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialogInterface,inti){userNameLog=et3.getText().toString();passWordLog=et4.getText().toString();}}).setNegativeButton("取消",null).show();}});三、任務(wù)實(shí)施(3)提交HTTP請求與接收響應(yīng)。添加OkHttp框架,配置網(wǎng)絡(luò)權(quán)限,創(chuàng)建OkHttp對象等,在之前的項(xiàng)目中已經(jīng)完成?,F(xiàn)在已經(jīng)有一個(gè)名為okHttpClient的HTTP請求客戶端。編寫一個(gè)異步請求函數(shù),放在對話框“確定”按鈕中執(zhí)行。所謂異步請求,就是把請求加入enqueue(隊(duì)列)中,等待執(zhí)行。下面將在異步請求函數(shù)中使用POST方法。privatevoidLogPost_es(){//創(chuàng)建表單FormBodyformBody=newFormBody.Builder().add("username",userNameLog).add("password",passWordLog).build();//表單數(shù)據(jù)放在request中,通過post方法提交Requestrequest=newRequest.Builder().url("11:1880/APP_login").post(formBody).build();okHttpClient.newCall(request).enqueue(newCallback(){@OverridepublicvoidonFailure(@NonNullCallcall,@NonNullIOExceptione){e.printStackTrace();}@OverridepublicvoidonResponse(@NonNullCallcall,@NonNullResponseresponse)throwsIOException{//獲取響應(yīng)的數(shù)據(jù)部分Stringresult=response.body().string();//根據(jù)response,跳轉(zhuǎn)在主線程中Toast出來runOnUiThread(newRunnable(){@Overridepublicvoidrun(){if(result.equals("SuccessLogin")){Intentintent=newIntent();//由MainActivity轉(zhuǎn)向SecondActivityintent.setClass(MainActivity.this,SecondActivity.class);startActivity(intent);//按照意圖,啟動(dòng)Activity跳轉(zhuǎn)}elseif(result.equals("UsernameorPasswordError")){三、任務(wù)實(shí)施如果沒有收到response,則打印異常消息;如果收到response,則根據(jù)情況,跳轉(zhuǎn)至下一頁或者提示登錄失敗。另外,調(diào)用LogPost_es函數(shù),如圖4-113所示。至此,APP設(shè)計(jì)就完成了。圖4-113調(diào)用LogPost_es函數(shù)Toast.makeText(MainActivity.this,"用戶名或密碼錯(cuò)誤,請重新登錄!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this,"未知錯(cuò)誤!",Toast.LENGTH_SHORT).show();}}});}});}三、任務(wù)實(shí)施2.Node-RED設(shè)計(jì)如圖4-114所示,登錄的流程比注冊的流程要簡單,只需要根據(jù)用戶名查詢數(shù)據(jù)表是否有記錄,然后判斷記錄中的密碼是否相符:如果相符,回復(fù)“SuccessLogin”;如果是其他情況,可能是沒有記錄(用戶名不對),或者密碼不對,統(tǒng)一回復(fù)“UsernameorPasswordError”。圖4-114登錄的流程圖4-115編輯httpin節(jié)點(diǎn)APP登錄的http端點(diǎn)配置,如圖4-115所示。三、任務(wù)實(shí)施獲取用戶名和密碼節(jié)點(diǎn)配置,如圖4-116所示。編輯SQL查詢用戶名節(jié)點(diǎn),如圖4-117所示。進(jìn)行mysql節(jié)點(diǎn)配置,如圖4-118所示。圖4-116編輯function節(jié)點(diǎn)圖4-118編輯mysql節(jié)點(diǎn)圖4-117編輯SQL查詢用戶名節(jié)點(diǎn)三、任務(wù)實(shí)施判斷密碼是否錯(cuò)誤節(jié)點(diǎn)配置如圖4-119所示。這一步其實(shí)就是判斷:根據(jù)表單提交的用戶名查詢的數(shù)據(jù)表中的密碼和表單提交的密碼是否一致。SuccessLogin回復(fù)節(jié)點(diǎn)配置如圖4-120所示。用戶名或密碼錯(cuò)誤回復(fù)節(jié)點(diǎn)配置如圖4-121所示。2個(gè)httpresponse按默認(rèn)設(shè)置即可。圖4-119編輯switch節(jié)點(diǎn)圖4-121用戶名或密碼錯(cuò)誤回復(fù)節(jié)點(diǎn)圖4-120SuccessLogin回復(fù)節(jié)點(diǎn)三、任務(wù)實(shí)施3.結(jié)果測試部署流程,MySQL也要啟動(dòng)才行。根據(jù)APP提交的用戶名、密碼情況,用戶可能登錄成功,也可能登錄失敗。(1)登錄成功的情況。如果輸入正確的用戶名和密碼,跳轉(zhuǎn)到第2頁

溫馨提示

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

評論

0/150

提交評論