注册新用户
内容:从客户端输入用户名和密码并发送到服务器端,服务器接收到后写入到数据库uaer表中。
目的:掌握按钮的事件响应代码的设计,掌握客户端向服务器端发送新用户名和密码,掌握如何把新用户名和密码写入到数据库表中。
步骤一:为注册按钮添加事件响应代码
jb2.addActionListener(this);
步骤二:响应动作代码
if(arg0.getSource()==jb2){
String userName=jtf1.getText();
String passWord=new String(jpf1.getPassword());
User user=new User();
user.setUserName(userName);
user.setPassWord(passWord);
user.setUserMessageType(“USER_REGISTER”);
boolean registerSuccess=new ClientConnetion().registerUserIntoDB(user);
步骤三:在User类中添加新的成员变量
private String useMessageType;
public String getUserMessageType(){
return useMessageType;
}
public void setUserMessageType(String useMessageType){
this.useMessageType=useMessageType;
}
步骤四:显示注册成功或者失败的提示信息
if(registerSuccess){
JOptionPane.showMessageDialog(this, “注册成功”);
}else{
JOptionPane.showMessageDialog(this, “注册失败,该用户名已经存在!”);
}
}
步骤5:创建registerUserIntoDB方法来发送user对象到服务器端,并接收服务器返回的message。 public boolean registerUserIntoDB(User user){
boolean registerSuccess=false;
ObjectOutputStream oos;
Message mess=null;
try {
//把字节输出流对象 包装成 对象输出流对象
oos=new ObjectOutputStream(s.getOutputStream());
oos.writeObject(user);
ObjectInputStream ois=new ObjectInputStream(s.getInputStream());
mess=(Message)ois.readObject();//接收
if(mess.getMessageType().equals(Message.message_RegisterSuccess)){
registerSuccess=true;
s.close();//关闭客户端的socket对象
}
}catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return registerSuccess;
}
步骤6:添加Message对象的新类型
String message_RegisterSuccess=“6”;
String message_RegisterFailtrue=“7”;
步骤7:在服务器完成新用户的注册
if(user.getUserMessageType().equals(“USER_REGISTER”)){
步骤8:对注册用户名进行查询
boolean seekSuccess=YychatDbUtil.seekUser(userName);
mess=new Message();
mess.setSender(“Server”);
mess.setReceiver(userName);
if(seekSuccess){
//返回注册失败的message
mess.setMessageType(Message.message_RegisterFailtrue);
}else{
步骤9:如果没有同名用户,把新用户的名字和密码写入到user表中
YychatDbUtil.addUser(userName,passWord);
mess.setMessageType(Message.message_RegisterSuccess);
}
sendMessage(s,mess);
s.close();//注册结束,应该关闭服务器的socket对象
}