本文講述了如何應用大三下學期智能移動終端開發技術課程所學知識,完成包含服務器端、客戶端程序的應用——博學谷登錄模塊的開發,結合java語言基本知識,例如:字符串、列表、類、數據庫讀寫等,設計、實現一個以java語言為基礎的博學谷的登錄模塊。該模塊能夠實現遠程網絡驗證登錄的基本功能,涉及到所用java庫的主要類。
鑒於之前版本的博學谷使用的是Android平台上一個輕量級的存儲類SharedPreference實現數據存儲,雖然容易理解和使用,但是無法實現和服務端和數據庫的數據交互,體現出只能本地使用的局限性。所以本綜合實驗采用當前主流的處理網絡請求的OKhttp3開源框架,實現遠程網絡數據的傳送和獲取,從而完成博學谷登錄模塊功能的設計與實現。
除了實現登錄、立即注冊和找回密碼的通過網絡請求操作數據庫這三個功能外,我們在用戶登錄和退出時,分別發送一個網絡請求,傳送登陸者的用戶名和本地參數,本地參數例如有本機IP,登錄設備號等等。本次實驗只是完成了上傳用戶名,本地參數尚未添加。服務端接收到請求后,獲得登陸者的用戶名,獲取服務器系統時間,將該名用戶的登錄和退出的時間登記在數據庫中。
另外在點擊主界面的記錄按鈕時,可以跳轉到另一個界面,發送一個網絡請求,服務器接收到以后,查詢數據庫服務器,返回給客戶端一個json串,用於展示用戶的登錄記錄。
服務器端:
首先在NetBeans中打開服務器端程序,添加所需jar包(gson,mysql),GlassFish服務器;
然后打開Navicat,連接到wlw1db數據庫,建立一張自己的表,再添加所要訪問的用戶信息,記得添加主鍵;
然后再修改服務器程序中連接數據庫的常用類——DBUtil中的連接方法getConn()中的連接參數,確保數據庫服務器連接成功。
最后運行serverlet中的ListAllUserServlet可以在瀏覽器中看到所有用戶的username和password的json串。
手機端:
首先模擬運行之前的Android程序,通過okhttp實現訪問具有特定url的服務器,訪問成功可在LogCat中看到服務器端到數據服務器中取出的所有用戶信息的json串。
然后通過創建一個子線程,完成網絡數據讀取后,將完成信號發送給Handler,Handler再對主線程程UI界面進行更新操作,即可在手機端界面完成網絡數據的讀取。
需要注意的是在手機端運行的程序訪問的url必須是服務器端地址,如果是localhost則是手機的IP地址。
Java和android的基本概念、高級特性
Java接口
定義一種對象的方法的規范、標准,然后通過另一個具體的實現類來實現這些規范。以服務器端UserDao為例,先定義接口UserDao,然后實現接口UserDaoImpl。類似的還有service。
Android的Handler消息機制
當應用程序啟動時,Android首先會開啟一個UI線程,負責管理界面控件和進行事件分發。但是如果這個事件是耗時的,比如是網絡讀取數據,會出現假死甚至強制關閉。應該想到的是用子線程去處理耗時事件,但是子線程又不能直接操作主線程。所以就用到了Android中的一種異步回調機制Handler。
Handler負責和子線程的通信,當子線程完成工作后,會通知Handler,然后對主線程UI進行操作。
模塊分析:登錄界面
登錄界面主要分為注冊,登錄,忘記密碼三個模塊,應該還要有登錄驗證模塊,比如輸入驗證碼。

登錄界面主要是實現通過獲取控件中輸入的內容對數據庫進行操作,即增、刪、改、查。
登錄的時候應該是手機端與服務器進行網絡交互:用戶點擊登錄的時候,首先進行本地檢查,輸入是否完整,然后按照網絡獲取數據方式的回路,先封裝成bean,然后轉成json格式,通過OKhttp提交到服務器,服務器解析json串和數據庫服務器中的信息進行比對,最后返回給手機端登錄成功與否的結果。

注冊是對數據庫進行查操作,看是否已存在用戶,然后在數據庫中增加記錄。

找回密碼就是對數據庫進行改操作,方式和前面的大同小異,不同的是操作數據庫的select語句不一樣。

退出登錄時序圖

網絡訪問部分
博學谷中網絡訪問部分實現的功能是通過http獲取特定url的數據並展示。網絡獲取數據代碼注釋如下圖所示。

獲取信息后Handler處理部分代碼注釋如下:

本次綜合實驗課程設計,我們主要運用了OKhttp這個網絡請求處理的開源框架,實現了本地客戶端和服務端之間的網絡通信,進而實現了Android客戶端遠程操作Mysql數據庫,最終實現博學谷軟件登錄模塊的基本功能。我們不僅對Java語言開發智能移動終端有了更深刻的了解,還對面向對象編程思想有了更深層次的理解,特別是學習了Android編程的基本知識,構建從Android客戶端到服務器再到數據庫,甚至聯系到我們之前學習的單片機、嵌入式的系統而完整的知識體系。
最后如果有需要的小伙伴可以自行在這個網盤鏈接中下載,提取碼obcy。如果有用不要忘記點個贊,讓更多的人看到哦。
