安卓程序实现登陆、注册
如果用普通的安卓知识实现登陆,那么登陆、注册信息会存储到本地也就是手机端,别的手机就不能登陆账户,或者在删除app时用户信息也会一并删除,那么我们如果想要避免上面的情况,就需要使用服务器了。
前提:
- Android的IDE
- 装好Tomcat服务器
- 如果有Eclipse等java IDE更好,方便部署服务器
整体结构如下:
安卓部分:
下面这部分代码的前提是,已经从登陆布局获取用户名和密码。之后点击登陆的逻辑实现:
//打开http连接
HttpURLConnection connection = null;
DataOutputStream out;
//string用来判断服务器端反馈的结果。
String string = "false";
try {
//下面这段代码是统一资源定位符,用于定位服务器上我们需要的servlet,你可以简单理解为网页。
//这里,使用的http协议,下面第二个参数为服务器网址,如果你是公网填写公网网址;
//如果你是内网,就填写内网网址,那么你的手机必须与服务器在同意内网下
URL url = new URL("http", "10.241.4.110", 8080, "/Android_Login/Login_submit");
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
//用户向发服务器发送请求时附加参数,也就是传递值
out = new DataOutputStream(connection.getOutputStream());
//传递内容为姓名和密码
out.writeBytes("name="+mUser+"&password="+mPassword);
//上面代码运行后,服务器会反馈回来,所以下面代码就是接受反馈结果
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
//如果接受到了反馈结果,那么保存到string中
if((string=br.readLine())!=null) {
Log.i("loginStatus",string);
}
out.close();
} catch (Exception e) {
return 0;
}finally {
connection.disconnect();
}
if(string.equals("success"))
//TODO 成功后逻辑
else
//TODO 失败后逻辑
服务器部分:
服务器部分,我是利用的tomcat服务器。
如果你对servlet有了解那么,这里使用的servlet你可以自己配置
public class Login_submit extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;character=gbk");
PrintWriter out = resp.getWriter();
try {
//从移动端获取姓名和密码
String name = req.getParameter("name");
String password = req.getParameter("password");
System.out.println("login/register:"+name);
User user = new User(name, password);
//这里写你的判断逻辑
if (isUser(user))
{
out.print("success");
}
else {
out.print("false");
}
} finally {
out.close();
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
这样就大功告成了!如果需要使用数据库,在服务器端写就行了,很简单的