前言
本人现是名学生,闲暇时间自己自学去做音乐app开发,过程艰辛但学到很多,这其中也无疑得到CSDN莫大的帮助,所以我想把自己的所学所悟都去回馈给这个大集体中,大家一起学习,一起探讨,一起进步。
效果图
远程访问服务器数据库进行注册数据插入和登陆数据验证和的具体效果(画质堪忧):
数据库也进来了:
原理
- 同网段
如果我们用手机模拟器来运行android项目的,那么手机使用的ip地址就是自己电脑的ip地址,服务器对象会有以下两种情况:
- 如果我们把自己电脑作为服务器,那么服务器ip地址也是这台电脑的ip地址,当然这种情况是因为我们没有多余的(有另一个ip)电脑进行项目的测试,通俗的讲就是用自己的ip访问自己,是一定ping得通的,也就一定能进行访问。
- 如果我们把另一台电脑作为服务器,服务器ip地址当然是另一台电脑的ip地址,两者想建立连接得确定自己电脑的ip和另一台电脑的ip是否在同个局域网内,就像一个校园网就是在同个局域网内,他们是可以ping得通的,前提是双方都没有开启防火墙。
- 不同网段
为什么我们可以访问百度,却不能访问其他的私人ip?抛出两种情况,如果我们还是用手机模拟器来运行android项目的,而服务器主机ip既不是自己也不是在同个局域网内,亦或是我们用是由电信运营商提供ip地址的手机运行android项目,而服务器主机是自己的电脑,都会ping不通,由于这是跨网段的访问,手机和服务器主机的访问就需要通过路由的下一跳转发,如果两者没有建立路由连接,是ping不通的,我们和百度已建立了路由连接,所以我们能访问百度,当然建立了路由连接后,如果访问时延过长或被某节点进行了防火墙等拦截的话,也会导致无法ping得通。
手机客户端和服务器都能相互ping得通后,即能进行相互访问后,服务器端打开8080端口(可变)等待客户端ip访问,当android客户端访问服务器ip下的8080端口,向服务器发送json数据后,服务器会在8080端口接收到json数据,随后自己去访问自己主机下的3306端口(可变)进行相应的数据库操作,操作结束后,返回给客户端一些json数据,这些json数据是服务端从数据库里得到的一些数据,最后客户端接收到服务器传过来的json数据进行解析和操作。
数据库
我的数据库结构:
我的数据库数据:
Spring搭建服务器
环境部署
- 项目结构
先看下项目结构,我们这次只用到红圈几个类:
- 相关依赖
除了mysql依赖还有其它一些依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
<!--Mybatis Plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<!--json-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.3</version>
</dependency>
- 配置文件
除数据库连接配置以外,还有mybatis配置:
mybatis-plus:
#配置日志
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#配置逻辑删除
global-config:
db-config:
logic-delete-value: 1
logic-not-delete-value: 0
代码编写
- 工具类(注意:数据库表是什么名这个类就是什么名,支持驼峰命名)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class muyUsers {
@TableId(type = IdType.AUTO)
private int id;
@NonNull
@JsonProperty(value = "username")
private String username;
@NonNull
@JsonProperty(value = "password")
private String password;
@NonNull
@JsonProperty(value = "email")
private String email;
@NonNull
@JsonProperty(value = "phone")
private String phone;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@TableLogic//逻辑删除
@TableField(fill = FieldFill.INSERT)
private int deleted;
}
- 接口(注意:必须在主启动类加@MapperScan扫描接口所在的包)
@Component
public interface UserMapper extends BaseMapper<muyUsers> {
}
- 控制类(@ResponseBody发送json数据,@RequestBody接收json数据)
@Controller
public class MuyController {
@Autowired
UserMapper userMapper;
//验证用户登陆(错误记录:如果不加JsonProperty注解,请求就拿不到json数据)
@RequestMapping(value = "/jsonUser", method = RequestMethod.POST, produces = "application/json;charset=utf-8")</