概述
需求:用户在客户端输入用户名,密码,服务端获取数据后,把这个用户的用户名和密码写入数据库,以完成注册。
步骤:
- 创建数据库,并创建表。
- 利用myeclipse创建新工程,利用JDBC实现java操纵数据库。
- 实现客户端类,服务端类。
具体实现:
- 创建数据表
create table usertable
(
username VARCHAR(20),
pawd VARCHAR(20)
);
- 利用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);
}
}
- 实现客户端类
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();
}
}
}
最后
以上就是奋斗网络为你收集整理的实现客户端与服务端之间传输json数据的全部内容,希望文章能够帮你解决实现客户端与服务端之间传输json数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复