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对象转换成平台无关的二进制流,从而允许把这种二进制流持久保存在磁盘上,通过网络将这种二进制流传输到另 ...
随机推荐
- LeetCode 格雷码序列的生成
问题概述:在一组数的编码中,若随意两个相邻的代码仅仅有一位二进制数不同.则称这样的编码为格雷码. 2位数的格雷码序列:00 : 001 : 111 : 310 : 2找规律:假设要求n位的格雷码,先要 ...
- SSH——增删改的实现二
二.批量删除 逻辑删除取派员,将取派员的deltag改为“1” 1. 为“作废”按钮绑定事件 //批量删除取派员 function doDelete(){ //获得选中的行 var rows = $( ...
- Java设计模式-代理模式之动态代理(附源代码分析)
Java设计模式-代理模式之动态代理(附源代码分析) 动态代理概念及类图 上一篇中介绍了静态代理,动态代理跟静态代理一个最大的差别就是:动态代理是在执行时刻动态的创建出代理类及其对象. 上篇中的静态代 ...
- vue 结合localStorage 来双向绑定数据
结合localStorage 来双向绑定数据(超级神奇) localStorage.js: const STORAGE_KEY = 'todos_vuejs' export default { fet ...
- sql 转 markdown
https://github.com/2liang/AutoBuildDocFromDB SQL脚本生成数据字典 http://www.jianshu.com/p/f491d0d3c503 这两个脚本 ...
- 李洪强经典面试题49-Objective-C
李洪强经典面试题49-Objective-C 面试笔试都是必考语法知识的.请认真复习和深入研究OC. Objective-C 方法和选择器有何不同?(Difference between method ...
- Redis 过期时间
http://www.redis.cn/commands/expire.html 附录: Redis 过期时间 Keys的过期时间 通常Redis keys创建时没有设置相关过期时间.他们会一直存在, ...
- Math函数的"四舍五入",Floor,Ceiling,Round的一些注意事项!
1.Math.Round:四舍六入五取偶 引用内容 Math.Round(0.0) //0Math.Round(0.1) //0Math.Round(0.2) //0Math.Round(0.3) / ...
- Javascript模块规范
因为有了模块,就可以更方便地使用别人的代码,想要什么功能,就加载什么模块.但是有一个前提,就是大家必须以同样的方式编写模块. 目前,通行的Javascript模块规范共有两种:CommonJS和AMD ...
- tp 大致执行流程
http://www.thinkphp.cn/code/305.html http://document.thinkphp.cn/manual_3_2.html#wechat