版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2相關(guān)知識34任務(wù)小結(jié)與練習1任務(wù)實施任務(wù)引入與目標APP的用戶登錄功能一、任務(wù)引入與目標任務(wù)引入任務(wù)6實現(xiàn)了APP的用戶注冊功能,接下來是APP的用戶登錄功能。用戶能否注冊成功的關(guān)鍵是提交的用戶名和數(shù)據(jù)表中的用戶名是否匹配。那么用戶能否登錄成功的關(guān)鍵又是匹配什么呢?很顯然,既要用戶名匹配,也要密碼匹配,具體在Node-RED中通過流程實現(xiàn)判斷。任務(wù)目標任務(wù)7將實現(xiàn)以下目標:在APP中點擊btn11按鈕時,彈出自定義對話框;在對話框中輸入要登錄的用戶名和密碼,通過HTTP客戶端向Web服務(wù)器發(fā)送POST方式的請求;Web服務(wù)器接收到請求后,查詢用戶表中是否已存在用戶名以及密碼是否相符,并發(fā)回response;如果用戶名和密碼均匹配,則發(fā)回登錄成功的response;APP的HTTP客戶端收到HTTPresponse后,根據(jù)response的內(nèi)容,決定是否跳轉(zhuǎn)到APP第二頁,或者Toast提示信息。二、相關(guān)知識Android工程中變量的作用域在Android工程中,變量的作用域是指變量在程序中可以被訪問的范圍。變量的作用域由它在代碼中聲明的位置和使用的修飾符等決定。以下是一些常見的變量作用域:(1)局部變量是在方法內(nèi)部或代碼塊中定義的變量,只能在該方法或代碼塊中使用。局部變量可以根據(jù)需要進行初始化,包括基本數(shù)據(jù)類型和對象引用類型。(2)成員變量是在類中定義的變量,可以被類中的所有方法和代碼塊訪問。成員變量分為實例變量和靜態(tài)變量兩種類型。實例變量只有在創(chuàng)建類的實例后才能訪問,而靜態(tài)變量可以在類被加載時就被訪問。(3)參數(shù)變量是作為方法的參數(shù)傳遞進來的變量,可以在方法內(nèi)部使用。參數(shù)變量的作用域與局部變量相同,只能在方法內(nèi)部訪問。需要注意的是,變量的作用域和生命周期不同,變量作用域結(jié)束并不意味著它的生命周期也結(jié)束。例如,一個對象引用類型的變量,在方法結(jié)束后其作用域結(jié)束,但是其引用的對象可能仍然存在于內(nèi)存中,直到垃圾回收器將其清除。二、相關(guān)知識Android中的Toast在Android開發(fā)中,Toast是一個簡單的提示框架,用于在屏幕上顯示短暫的消息。Toast可以用于提示用戶某個操作已成功完成、某個錯誤已發(fā)生或其他一些需要向用戶展示信息的場景。以下是使用Toast的一般步驟:調(diào)用靜態(tài)方法makeText()來創(chuàng)建Toast對象,并傳入Context、提示文本和Toast顯示時間等參數(shù);調(diào)用show()方法將Toast顯示在屏幕上;當Toast顯示時間結(jié)束后,Toast會自動消失。例如,下面的代碼演示了如何在Android應(yīng)用程序中使用Toast://定義一個Context變量Contextcontext=getApplicationContext();//創(chuàng)建和顯示ToastCharSequencetext="HelloToast!";intduration=Toast.LENGTH_SHORT;Toasttoast=Toast.makeText(context,text,duration);toast.show();在這個例子中,我們首先獲取了一個ApplicationContext對象;然后創(chuàng)建了一個Toast對象,并設(shè)置Toast提示文本為“HelloToast!”,Toast顯示時間為SHORT(即2秒鐘);最后,調(diào)用show()方法,在屏幕上顯示Toast。三、任務(wù)實施實施設(shè)備部署了AndroidStudio、MySQL、Node-RED開發(fā)環(huán)境的計算機。實施過程1.APP設(shè)計(1)btn11按鈕的單擊事件監(jiān)聽。btn11按鈕在第一個頁面的布局如圖4-111所示。圖4-111btn11的布局三、任務(wù)實施在第一個頁面的活動文件MainActivity.java中編寫btn11按鈕的事件監(jiān)聽方法,如圖4-112所示。項目2的任務(wù)6實現(xiàn)過btn11的單擊功能,單擊btn11后APP直接跳轉(zhuǎn)到page2。本任務(wù)需要完善btn11的單擊功能,實現(xiàn)點擊btn11后訪問數(shù)據(jù)庫,用戶名和密碼驗證無誤后APP跳轉(zhuǎn)到page2。另外,登錄功能的很多代碼與注冊功能類似,可以拷貝后修改。圖4-112btn11按鈕的事件監(jiān)聽三、任務(wù)實施對話框代碼:程序的功能:點擊btn11后,會跳出2個輸入框和1個“確定”按鈕;取出輸入框的內(nèi)容賦值給變量userNameLog和passWordLog;點擊“確定”按鈕后,將userNameLog和passWordLog作為參數(shù),以post的方式提交HTTP請求到Node-RED中的HTTP服務(wù)端。binding1.btn11.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){//容器layout:線性布局,包括2個輸入框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個輸入框、確定按鈕、取消按鈕組成AlertDialogalertDialog=newAlertDialog.Builder(MainActivity.this).setTitle("請輸入用戶名和密碼")//標題.setView(layout)//輸入框et3和et4.setPositiveButton("確定",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialogInterface,inti){userNameLog=et3.getText().toString();passWordLog=et4.getText().toString();}}).setNegativeButton("取消",null).show();}});三、任務(wù)實施(3)提交HTTP請求與接收響應(yīng)。添加OkHttp框架,配置網(wǎng)絡(luò)權(quán)限,創(chuàng)建OkHttp對象等,在之前的項目中已經(jīng)完成?,F(xiàn)在已經(jīng)有一個名為okHttpClient的HTTP請求客戶端。編寫一個異步請求函數(shù),放在對話框“確定”按鈕中執(zhí)行。所謂異步請求,就是把請求加入enqueue(隊列)中,等待執(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);//按照意圖,啟動Activity跳轉(zhuǎn)}elseif(result.equals("UsernameorPasswordError")){三、任務(wù)實施如果沒有收到response,則打印異常消息;如果收到response,則根據(jù)情況,跳轉(zhuǎn)至下一頁或者提示登錄失敗。另外,調(diào)用LogPost_es函數(shù),如圖4-113所示。至此,APP設(shè)計就完成了。圖4-113調(diào)用LogPost_es函數(shù)Toast.makeText(MainActivity.this,"用戶名或密碼錯誤,請重新登錄!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this,"未知錯誤!",Toast.LENGTH_SHORT).show();}}});}});}三、任務(wù)實施2.Node-RED設(shè)計如圖4-114所示,登錄的流程比注冊的流程要簡單,只需要根據(jù)用戶名查詢數(shù)據(jù)表是否有記錄,然后判斷記錄中的密碼是否相符:如果相符,回復(fù)“SuccessLogin”;如果是其他情況,可能是沒有記錄(用戶名不對),或者密碼不對,統(tǒng)一回復(fù)“UsernameorPasswordError”。圖4-114登錄的流程圖4-115編輯httpin節(jié)點APP登錄的http端點配置,如圖4-115所示。三、任務(wù)實施獲取用戶名和密碼節(jié)點配置,如圖4-116所示。編輯SQL查詢用戶名節(jié)點,如圖4-117所示。進行mysql節(jié)點配置,如圖4-118所示。圖4-116編輯function節(jié)點圖4-118編輯mysql節(jié)點圖4-117編輯SQL查詢用戶名節(jié)點三、任務(wù)實施判斷密碼是否錯誤節(jié)點配置如圖4-119所示。這一步其實就是判斷:根據(jù)表單提交的用戶名查詢的數(shù)據(jù)表中的密碼和表單提交的密碼是否一致。SuccessLogin回復(fù)節(jié)點配置如圖4-120所示。用戶名或密碼錯誤回復(fù)節(jié)點配置如圖4-121所示。2個httpresponse按默認設(shè)置即可。圖4-119編輯switch節(jié)點圖4-121用戶名或密碼錯誤回復(fù)節(jié)點圖4-120SuccessLogin回復(fù)節(jié)點三、任務(wù)實施3.結(jié)果測試部署流程,MySQL也要啟動才行。根據(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度校園食堂承包與托管全面合作協(xié)議書4篇
- 2024版長途貨物配送合同
- 2025年度專業(yè)稅務(wù)代理記賬公司員工保密與競業(yè)禁止協(xié)議4篇
- 耐火線槽行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 淄博關(guān)于成立鋰電三元正極材料公司可行性報告
- 2025年度個人購房擔保借款合同房產(chǎn)交易資金監(jiān)管協(xié)議4篇
- 2025年度個人租賃車位合同規(guī)范范本4篇
- 2025年度個人滑翔傘租賃服務(wù)合同4篇
- 2025年度個人股份期權(quán)授予合同樣本4篇
- 2025年度個人家居裝修分期付款合同模板4篇
- 獅子王影視鑒賞
- DB13(J)T 8434-2021 民用建筑節(jié)能門窗工程技術(shù)標準(京津冀)
- 2024年在職申碩同等學(xué)力英語真題試卷題后含答案及解析4
- 預(yù)防溺水六不準中小學(xué)生防溺水安全教育宣傳課件可編輯課件
- 學(xué)校廚房設(shè)備投標方案(技術(shù)方案)
- 一年級數(shù)學(xué)加減法口算題每日一練(25套打印版)
- 電力系統(tǒng)中的虛擬電廠運營與管理考核試卷
- Starter Unit 3 同步練習人教版2024七年級英語上冊
- 風力發(fā)電收購協(xié)議書
- 大學(xué)生無人機創(chuàng)業(yè)計劃書
- 2024年甘肅省武威市、嘉峪關(guān)市、臨夏州中考英語真題
評論
0/150
提交評論