本文主要实现了Android客户端和服务器间的交互,客户端采用Android Studio开发,Web服务器采用PhpStorm开发,数据库使用MySQL,采用ThinkPHP框架开发,目前ThinkPHP最新的版本是ThinkPHP 5.0 RC4版本,本文中采用它的稳定版ThinkPHP3.2.2完整版,官网地址为:http://www.thinkphp.cn/。
开发前准备:
Android客户端:
服务端和客户端主要采用json格式的数据类型,目前比较好用的Json框架有google的gson以及阿里的fastjson,本文中选用fastjson框架来解析json数据;另外由于客户端存在网络请求,而目前okhttp是不错的网络请求框架,所以在本文中选用okhttp作为网络框架。
服务器端:
服务器的环境搭建可以选择XAMPP或者WAMPserver,基本上都是傻瓜式的一键安装,即包含有windows版也有Linux版本,如果是需要部署到服务器主机上,可以利用Xshell 5以及Xftp 5工具,具体过程也比较简单,这里就不再赘述。
数据库:
在MySql中新建一个叫login的数据库,并在该数据库下创建一个名叫login_user的数据表,该表包含有id、username、password、sex四个字段。创建数据表的sql语句如下:
CREATE TABLE `login`.`login_user` ( `id` INT NOT NULL AUTO_INCREMENT COMMENT '用户ID' , `username` VARCHAR(20) NOT NULL COMMENT '用户名' , `password` VARCHAR(40) NOT NULL COMMENT '用户密码' , `sex` TINYINT NOT NULL DEFAULT '1' COMMENT '性别(1:男性,0:女性)' , PRIMARY KEY (`id`)) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = '用户表';
Android客户端:
第一步 在Android studio中创建一个LoginTest的工程项目,然后通过Gradle添加前面提到的依赖库,同时在AndroidMainefest配置文件中添加上网络权限。
第二步 创建一个User的类,代码如下:
import java.io.Serializable;
/**
* Created by Administrator on 2016/8/25.
*/
public class User implements Serializable
{
private int id;
private String username;
private String password;
private int sex;
public int getId() {
return id;
}
public void setId(String id) {
this.id = Integer.parseInt(id);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getSex()
{
return sex;
}
public void setSex(String sex) {
this.sex = Integer.parseInt(sex);
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", sex=" + sex +
'}';
}
}
第三部 实现登陆页面的布局以及登陆Activity的代码编辑,由于代码比较简单,也很好理解,这里直接上代码了。
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_he