前期准备

首先要先明确有个大体的思路,要实现什么样的功能,了解完成整个模块要运用到哪些方面的知识,以及从做的过程中去发现自己的不足。技术方面的进步大都都需要从实践中出来的。

功能:用户注册功能+系统登录功能+生成验证码

知识:窗体设计、数据库设计、JavaBean封装属性、JDBC实现对数据库的连接、验证码(包括彩色验证码)生成技术,还有就些比如像使用正则表达式校验用户注册信息、随机获得字符串、对文本可用字符数的控制等

设计的模块预览图

234902142.jpg160802478.jpg

174829987.jpg

彩色验证码预览图

235413120.jpg

所用数据库:MySQL



数据库设计


创建一个数据库db_database01,其中包含一个表格tb_user,用来保存用户的注册的数据。

其中包含4个字段

id int(11)

username varchar(15)

password varchar(20)

email varchar(45)

MySQL语句可以这样设计:

create schema db_database01;
use db_database01;
create table tb_user(
id int(11) not null auto_increment primary key,
username varchar(15) not null,
password varchar(20) not null,
email varchar(45) not null
);
insert into tb_user values(1,"lixiyu","lixiyu","lixiyu419@gmail.com");

这样把lixiyu作为用户名。

select语句检查一下所建立的表格:

185807578.jpg



编写JavaBean封装用户属性


package com.lixiyu.model;
public class User {
    private int id;// 编号
    private String username;// 用户名
    private String password;// 密码
    private String email;// 电子邮箱
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = 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 String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}


编写JDBC工具类


将与数据库操作相关的代码放置在DBConfig接口和DBHelper类中

DBConfig接口用于保存数据库、用户名和密码信息

代码:

package com.lixiyu.util;
public interface DBConfig {
    String databaseName = "db_database01";// 数据库名称
    String username = "root";// 数据库用户名
    String password = "lixiyu";// 数据库密码
}

为简化JDBC开发,DBHelper使用了了Commons DbUtil组合。

DBHelper类继承了DBConfig接口,该类中包含4种方法:

(1)getConnection()方法:获得数据库连接,使用MySQL数据源来简化编程,避免因加载数据库驱动而发生异常。

(2)exists()方法:判断输入的用户名是否存在。

(3)check()方法:当用户输入用户名和密码,查询使用check()方法是否正确。

(4)save()方法:用户输入合法注册信息后,,将信息进行保存。

详细代码:

package com.lixiyu.util;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.apache.commons.lang.StringEscapeUtils;
import com.lixiyu.model.User;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
public class DBHelper implements DBConfig {
    /*
     * 使用MySQL数据源获得数据库连接对象
     *
     * @return:MySQL连接对象,如果获得失败返回null
     */
    public static Connection getConnection() {
        MysqlDataSource mds = new MysqlDataSource();// 创建MySQL数据源
        mds.setDatabaseName(databaseName);// 设置数据库名称
        mds.setUser(username);// 设置数据库用户名
        mds.setPassword(password);// 设置数据库密码
        try {
            return mds.getConnection();// 获得连接
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;// 如果获取失败就返回null
    }
    /*
     * 判断指定用户名的用户是否存在
     *
     * @ret