序列化和反序列化(六)——Java對象的網絡傳輸(一)

Java對象網絡傳輸常用於Java異構平臺間數據的交互,SocketHTTP均可以實現Java對象的網絡傳輸,具體示例如下:

1Socket實現Java對象的網絡傳輸

      keeper Java工程:

             UserInfo類:

package com.jd.vo;

import java.io.Serializable;

public class UserInfo implements Serializable{

	private static final long serialVersionUID = 3103317843148814898L;
	private int age;
	private String name;

	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

             服務器端:

package com.jd.test;

import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

import com.jd.vo.UserInfo;

public class Server {

	public static void main(String[] args) {
		try {
			ServerSocket serverSocket = new ServerSocket(8080);
			Socket socket = serverSocket.accept();
			ObjectOutput objectOutput = new ObjectOutputStream(socket.getOutputStream());
			
			UserInfo userInfo = new UserInfo();
			userInfo.setAge(12);
			userInfo.setAddress("Tom");
			
			objectOutput.writeObject(userInfo);
			objectOutput.flush();
			objectOutput.close();
			serverSocket.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

      venus Java工程:

             UserInfo類:   keeper工程UserInfo

             客戶端:

package com.jd.test;

import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.net.Socket;

public class Client {

	public static void main(String[] args) {
		try {
			Socket socket = new Socket("192.168.3.55", 8080);
			ObjectInput objectInput = new ObjectInputStream(socket.getInputStream());
			UserInfo userInfo = (UserInfo) objectInput.readObject();
			objectInput.close();
			System.out.println(userInfo);
			socket.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

2HTTP實現Java對象的網絡傳輸

      keeper Java Web工程:

             UserInfo類:

package com.jd.vo;

import java.io.Serializable;

public class UserInfo implements Serializable{

	private static final long serialVersionUID = 3103317843148814898L;
	private int age;
	private String name;

	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

             服務器端:

package com.jd.servlet;

import java.io.IOException;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jd.vo.UserInfo;

@WebServlet("/DataServlet")
public class DataServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
  
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		ObjectOutput objectOutput = new ObjectOutputStream(response.getOutputStream());
		
		UserInfo userInfo = new UserInfo();
		userInfo.setAge(20);
		userInfo.setName("Tom");
		
		objectOutput.writeObject(userInfo);
		objectOutput.flush();
		objectOutput.close();
	}
}

      venus Java工程:

             UserInfo類:同keeper工程UserInfo

             客戶端:

package com.jd.test;

import java.io.ObjectInputStream;

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

import com.jd.vo.UserInfo;

public class Test {

	public static void main(String[] args) {
		try {
			CloseableHttpClient httpclient = HttpClients.createDefault();
			HttpGet httpGet = new HttpGet("http://127.0.0.1:8080/keeper/DataServlet");// 創建http GET請求
			CloseableHttpResponse response = httpclient.execute(httpGet);// 執行請求
			if (response.getStatusLine().getStatusCode() == 200) {// 判斷返回狀態是否爲200
				HttpEntity entity = response.getEntity();
				ObjectInputStream in = new ObjectInputStream(entity.getContent());
				UserInfo userInfo = (UserInfo) in.readObject();
				System.out.println(userInfo);
			}
			response.close();
			httpclient.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章