我是靠谱客的博主 奋斗网络,这篇文章主要介绍实现客户端与服务端之间传输json数据,现在分享给大家,希望可以做个参考。

需求:用户在客户端输入用户名,密码,服务端获取数据后,把这个用户的用户名和密码写入数据库,以完成注册。

步骤:

  • 创建数据库,并创建表。
  • 利用myeclipse创建新工程,利用JDBC实现java操纵数据库。
  • 实现客户端类,服务端类。

具体实现:

  • 创建数据表
复制代码
1
2
3
4
5
6
create table usertable ( username VARCHAR(20), pawd VARCHAR(20) );
  • 利用JDBC实现java操纵数据库
复制代码
1
2
3
4
5
public class DBUtil { private static final String url="jdbc:mysql://localhost/user?characterEncoding=utf8&useSSL=false";//主机名,密码等信息 private static final String name="your databasename";//数据库用户名 private static final String password="your password";//数据库密码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private Connection connection=null; static { try { Class.forName("com.mysql.jdbc.Driver");//首先要加载一个驱动类 connection=DriverManager.getConnection(url, name, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection connect() throws SQLException { return DriverManager.getConnection(url, name, password); } }
  • 实现客户端类
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.timmy.main; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import net.sf.json.JSONObject; public class Client { public static void main(String[] args) throws UnknownHostException, IOException { Socket socket=new Socket("localhost",8888);//客户端socket,用来发送数据。 OutputStream outputStream=socket.getOutputStream(); //PrintWriter pWriter=new PrintWriter(outputStream); //创建json格式数据 JSONObject jsonObject=new JSONObject(); //填充json数据内容 jsonObject.put("username", "kongxiangyue"); jsonObject.put("password", "123456"); //json转化成字符串 String string=jsonObject.toString(); //字符串转化byte数组 byte[] bytes=string.getBytes(); //发送json数据 //pWriter.write(bytes); outputStream.write(bytes); outputStream.flush();//刷新,向服务器发送信息; //pWriter. //pWriter.flush(); socket.shutdownOutput(); //pWriter.close(); outputStream.close(); socket.close(); int port =socket.getLocalPort(); System.out.println(port); ServerSocket serverSocket=new ServerSocket(port); Socket socket1=serverSocket.accept(); InputStream is=socket1.getInputStream(); InputStreamReader inr =new InputStreamReader(is); BufferedReader bReader=new BufferedReader(inr); String data = bReader.readLine(); while(data!=null) { System.out.println("数据是:"+data); data=bReader.readLine(); } socket1.shutdownInput(); bReader.close(); inr.close(); is.close(); socket1.close(); } }
  • 实现服务端类
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package com.timmy.main; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import net.sf.json.JSON; import net.sf.json.JSONObject; import com.timmy.util.DBUtil; public class main { public static void main(String[] args) { try { ServerSocket serverSocket=new ServerSocket(8888);//绑定端口号 System.out.println("***服务器已经打开***");//提示信息 Socket socket=null;// Integer count=0; socket=serverSocket.accept();//这个socket用来读取接受的数据 DataInputStream inputStream = null; //数据输入流 DataOutputStream outputStream = null; //数据输出流 String strInputstream =""; inputStream =new DataInputStream(socket.getInputStream()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 可以捕获内存缓冲区的数据,转换成字节数组 byte[] by = new byte[2048]; int n; while((n=inputStream.read(by))!=-1){ //将流中的数据缓冲到字节数组中去,如果没到末尾返回的是真实个数,到末尾时,返回的是-1; baos.write(by,0,n); //readline将会把json格式破坏掉 } strInputstream = new String(baos.toByteArray()); socket.shutdownInput(); baos.close(); JSONObject jsonObject=JSONObject.fromObject(strInputstream); String username=jsonObject.optString("username"); String password=jsonObject.optString("password"); System.out.println(jsonObject.toString()); Connection connection=DBUtil.connect(); String sql="insert into usertable values(?,?)"; PreparedStatement ptmt=connection.prepareStatement(sql); ptmt.setString(1, username); ptmt.setString(2, password); ptmt.execute(); //服务器响应客户端 int port =socket.getPort(); System.out.println(port); Socket socket1=new Socket("localhost",port); OutputStream os = socket1.getOutputStream(); PrintWriter pw =new PrintWriter(os); pw.write("数据已录入数据库"); pw.flush(); socket1.shutdownOutput(); pw.close(); os.close(); socket1.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

最后

以上就是奋斗网络最近收集整理的关于实现客户端与服务端之间传输json数据的全部内容,更多相关实现客户端与服务端之间传输json数据内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(110)

评论列表共有 0 条评论

立即
投稿
返回
顶部