Serialize

Deserialize

Serialized data trong Java
AC ED 00 05: Magic header của Java serialized object

Thuộc tính (field) trong class Users là: name

Ljava/lang/String; → kiểu dữ liệu String

Giá trị của thuộc tính "name" là chuỗi "Guest”

73 → 's' (ký hiệu serialVersionUID trong stream). Kiểm tra version tương thích giữa serialized data và class hiện tại

Java’s Magic method

Tùy chỉnh quá trình Serialize và Deserialize

@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
private String message;
public String serializeToBase64(Serializable obj) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(output);
oos.***writeObject***(obj);
oos.close();
return Base64.getEncoder().encodeToString(output.toByteArray());
}
private static Object deserializeFromBase64(String s) throws IOException, ClassNotFoundException {
byte[] data = Base64.getDecoder().decode(s);
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));
Object o = ois.***readObject***();
ois.close();
return o;
}
→ Khi thực hiện serialize hoặc deserialize, JAVA sẽ tự động gọi đến các method này.
