实现客户端与服务端之间传输json数据
2017-07-18 23:25
295 查看
需求:用户在客户端输入用户名,密码,服务端获取数据后,把这个用户的用户名和密码写入数据库,以完成注册。
步骤:
具体实现:
1.创建数据表
2.利用JDBC实现java操纵数据库
3.实现客户端类
实现服务端类
步骤:
1. 创建数据库,并创建表。 2. 利用myeclipse创建新工程,利用JDBC实现java操纵数据库。 3. 实现客户端类,服务端类。
具体实现:
1.创建数据表
create table usertable ( username VARCHAR(20), pawd VARCHAR(20) );
2.利用JDBC实现java操纵数据库
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";//数据库密码
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); } }
3.实现客户端类
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(); } }
实现服务端类
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(); } } }
相关文章推荐
- SilverLight企业应用框架设计【五】客户端调用服务端(使用JSON传递数据,自己实现RESTful Web服务)
- Android客户端与服务端之间传递json数据
- Android实现FTP客户端服务端多图下载【两部android手机之间传输】
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- android使用JSON进行网络数据交换(服务端、客户端)的实现
- C#中TCP实现多个客户端与服务端数据与文件的传输
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- WCF 通过net tcp 协议 ,在服务端服务器和客户端服务器之间传输数据,注意配置事项
- http传输json进行服务端接口与客户端对接,以及restful实现
- [通信] C# TCP实现多个客户端与服务端 数据 与 文件的传输
- 【Android 开发】: Android客户端与服务端之间使用JSON交互数据。
- Android 客户端从服务端获取json数据并解析的实现代码
- 实践Android客户端与服务端之间使用JSON交互数据。
- http传输json进行服务端接口与客户端对接,以及restful实现
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
- 服务端和Android客户端利用Socket传输JSON数据
- 使用zlib模块实现HTTP服务端与客户端实现传输数据压缩
- JAVA NIO实现服务端与客户端简单数据传输 JAVA NIO 之一
- java实现服务端守护进程来监听客户端通过上传json文件写数据到hbase中