【Java】仿真qq尝试:用户注册(一)

需求:

1、流程分析:客户端程序拿到用户名和密码,将用户名和密码发送到服务端(在客户端验证合法性),服务端接收并存储用户名和密码,返回给客户端一个信息(可能是成功也可能是失败。)

2、数据怎么存?服务端的用户数据为什么存入数据库而不是通过IO存入一个文件?数据库就是封装了CRUD的“专业化”存数据的软件,相比自己写的“非专业”存储方式更安全(不是任何人都可以访问、不易丢失)性能更好(CRUD更快)。。

3、应对多用户注册。

参考:

1、java正则表达式Pattern和Matcher:http://www.cnblogs.com/lzq198754/p/5780340.html

2、java单元测试:http://blog.csdn.net/liushuijinger/article/details/32140843、http://blog.csdn.net/andycpp/article/details/1327147

3、socket传输对象:http://blog.csdn.net/kongxx/article/details/7259827(关于socket的内容很全、代码质量高。。,有时间可以通看。。。)

4、swing消息提示框:http://hnulanwei.iteye.com/blog/2218639

思路:

代码:

1、创建一个User类。封装对象传输显然比拆分字符串传输要好。

package com.xkfx.qq.tools;

public class User implements java.io.Serializable {
    private String username;
    private String password;

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    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;
    }
}

2、检查用户名和密码的合法性

package com.xkfx.qq.tools.check;

import java.util.regex.*;

public class Check {
    private static final String regEx = "^[A-Za-z][A-Za-z1-9_-]+$";
    private static final Pattern pattern = Pattern.compile(regEx);

    public static boolean idAndPass(String username, String password) {
        Matcher userMatcher = pattern.matcher(username);
        Matcher passMatcher = pattern.matcher(password);
        return userMatcher.matches() && passMatcher.matches();
    }
}

3、融入主代码

        // 用户点击了注册
        if (e.getActionCommand().equals("Sign up")) {
            // 从JTextField获取用户名和密码
            String username = txtUsername.getText();
            String password = txtPassword.getText();

            // 本地验证用户名、用户密码的合法性
            if (Check.idAndPass(username, password)) {
                User user = new User(username, password);
                System.out.println("正在向服务发送注册请求");
            } else {
                // 提示用户重新输入
                JOptionPane.showMessageDialog(this, "输入不合法,请重新输入!");
            }
        }

后续 & 补充:

修改了目录结构:

posted @ 2017-04-27 20:34  xkfx  阅读(965)  评论(0编辑  收藏  举报