- 浏览: 1007956 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (394)
- OSGI (14)
- 多线程 (10)
- 数据库 (30)
- J2ME (1)
- JAVA基础知识 (46)
- 引用包 (1)
- 设计模式 (7)
- 工作流 (2)
- Ubuntu (7)
- 搜索引擎 (6)
- QT (2)
- Ubuntu下编程 (1)
- 小程序 (2)
- UML (1)
- Servlet (10)
- spring (16)
- IM (12)
- 文档视频转为flash格式在线播放 (19)
- Maven (8)
- 远程调用 (2)
- PHPRPC (1)
- EXTJS学习 (2)
- Hibernate (16)
- 技术文章 (38)
- flex (5)
- 海量数据处理 (5)
- FTP (8)
- JS (10)
- Struts (1)
- hibernate search (13)
- JQuery (2)
- EMail (3)
- 算法 (4)
- SVN (7)
- JFreeChart (4)
- 面试 (4)
- 正规表达式 (2)
- 数据库性能优化 (10)
- JVM (6)
- Http Session Cookie (7)
- 网络 (12)
- Hadoop (2)
- 性能 (1)
最新评论
-
hy1235366:
能够随便也发一下,你退火算法程序使用的DistanceMatr ...
模拟退火算法总结(含例子)(转) -
梅强强:
感谢分享。。帮大忙了
swftools转换文件时线程堵塞问题的解决方法 -
wenlongsust:
openoffice和文件不在同一个服务器上,用过吗?
[JODConverter]word转pdf心得分享(转) -
2047699523:
如何在java Web项目中开发WebService接口htt ...
利用Java编写简单的WebService实例 -
abingpow:
唉,看起来好像很详细很不错的样子,可惜不是篇面向初学者的文章, ...
Spring与OSGi的整合(二)(转)
这次我们讲的是控制对象的序列化和反序列化
控制序列化就是有选择的序列化对象,而不是把对象的所以内容都序列化,前篇我们的例子中介绍了transit变量和类变量(static)不被序列化,现在我们还有一种更为灵活的控制对象序列化和反序列方法,可以在序列化过程中储存其他非this对象包含的数据
我们现在再来介绍一个接口 java.io.Externalizable 。当对象实现了这个接口时,就可以灵活的控制它的序列化和反序列过程,这个接口继承了java.io.Serializable
Externalizable 接口定义了两个方法,writerExternal方法在序列化时被调用,可以再该方法中控制序列化内容,readExternal方法在反序列时被调用,可以在该方法中控制反序列的内容
好了,现在我们改写上例的UserInfo
import java.io.*; import java.util.*; //本程序通过实现Externalizable接口控制对象序列化和反序列 public class UserInfo implements Externalizable { public String userName; public String userPass; public int userAge; public UserInfo(){ } public UserInfo(String username,String userpass,int userage){ this.userName=username; this.userPass=userpass; this.userAge=userage; } //当序列化对象时,该方法自动调用 public void writeExternal(ObjectOutput out) throws IOException{ System.out.println("现在执行序列化方法"); //可以在序列化时写非自身的变量 Date d=new Date(); out.writeObject(d); //只序列化userName,userPass变量 out.writeObject(userName); out.writeObject(userPass); } //当反序列化对象时,该方法自动调用 public void readExternal(ObjectInput in) throws IOException,ClassNotFoundException{ System.out.println("现在执行反序列化方法"); Date d=(Date)in.readObject(); System.out.println(d); this.userName=(String)in.readObject(); this.userPass=(String)in.readObject(); } public String toString(){ return "用户名: "+this.userName+";密码:"+this.userPass+ ";年龄:"+this.userAge; } }
改写测试类
import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Date; import java.lang.management.*; public class Test { //序列化对象到文件 public static void serialize(String fileName){ try { //创建一个对象输出流,讲对象输出到文件 ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(fileName)); UserInfo user=new UserInfo("renyanwei","888888",20); out.writeObject(user); //序列化一个会员对象 out.close(); } catch (Exception x) { System.out.println(x.toString()); } } //从文件反序列化到对象 public static void deserialize(String fileName){ try { //创建一个对象输入流,从文件读取对象 ObjectInputStream in=new ObjectInputStream(new FileInputStream(fileName)); //读取UserInfo对象并调用它的toString()方法 UserInfo user=(UserInfo)(in.readObject()); System.out.println(user.toString()); in.close(); } catch (Exception x) { System.out.println(x.toString()); } } public static void main(String[] args) { serialize("D:\\test.txt"); System.out.println("序列化完毕"); deserialize("D:\\test.txt"); System.out.println("反序列化完毕"); } }
执行结果
现在执行序列化方法
序列化完毕
现在执行反序列化方法
Thu Oct 23 22:18:12 CST 2008
用户名: renyanwei;密码:888888;年龄:0
反序列化完毕
通过一张图来看程序流程
首先,我们在序列化UserInfo对象的时候,由于这个类实现了Externalizable 接口,在writeExternal()方法里定义了哪些属性可以序列化,哪些不可以序列化,所以,对象在经过这里就把规定能被序列化的序列化保存文件,不能序列化的不处理,然后在反序列的时候自动调用readExternal()方法,根据序列顺序挨个读取进行反序列,并自动封装成对象返回,然后在测试类接收,就完成了反序列
发表评论
-
Java线程(二):线程同步synchronized和volatile(转)
2014-03-17 00:09 914转载自:http://blog.csdn.net/ghsau ... -
浅谈Java多线程的同步问题(l转)
2014-03-17 00:07 955非常好的使用线程同步的文章 转载自http://www.c ... -
JVM的垃圾回收机制详解和调优(转)
2013-06-20 10:31 7401.JVM的gc概述 gc即垃圾 ... -
深入探讨 Java 类加载器(转)
2013-06-20 10:17 898转载自:http://www.ibm.com/develop ... -
java反射详解(推荐转)
2013-05-15 10:42 903载自:http://www.cnblogs.com/roll ... -
java静态方法、非静态代码块{}、静态代码块static{}(转)
2012-07-13 14:33 1511转自:http://www.cn-java.com/www1/ ... -
error 与 Exception区别(转)
2012-07-13 14:31 1100Error类和Exception类都继承自Throwab ... -
java面试题有哪些常见的(转)
2012-07-13 14:30 1219第一,谈谈final, finally, finaliz ... -
java Math.round()(转)
2012-07-11 14:17 1210public class MathTest { ... -
Java异常的分类(转)
2012-07-11 08:57 1067转载自:http://blog.csdn.net/ilibab ... -
java 内联函数(转)
2012-06-28 23:40 1850以前用过C++,知道它 ... -
堆栈,堆栈,堆和栈的区别(转)
2011-05-08 00:36 1209不防看看这篇文章:http://www.cppblog.com ... -
第二十章 指针 二 为指针分配和释放空间(转)
2011-05-08 00:10 1517载自<白话c++>:http://17de.com ... -
数据结构中各种时间复杂度(转)
2011-05-06 09:58 2812(1)冒泡排序 冒泡排序就是把小的元素往 ... -
C#之int挑战Java之Integer(转)
2011-04-28 14:24 1361可能有些图会看不到,可以到转载处去阅读:http://kb.c ... -
Java: 堆 & 栈(转)
2011-04-28 14:16 1420栈是运行时的单位,而堆是存储的单位。栈解决程序的运行问题,即程 ... -
native2ascii 使用方法 及 Java字符编码(转)
2011-04-18 01:17 2754在做Java开发的时候,常 ... -
Unicode,ISO-8859,GBK,UTF-8编码及相互转换(java)(转)
2011-04-18 01:15 69081、函数介绍在Java中,字符串用统一的Unicode编码 ... -
GBK与UTF-8 转换乱码详解(转)
2011-04-18 01:07 3508getBytes 的功能是将字符转换成字节数组, gbk. ... -
Java TreeMap的简单实现(转)
2011-04-18 00:29 1119TreeMap的实现与二叉搜索树显示,其对应的节点格式为 E ...
相关推荐
这个“Java反序列化终极测试工具”可能是为了帮助开发者测试其应用程序中的反序列化过程,确保数据正确无误地恢复,并且可以用来检测潜在的安全问题,如利用不安全的反序列化漏洞进行攻击。 Java反序列化漏洞通常...
本压缩包“Java反序列化终极测试工具.zip”提供了两款专门用于测试Java反序列化漏洞的工具,这可以帮助开发者和安全研究人员检测其应用程序是否存在此类风险。 1. **JBOSS_EXP.jar**:这个工具可能专门针对JBOSS...
.net 将dataset json序列化和反序列化成dataset JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - ...
Java反序列化漏洞是软件安全领域的一个重要话题,它涉及到Java应用程序在处理序列化和反序列化过程中的安全问题。序列化是将对象状态转换为可存储或传输的数据格式的过程,而反序列化则是将这些数据恢复为原来的对象...
总的来说,理解和掌握序列化和反序列化对于任何程序员来说都是非常重要的技能,特别是在C++这样的强类型语言中。通过深入研究"StreamTest"项目,你可以更直观地了解如何在实际代码中应用这些概念。
总的来说,这个工具包对于理解和应对Java反序列化漏洞具有重要意义。开发者和安全团队可以使用它来评估他们的应用程序,确保在反序列化过程中没有暴露任何安全漏洞。同时,这也提醒我们,在设计和实现反序列化逻辑时...
这些服务器通常处理大量的序列化和反序列化操作,尤其是在处理HTTP请求、EJB通信、JMS消息传递等场景时。 **Java反序列化漏洞**: 反序列化漏洞主要出现在代码不正确地处理来自不可信源的序列化数据时。攻击者可以...
Java反序列化漏洞是软件安全...及时的漏洞检查和修复是防止此类攻击的关键步骤,而"Java反序列化漏洞检查工具V1.2_Weblogic XML反序列化漏洞检查工具CVE-2017-10271"这样的工具为安全管理人员提供了有力的辅助手段。
- Java反序列化漏洞的背景和原理:2015年发现的一种新型信息安全高危漏洞,由于Java语言的序列化机制存在缺陷,攻击者可以利用漏洞执行远程任意代码。 - 漏洞的影响范围:广泛影响基于Java编写的应用程序,包括但不...
在Java编程中,序列化和反序列化是常见的数据传输和持久化手段,允许对象的状态被转换为字节流,便于存储或在网络中传输。然而,这个过程也可能带来安全隐患,当不安全的类被反序列化时,可能会导致代码执行、权限...
Java反序列化漏洞利用工具
标题"Java反序列化工具.zip"暗示了这个压缩包包含了一些工具,这些工具可能是为了帮助开发者理解、测试或者防御Java反序列化漏洞而设计的。可能包括模拟攻击的payload生成器,或者用于检测和修复此类漏洞的分析工具...
XML序列化/反序列化类,放到项目中直接使用,很方便。 SerializationHelper
综上所述,"java反序列香草"工具可能是安全社区用来测试和诊断Java应用反序列化漏洞的一个实用工具,帮助用户发现和修复潜在的安全问题,确保系统的稳定和安全。了解并掌握这些知识点对于Java开发人员和安全专家来说...
这个压缩包文件“Java反序列化终极检测工具_Jboss & Weblogic & Websphere.zip”似乎包含了一些资源,可能是用于帮助开发者或安全研究人员检测这些Java应用服务器中的反序列化漏洞。 **反序列化过程** 在Java中,...
同时,了解并学习如何防御Java反序列化漏洞也很重要,这包括限制可接受的序列化类型、使用安全的反序列化库(如Apache Commons Lang的SerializationUtils)以及保持应用程序和服务器软件的更新。 总的来说,Java...
Shiro框架在处理用户认证和授权时可能会涉及对象的序列化和反序列化,因此也可能存在相关的安全风险。 在这个名为"shiro反序列化测试工具.zip"的压缩包中,包含的是用于检测Shiro框架是否存在反序列化漏洞的测试...
这个“Java反序列化漏洞利用集成工具”很可能是一个用于测试和分析Java应用中反序列化漏洞的工具集。下面,我们将深入探讨Java反序列化、漏洞成因、潜在风险以及如何利用和防范这些漏洞。 **什么是Java反序列化?** ...
这个技术的核心是序列化和反序列化过程,它使得对象可以在网络上进行传输。然而,这个特性也可能引入安全风险,尤其是当不安全的对象被反序列化时,可能导致代码执行、权限提升或其他恶意行为。 **Java RMI反序列化...