因比賽或者項目需要,寫了幾個小打小鬧的APP。有的處於“單機”狀態,有的處於“半聯網”狀態,覺得學習有點操之過急,所以先緩一緩,梳理一下之前所學的知識,將之前做的一些小玩意兒,整理出來寫成博客。第一篇便是大部分APP都具有的註冊登錄系統。
代碼傳送門
一、問題描述
完成簡單的註冊與登錄功能。
二、需求分析
在APP端有註冊與登錄兩個顯示界面:點擊註冊,將用戶填寫的信息存儲到數據庫當中;點擊登錄,查詢服務器數據庫,匹配則登錄,進入一個新頁面顯示登錄信息,不匹配則顯示登錄失敗。
三、結構設計
- Android 用於與用戶交互,信息的輸入與顯示。
- 阿里雲服務器,Tomcat Web應用服務器 使用原生Servlet完成APP與服務器的交互。
- MySql數據庫 用於數據的存儲與匹配。
- 示意圖
四、數據庫設計
五、實體類設計(User.java)
public class User {
private String nickname;//用戶暱稱
private String phoneNum;//手機號碼
private String password;//用戶密碼
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
六、APP 界面設計
- 示意圖
- 效果圖
A. 登錄界面
B. 註冊界面
C. 成功登錄後顯示信息的界面
七、服務器端Servlet功能
- 獲取登錄信息,匹配數據庫,返回登錄結果
LoginServlet——DBOperation.getUser() - 獲取註冊信息,將新用戶的數據寫入數據庫當中
RegisterServlet——DBOperation.insertIntoUser()
八、數據交互
- 格式:Json格式
- 使用gson解析,Okhttp3傳輸數據
- 點擊登錄或註冊按鈕時,訪問相應Servlet,APP 端處理響應數據並使用TextView或者Toast進行顯示。
九、小結
至此,一個簡易版的APP登錄與註冊系統的設計與開發便完成了。還有許多可以改善的地方,不過作爲一個十分簡易的系統Demo,應該勉強可以看看,給剛入門的小夥伴學習使用。
- 數據庫的操作,使用的是DBUtils框架,簡單易上手,對新手友好。
- APP端的model類,使用單例模式。原本是打算登錄後僅爲一個用戶,無法修改,但是出現了賬戶密碼輸入錯誤,但是實例已經產生,第二次輸入正確卻無法產生新的實例而造成登錄失敗的尷尬情況,後來在單例的get方法中添加是否成功登錄的標誌字段flag輔助判斷,解決bug。
- Web 端的Servlet中忘記添加以下代碼,造成中文亂碼問題。
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");