java 序列化的作用
public class Test {
public static String requestUrl = "http://localhost/SpringMvc/test.do";
public static void main(String[] args) {
TestVo test = new TestVo();
test.setName("baichuanyu");
test.setAge(20);
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");
httpUrlConn.setConnectTimeout(10000);
httpUrlConn.setReadTimeout(10000);
// 设置是否向httpUrlConn输出,因为是post请求,参数要放在http正文内,因此需要设为true, 默认情况下是false
httpUrlConn.setDoOutput(true);
// 设置是否从httpUrlConn读入,默认情况下是true
httpUrlConn.setDoInput(true);
// 不使用缓存
httpUrlConn.setUseCaches(false);
// 设置请求方式,默认是GET
httpUrlConn.setRequestMethod("POST");
httpUrlConn.connect();
if (test != null)
{
// 此处getOutputStream会隐含的进行connect,即:如同调用上面的connect()方法,
// 所以在开发中不调用上述的connect()也可以,不过建议最好显式调用
// write object(impl Serializable) using ObjectOutputStream
oos = new ObjectOutputStream(httpUrlConn.getOutputStream());
oos.writeObject(test);
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)
{
System.out.println(e);
}
finally
{
try
{
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
oos.close();
if (httpUrlConn != null)
{
httpUrlConn.disconnect();
}
}
catch (Exception e)
{
}
}
}
}
网络传输:通过推送改变网站中比如map中存储的对象
@RequestMapping(value = "/test", method = RequestMethod.POST)
public void javaSerialize(HttpServletResponse response,HttpServletRequest request) {
try {
ObjectInputStream ois = new ObjectInputStream(request.getInputStream());
TestVo user = (TestVo) ois.readObject();
System.out.println(user.getName()+":"+user.getAge());
map.put("user", user);
PrintWriter w = response.getWriter();
w.print("已收到");
w.flush();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
java 序列化的作用的更多相关文章
- Java序列化的作用和反序列化
1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object states,但 ...
- JAVA序列化的作用
所谓的Serializable,就是java提供的通用数据保存和读取的接口.至于从什么地方读出来和保存到哪里去都被隐藏在函数参数的背后了.这样子,任何类型只要实现了Serializable接口,就可以 ...
- Java序列化的几种方式以及序列化的作用
Java序列化的几种方式以及序列化的作用 本文着重讲解一下Java序列化的相关内容. 如果对Java序列化感兴趣的同学可以研究一下. 一.Java序列化的作用 有的时候我们想要把一个Java对象 ...
- Java序列化的几种方式
本文着重解说一下Java序列化的相关内容. 假设对Java序列化感兴趣的同学能够研究一下. 一.Java序列化的作用 有的时候我们想要把一个Java对象变成字节流的形式传出去,有的时候我们想要从 ...
- Java序列化接口的作用总结
一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做”持久化”. 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从硬盘中读取就可以了. ...
- (转)java 序列化ID的作用
序列化ID的作用: 其实,这个序列化ID起着关键的作用,它决定着是否能够成功反序列化!简单来说,java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的.在进行反序 ...
- Java序列化接口Serializable接口的作用总结
一.Java序列化接口Serializable的作用: 一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做”持久化”. 对象的默认序列化机制写入的内容是:对象的类,类签名,以及非瞬态和非静态字 ...
- java 序列化 serialVersionUID 的作用 和 两种添加方式
serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的 ...
- 什么是Java序列化,如何实现Java序列化?或者请解释Serializable接口的作用?
象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象,对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久保存在磁盘上,通过网络将这种二进制流传输到另 ...
随机推荐
- 小程序app is not defined
错误记录: 小程序丨 报错:app is not defined; 解决方案: Js头部添加:var app = getApp(); 返回按钮: wx.navigateBack(); 转发 ...
- BZOJ 1016 JSOI 2008 最小生成树计数 Kruskal+搜索
题目大意:给出一些边,求出一共能形成多少个最小生成树. 思路:最小生成树有非常多定理啊,我也不是非常明确.这里仅仅简单讲讲做法.关于定各种定理请看这里:http://blog.csdn.net/wyf ...
- 使用 Google 高级搜索的一些技巧
一,GOOGLE简介 Google(www.google.com)是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年9月发明,Google Inc. 于 ...
- jumpserver-v0.5.0 应用图解
一. Jumpserver启动 Python: 版本 3.6 1.1 启动Jumpserver 先进入Python虚拟环境 [root@localhost ~]# source /opt/py3/bi ...
- MATLAB 的日期和时间
MATLAB的日期和时间常用函数 函数 说明 calender 返回日历 clock 当前时间 date 当前日期 weekday 星期几 now 当前的日期和时间 datevec 以向量显示日期 d ...
- win10下iis绑定局域网ip无效的解决方案
win7不会出现此问题 win10会 win8未测试 问题描述 <binding protocol="http" bindingInformation="*:808 ...
- ftp获取远程Pdf文件
此程序需要安装ftp服务器,安装adobe reader(我这里使用的adobe reader9.0) 1.部署ftp服务器 将ftp的权限设置为允许匿名访问,部署完成 2.安装adobe reade ...
- 当执行sql更新失误,添加了错误的判断条件,导致数据表数据出错时,如何利用备份数据库实现联合更新还原数据。
首先得有备份数据库,没有备份肯定无法联合更新回复. 我错误更新了 [SBSDB].[dbo].[wallet_user_info]中的用户名user_name 我的备份数据库及对应数据表SBSDBTe ...
- 转:EMQ(emqttd) 2.x 安装和使用(物联网传输控制协议的Broker)
支持下国产开源. MQTT物联网传输控制协议:<MQTT-3.1.1-CN.pdf> 下载:emqttd-centos64-v2.0-rc.2-20161019.zip 安装: $ unz ...
- eclipse Alt+/ 无法提示代码
1.找到windows下的General 下的editors 下的keys 2.把word completion 的binding由原来的Alt+/该成Alt+c 3.把Content Assist下 ...