`
JadeLuo
  • 浏览: 425612 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

java 序列化与反序列化

    博客分类:
  • java
 
阅读更多

protected void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

ObjectInputStream ois = new ObjectInputStream(request.getInputStream());

BizQueryCondition bqc;

try {

bqc = (BizQueryCondition)  ois.readObject();

       System.out.println(bqc.getStime());

       System.out.println(bqc.getEtime());

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

 

http://blog.csdn.net/zmx729618/article/details/52814213

http://sammor.iteye.com/blog/866289

http://blog.csdn.net/ni_hao_ya/article/details/8162118

 

package com.ygsoft.community.regulation.util;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class HttpAccessUtil {

	/**
	 * 日志
	 */
	private static Log log = LogFactory.getLog(HttpAccessUtil.class);

	/**
	 * 采取post方式提交序列化后的object对象 </br>
	 * 另请参考:java.io.ObjectInputStream/ObjectOutputStream
	 * 
	 * @param requestUrl
	 *            请求地址
	 * @param connTimeoutMills
	 *            设置连接主机超时,单位:毫秒
	 * @param readTimeoutMills
	 *            设置从主机读取数据超时,单位:毫秒
	 * @param serializedObject
	 *            序列化后的object对象
	 * 
	 * @return remoteHttp返回的结果
	 */
	public static String httpPostSerialObject(String requestUrl,
			int connTimeoutMills, int readTimeoutMills, Object serializedObject)
			throws Exception {
		HttpURLConnection httpUrlConn = null;
		InputStream inputStream = null;
		InputStreamReader inputStreamReader = null;
		BufferedReader bufferedReader = null;
		ObjectOutputStream oos = null;
		StringBuffer buffer = new StringBuffer();
		try {
			URL url = new URL(requestUrl);
			httpUrlConn = (HttpURLConnection) url.openConnection();
			// 设置content_type=SERIALIZED_OBJECT
			// 如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException
			httpUrlConn.setRequestProperty("Content-Type",
					"application/x-java-serialized-object");
			if (connTimeoutMills > 0)
				httpUrlConn.setConnectTimeout(connTimeoutMills);
			if (readTimeoutMills > 0)
				httpUrlConn.setReadTimeout(readTimeoutMills);
			// 设置是否向httpUrlConn输出,因为是post请求,参数要放在http正文内,因此需要设为true, 默认情况下是false
			httpUrlConn.setDoOutput(true);
			// 设置是否从httpUrlConn读入,默认情况下是true
			httpUrlConn.setDoInput(true);
			// 不使用缓存
			httpUrlConn.setUseCaches(false);

			// 设置请求方式,默认是GET
			httpUrlConn.setRequestMethod("POST");
			httpUrlConn.connect();

			if (serializedObject != null) {
				// 此处getOutputStream会隐含的进行connect,即:如同调用上面的connect()方法,
				// 所以在开发中不调用上述的connect()也可以,不过建议最好显式调用
				// write object(impl Serializable) using ObjectOutputStream
				oos = new ObjectOutputStream(httpUrlConn.getOutputStream());
				oos.writeObject(serializedObject);
				oos.flush();
				// outputStream不是一个网络流,充其量是个字符串流,往里面写入的东西不会立即发送到网络,
				// 而是存在于内存缓冲区中,待outputStream流关闭时,根据输入的内容生成http正文。所以这里的close是必须的
				oos.close();
			}
			// 将返回的输入流转换成字符串
			// 无论是post还是get,http请求实际上直到HttpURLConnection的getInputStream()这个函数里面才正式发送出去
			inputStream = httpUrlConn.getInputStream();// 注意,实际发送请求的代码段就在这里
			inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
			bufferedReader = new BufferedReader(inputStreamReader);

			String str = null;
			while ((str = bufferedReader.readLine()) != null) {
				buffer.append(str);
			}
		} catch (Exception e) {
			log.error(requestUrl + " error ", e);
			throw e;
		} finally {
			try {
				IOUtils.closeQuietly(bufferedReader);
				IOUtils.closeQuietly(inputStreamReader);
				IOUtils.closeQuietly(inputStream);
				IOUtils.closeQuietly(oos);
				if (httpUrlConn != null) {
					httpUrlConn.disconnect();
				}
			} catch (Exception e) {
				log.error(e);
			}
		}
		return buffer.toString();
	}

}

 

分享到:
评论

相关推荐

    Java序列化与反序列化

    Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化

    java序列化与反序列化

    java序列化与反序列化

    探索Java序列化与反序列化的奥秘:数据持久化的桥梁

    ### Java序列化与反序列化的深入解析 #### Java序列化的重要性及应用场景 Java序列化是一项核心功能,它允许程序员将对象的状态转化为字节流的形式,从而实现对象的持久化存储或者在网络之间进行传递。这对于诸如...

    Java序列化与反序列化<转>

    Java序列化与反序列化是Java编程中一个重要的概念,它允许我们将对象的状态转换为字节流,以便存储或在网络中传输。这个过程被称为序列化,而将字节流恢复为对象的过程则称为反序列化。Java提供了一个内置的机制来...

    《Java 序列化与反序列化:基础与应用》.docx

    《Java 序列化与反序列化:基础与应用》

    java序列化和反序列化

    ### Java序列化与反序列化详解 #### 一、Java序列化概述 Java序列化(Serialization)是一项重要的功能,它可以将对象的状态转化为一系列字节,从而实现对象的持久化存储或在网络上传输。序列化机制使得Java对象...

    java序列化和反序列化的方法

    java 序列化和反序列化的方法 Java 序列化和反序列化是 Java 语言中的一种机制,用于将对象转换为字节流,以便在网络上传输或存储。序列化是将对象转换为字节流的过程,而反序列化是将字节流转换回对象的过程。 在...

    java 对象的序列化与反序列化

    Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...

    Java序列化和反序列化

    ### Java序列化与反序列化的深入解析 #### 序列化的功能与意义 序列化是Java编程语言中的一项核心功能,其主要目的是将对象的状态转换为可以存储或传输的格式,便于持久化保存或网络传输。序列化并不涉及对象的...

    java 序列化与反序列化的实例详解

    java 序列化与反序列化的实例详解 Java 序列化与反序列化是 Java 编程语言中的一种机制,允许将 Java 对象转换为字节序列,并将其反序列化回 Java 对象。序列化是指将 Java 对象转换为字节序列的过程,而反序列化是...

    java serializable 序列化与反序列化

    Java的序列化与反序列化是Java开发中的一项重要技术,它允许我们将对象的状态转换为字节流,以便存储或在网络上传输。`Serializable`接口是Java提供的一个标记接口,用于实现对象的序列化。当一个类实现了这个接口,...

    java序列化(Serializable)的作用和反序列化.doc

    ### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化的概念 序列化是指将程序中的对象转换为一系列字节流的过程,主要用于保存对象的状态或在网络之间传输对象。序列化的主要目的是为了能够持久化...

    java反序列化工具

    Java反序列化是一种将已序列化的对象状态转换回对象的过程,它是Java平台中持久化数据的一种常见方式。在Java应用程序中,序列化用于保存对象的状态以便稍后恢复,或者在网络间传输对象。然而,这个过程也可能引入...

    Java对象序列化和反序列化工具Xson.zip

    Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven:  &lt;groupId&gt;com.github.xsonorg&lt;/groupId&gt;  &lt;artifactId&gt;xson-core  &lt;version&gt;1.0.1 ...

    C#和Java的序列化反序列化

    本篇文章将深入探讨C#和Java中的序列化与反序列化机制。 首先,我们要了解什么是序列化。序列化是指将对象的状态转化为可存储或可传输的数据格式的过程。这个过程通常将内存中的对象转换成字节流,以便保存到磁盘、...

    Java Json序列化与反序列化

    Java中的JSON(JavaScript Object Notation)序列化与反序列化是开发过程中常见且重要的操作,主要用于数据交换和存储。JSON是一种轻量级的数据交换格式,它允许我们将Java对象转换为JSON字符串,反之亦然,方便在...

    详解Java 序列化与反序列化(Serialization)

    Java 序列化与反序列化(Serialization)知识点总结 Java 序列化与反序列化是 Java 语言中的一种机制,用于将对象的状态信息转化为可以存储或者传输的形式的过程。序列化(Serialization)是将对象的状态信息转化为...

Global site tag (gtag.js) - Google Analytics