
首先说明一下序列化的知识:java中的序列化()机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输、或者持久化存储到数据库或文件系统中;然后在需要的时候,可以根据字节流中的信息来重构一个相同的对象
序列化机制在java中有着广泛的应用,EJB、RMI等技术都是以此为基础的
序列化机制是通过java
io
类和java
io
类来实现的
在序列化(serialize)一个对象的时候,会先实例化一个对象,然后调用其writeObject()方法;在反序列化(deserialize)的时候,则会实例化一个对象,然后调用其readObject()方法
上面您的错误,就是在于有一个或者几个没有"序列化"的数据,导致没有办法创建输出流,导致发生的java
io
之所以要序列化,我猜测是因为您的数据里面存在一个对象型的数据,但是该对象没有实现序列化
比如:您有一个字段为address,这个字段您是通过一个类Address来描述的,Address里面可能有province、city、street等等属性或者一些setter和getter,如果这个类,没有实现序列化,往往会出现这个问题
毕竟没有看到程序,是我的一个猜测,请检查一下程序或者发出来进行进一步讨论
js实现点击后将文字或复制到剪贴板的方法,代码非常简洁实用,具体功能代码如下所示:<table width="99%" border="0" cellpadding="0" cellspacing="0" class="firtable">
<tr>
<th width="100%" style="color: white;"><s:text name="询单明细"></s:text></th>
</tr>
<tr>
<td align="center">
<textarea name="inquiryContact1" id="inquiryContact1" rows="15" cols="60" readonly="readonly"></textarea>
<div id="inquiryInfoDIV" style="display:none">
<s:property value="inquiryContact" escape="false"/>
</div>
<script> dojobyId("inquiryContact1")innerText=dojobyId("inquiryInfoDIV")innerText;
</script>
</td> </tr>
<tr>
<td align="center">
<input type="button" id="button" name="button" value="复制" onclick="copyContact()"/>
</td> </tr> </table>
<script type="text/javascript">
var i = 0 ;
function copyContact(){
var contat = documentgetElementById("inquiryContact1")value;
windowclipboardDatasetData('text', contat);
if(windowclipboardDatagetData('text')==''){
if(i==1){
alert("复制失败,请手动Ctrl+C快捷键复制!");
}else{
alert("复制失败,请重新复制!");
i = 1;
}
}else{
alert("内容已经复制到剪贴板!");
}
}
</script>序列化
序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
序列化使其他代码可以查看或修改,那些不序列化便无法访问的对象实例数据。确切地说,代码执行序列化需要特殊的权限:即指定了 SerializationFormatter 标志的 SecurityPermission。在默认策略下,通过 Internet 下载的代码或 Internet 代码不会授予该权限;只有本地计算机上的代码才被授予该权限。
通常,对象实例的所有字段都会被序列化,这意味着数据会被表示为实例的序列化数据。这样,能够解释该格式的代码有可能能够确定这些数据的值,而不依赖于该成员的可访问性。类似地,反序列化从序列化的表示形式中提取数据,并直接设置对象状态,这也与可访问性规则无关。
对于任何可能包含重要的安全性数据的对象,如果可能,应该使该对象不可序列化。如果它必须为可序列化的,请尝试生成特定字段来保存不可序列化的重要数据。如果无法实现这一点,则应注意该数据会被公开给任何拥有序列化权限的代码,并确保不让任何恶意代码获得该权限。
中文名
序列化
外文名
Serialization
类型
概念
类别
通信
快速
导航
技术
Java编程中的序列化
PHP
目的
1、以某种存储形式使自定义对象持久化;
2、将对象从一个地方传递到另一个地方。
3、使程序更具维护性。
技术
二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。远程处理使用序列化“通过值”在计算机或应用程序域之间传递对象。
XML 序列化仅序列化公共属性和字段,且不保持类型保真度。当您要提供或使用数据而不限制使用该数据的应用程序时,这一点是很有用的。由于 XML 是一个开放式标准,因此,对于通过 Web 共享数据而言,这是一个很好的选择。SOAP 同样是一个开放式标准,这使它也成为一个颇具吸引力的选择。
Java编程中的序列化
序列化的实现方法
把一个Java对象写入到硬盘或者传输到网路上面的其它计算机,这时我们就需要自己去通过java把相应的对象写成转换成字节流。对于这种通用的 *** 作,我们为什么不使用统一的格式呢?没错,这里就出现了java的序列化的概念。在Java的OutputStream类下面的子类ObjectOutputStream类就有对应的WriteObject(Object object) 其中要求对应的object实现了java的序列化的接口。
在使用tomcat开发JavaEE相关项目的时候,我们关闭tomcat后,相应的session中的对象就存储在了硬盘上,如果我们想要在tomcat重启的时能够从tomcat上面读取对应session中的内容,那么保存在session中的内容就必须实现相关的序列化 *** 作,还有jdbc加载驱动用的就是反序列化,将字符串变为对象。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)