14.3 实现参考(连接数据库进行账户注册和登录)

14.3 实现参考(连接数据库进行账户注册和登录)

代码14.1、14.2和14.3-1

代码14.1、14.2和14.3-2

代码14.1、14.2和14.3-3

在服务器端增加一个类DBConnect,用来连接数据库,通过连接数据库进行相应的操作。

【代码14.1】DBConnect类

将连接的数据库的操作以及需要通过数据库进行的操作(注册、登录)都写在一个单独的类DBConnect中。

服务器启动时需要连接数据库,并且只需要连接一次,获得的和数据库的连接对象是唯一的,由此,将连接的数据库写在一个静态代码块中(见代码14.1中的第3行到第16行)。静态代码块在程序加载的时候会执行,并且只执行一次。服务器端程序和数据库建立的连接对象是静态static的(见代码14.1的第2行)。开发程序的时候,我们把数据库和服务器端程序放在同一台机器上,Mysql的端口号是默认端口3 306,连接的数据库名为qq(见代码14.1的第7行到第8行)。注意,在测试程序的时候要把登录数据库的密码改为实际的root密码。

用户注册的方法是静态方法,将传入的username和password构成插入sql语句,发送给数据库执行。若执行成功,则注册成功,返回true;否则,注册失败,返回false,见代码14.1的第18行到第32行。

用户登录的方法是静态方法,将传入的username和password构成查询sql语句,发送给数据库执行。如果查询到记录,则表示通过了登录检查,返回true;如果没有查询到记录,则表示未通过登录检查,返回false,见代码14.1的第34行到第49行。

【代码14.2】Server Thread类

在代码14.2中,当服务器收到客户端的登录请求时,就调用DBConnect类的login()方法进行登录检查,因为login()是静态方法,所以可以用类名直接调用,见代码14.2的第26行,如果返回true,则表示登录成功。

当服务器收到客户端的注册请求时,就调用DBConnect类的regist()方法进行注册,因为regist()是静态方法,所以可以用类名直接调用,见代码14.2的第52行。

客户端的程序如下。

【代码14.3】Login Face类

在客户端,当用户输入用户名和密码后单击“注册”按钮时,就向服务器端发送注册请求字符串,见代码14.3的第41行。这里简化了注册程序,没有进行注册信息合法性检查(如用户名和密码的非空检查、安全性检查等,大家可以自行加入)。