【Java】仿真qq尝试:用户注册(二)
2017-04-28 22:10
330 查看
参考:
1、corejavaI:使用解耦的try/catch与try/finally
2、Java中try catch finally语句中含有return语句的执行情况(总结版):http://blog.csdn.net/ns_code/article/details/17485221
3、什么时候考虑使用静态方法?http://tonylian.iteye.com/blog/563457(*详细)
4、流与文件(端口 & 文件读写对象)
思路:
成功注册-->客户端调用Register()方法--->服务器调用save()方法,save用jdbc写。
代码:
1、服务器待命。
2、客户端注册
后续:
1、发现一个bug,貌似是由于catch里面不能有return造成的。。。
1、corejavaI:使用解耦的try/catch与try/finally
2、Java中try catch finally语句中含有return语句的执行情况(总结版):http://blog.csdn.net/ns_code/article/details/17485221
3、什么时候考虑使用静态方法?http://tonylian.iteye.com/blog/563457(*详细)
4、流与文件(端口 & 文件读写对象)
思路:
成功注册-->客户端调用Register()方法--->服务器调用save()方法,save用jdbc写。
代码:
1、服务器待命。
package com.xkfx.qq.server; import com.xkfx.qq.tools.serverOnly.Database; import com.xkfx.qq.tools.transmit.User; import java.io.IOException; import java.io.ObjectInputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; class RegisterServer { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(8000); while (true) { Socket socket = server.accept(); invoke(socket); } } private static void invoke(final Socket socket) throws IOException { new Thread(new Runnable() { @Override public void run() { ObjectInputStream in = null; PrintWriter out = null; try { in = new ObjectInputStream(socket.getInputStream()); out = new PrintWriter(socket.getOutputStream()); Object obj = in.readObject(); User user = (User)obj; if (Database.find(user.getUsername())) { out.write("这个ID已经被注册了"); } else { Database.saveUser(user); out.write("注册成功"); } out.flush(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } finally { try { in.close(); } catch (IOException e) { e.printStackTrace(); } out.close(); try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }).start(); } }
2、客户端注册
// 用户点击了注册 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); JOptionPane.showMessageDialog(this, Server.Register(user)); } else { // 提示用户重新输入 JOptionPane.showMessageDialog(this, "输入不合法,请重新输入!"); } }
package com.xkfx.qq.tools.transmit; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.ObjectOutputStream; import java.net.Socket; public class Server { // 注册 public static String Register(User user){ Socket socket = null; ObjectOutputStream out = null; BufferedReader in = null; try { socket = new Socket("localhost", 8000); out = new ObjectOutputStream(socket.getOutputStream()); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out.writeObject(user); out.flush(); return in.readLine(); } catch (Exception e) { e.printStackTrace(); return "连接服务器失败"; } finally { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } try { out.close(); } catch (IOException e) { e.printStackTrace(); } try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } }
后续:
1、发现一个bug,貌似是由于catch里面不能有return造成的。。。
相关文章推荐
- 【Java】仿真qq尝试:用户注册(一)
- 【Java】仿真qq尝试:用户注册(三)
- 【Java】仿真qq尝试:聊天界面 && 响应用户输入
- java struts2入门学习实例--用户注册和用户登录整合
- 新Java运动:测试驱动开发3---用户注册2
- error MSB8011: 未能注册输出。请尝试启用“逐用户重定向”,或者使用提升的权限从命令提示符处注册该组件
- 用户注册__浏览器+服务器__HTML+CSS+JS+JAVA
- 用户注册后,使用激活码的Java实现
- java简单的MVC实现简单的用户注册与登录
- 用户注册后,通过网站发送到邮箱中的激活链接激活用户 java
- 新Java运动:测试驱动开发3---用户注册
- JSP+JavaBean+Servlet技术实现某网站用户注册和登录功能
- 用户注册后,使用激活码的Java实现
- java尝试用户协同推荐 无优化版
- error MSB8011:未能注册输出。请尝试启用“逐用户重定向”
- 新Java运动:测试驱动开发3---用户注册3
- 用户注册后,使用激活码的Java实现
- 我爱粟裕--与针式PKM的注册用户的QQ对话系列[2]
- ocx链接错误 Project : error PRJ0050: 未能注册输出。请尝试启用“每个用户的重定向”,或者用提升的权限从命令提示窗
- QQ快捷登录提示:禁止开发商强制用户重新注册或绑定其他帐号