因比赛或者项目需要,写了几个小打小闹的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");