新浪博客怎么做网站,济南建设信用网网站,关于机关单位网站的建设,填表网站怎么做java中序列化与反序列化
概念
在Java中#xff0c;序列化是指将对象转换为字节流的过程#xff0c;而反序列化则是将字节流转换回对象的过程。序列化和反序列化通常用于在网络上传输对象或将对象持久化到磁盘上。
要对一个对象进行序列化#xff0c;可以使用ObjectOutput…java中序列化与反序列化
概念
在Java中序列化是指将对象转换为字节流的过程而反序列化则是将字节流转换回对象的过程。序列化和反序列化通常用于在网络上传输对象或将对象持久化到磁盘上。
要对一个对象进行序列化可以使用ObjectOutputStream类。该类提供了writeObject()方法可以将对象转换为字节流并写入到输出流中。
要对一个字节流进行反序列化可以使用ObjectInputStream类。该类提供了readObject()方法可以从输入流中读取字节流并转换为对象。
序列化
ObjectOutputStream -- writeObject()
反序列化:
ObjectInputStream -- readObject() 什么是反序列化漏洞
java中的反序列化漏洞由于开发者重写了readobject()方法在该方法里面存在执行代码在重写的readobject()方法中执行了链式调用最终执行到了危险函数的位置
代码演示
先定义类 serialize,deserialize,test1,person
代码中如果报错一般为没有导包鼠标点过去然后altenter即可
serialize
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;public class serialize implements Serializable {public static void serialize1(Object obj, String filePath) throws IOException {try (FileOutputStream fileOut new FileOutputStream(filePath);ObjectOutputStream objectOut new ObjectOutputStream(fileOut)){objectOut.writeObject(obj);}}}deserialize
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;public class deserialize implements Serializable {public static Object deserialize1(String filePath) throws IOException, ClassNotFoundException {try (FileInputStream fileIn new FileInputStream(filePath);ObjectInputStream objectIn new ObjectInputStream(fileIn)) {return objectIn.readObject();}}
}person
import java.io.Serializable;public class person implements Serializable {public String nameorder;public int age20;}test1
序列化时
import java.io.*;
public class test1 {public static void main(String[] args) throws IOException, ClassNotFoundException {person person1new person();serialize serinew serialize();serialize.serialize1(person1,order.bin);}}然后会在当前目录生成一个order.bin文件
查看内容为序列化的结果 反序列化时
import java.io.*;
public class test1 {public static void main(String[] args) throws IOException, ClassNotFoundException {person person1new person();deserialize seri1new deserialize();System.out.println(反序列化结果 deserialize.deserialize1(order.bin));}}反序列化结果如图