??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品亚洲一区二区三区在线观看 ,中文字幕一区在线观看视频,国产精品wwwhttp://www.aygfsteel.com/djxchen/zh-cnSat, 21 Jun 2025 17:29:48 GMTSat, 21 Jun 2025 17:29:48 GMT60java中的Serializable接口的作?/title><link>http://www.aygfsteel.com/djxchen/archive/2008/10/11/233796.html</link><dc:creator>于元</dc:creator><author>于元</author><pubDate>Sat, 11 Oct 2008 14:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/djxchen/archive/2008/10/11/233796.html</guid><wfw:comment>http://www.aygfsteel.com/djxchen/comments/233796.html</wfw:comment><comments>http://www.aygfsteel.com/djxchen/archive/2008/10/11/233796.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/djxchen/comments/commentRss/233796.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/djxchen/services/trackbacks/233796.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="postTitle"><a class="postTitle2" id="viewpost1_TitleUrl" href="http://www.aygfsteel.com/xcp/archive/2008/08/12/SerializationDemo.html">java中的Serializable接口的作?</a></div> <p align="right"> </p> Object serialization的定义:<br /> Object serialization 允许你将实现了Serializable接口的对象{换ؓ字节序列Q这些字节序列可以被完全存储以备以后重新生成原来的对象?<br /> <br /> serialization不但可以在本机做Q而且可以l由|络操作QRMIQ。这个好处是很大?---因ؓ它自动屏蔽了操作pȝ的差异,字节序Q用Unix下的c开发过|络~程的h应该知道q个概念Q等。比如,在Windowq_生成一个对象ƈ序列化之Q然后通过|络传到一台Unix机器上,然后可以在这台Unix机器上正地重构q个对象?br /> <br /> <br /> Object serialization主要用来支持2U主要的Ҏ:<br /> 1。Java的RMI(remote method invocation).RMI允许象在本机上一h作远E机器上的对象。当发送消息给q程对象Ӟ需要用到serializaiton机制来发送参数和接收q回直?br /> <br /> 2。Java的JavaBeans. Bean的状态信息通常是在设计旉|的。Bean的状态信息必被存v来,以便当程序运行时能恢复这些状态信息。这也需要serializaiton机制?br /> <br /> <br /> <br /> 二。sakulagi和rollingpig说的持久化我也说一下?br /> 我觉得你们说的应该是英文里的persistence.但是Java语言里现在只支持lightweight persistence,是轻量U持久化Q这是通过serialization机制来实现的?br /> <br /> persistence是指一个对象的生命周期不由E序是否执行来决定,即是在E序l止时这个对象也存在。它把一个serializable的对象写到磁盘(本机或其他机器上的非RAM存储器)Qƈ在程序重新调用时再读取对象到通常的RAM存储器?br /> <br /> Z么说Java的serialization机制实现的是lightweight persistence?因ؓ你必L式的序列化和反序列化E序里的对象Q而不是直接由一个关键词来定义一个对象是序列化的然后ql做相应的处理?<br /> <br /> <br /> 下面是关于序列化的一个实例:<br /> <br /> E序名称QSerializationDemo.java<br /> E序主题Q实现对象的序列化和反序列化<br /> E序说明Q该E序由实例化一个MyClasscȝ对象开始,该对象有三个实例变量Q类型分别ؓString、int、doubleQ是希望存储和恢复的信息?br /> <br /> 代码内容<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.</span><span style="color: #000000">*</span><span style="color: #000000">; <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top" /><br /> <img id="Codehighlighter1_50_831_Open_Image" onclick="this.style.display='none'; Codehighlighter1_50_831_Open_Text.style.display='none'; Codehighlighter1_50_831_Closed_Image.style.display='inline'; Codehighlighter1_50_831_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_50_831_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_50_831_Closed_Text.style.display='none'; Codehighlighter1_50_831_Open_Image.style.display='inline'; Codehighlighter1_50_831_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> SerializationDemo</span><span id="Codehighlighter1_50_831_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_50_831_Open_Text"><span style="color: #000000">{ <br /> <img id="Codehighlighter1_91_828_Open_Image" onclick="this.style.display='none'; Codehighlighter1_91_828_Open_Text.style.display='none'; Codehighlighter1_91_828_Closed_Image.style.display='inline'; Codehighlighter1_91_828_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_91_828_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_91_828_Closed_Text.style.display='none'; Codehighlighter1_91_828_Open_Image.style.display='inline'; Codehighlighter1_91_828_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String args[])</span><span id="Codehighlighter1_91_828_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_91_828_Open_Text"><span style="color: #000000">{ <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">Object serialization </span><span style="color: #008000"><br /> <img id="Codehighlighter1_122_377_Open_Image" onclick="this.style.display='none'; Codehighlighter1_122_377_Open_Text.style.display='none'; Codehighlighter1_122_377_Closed_Image.style.display='inline'; Codehighlighter1_122_377_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_122_377_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_122_377_Closed_Text.style.display='none'; Codehighlighter1_122_377_Open_Image.style.display='inline'; Codehighlighter1_122_377_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #0000ff">try</span><span id="Codehighlighter1_122_377_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_122_377_Open_Text"><span style="color: #000000">{ <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />MyClass object1</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> MyClass(</span><span style="color: #000000">"</span><span style="color: #000000">Hello</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">-</span><span style="color: #000000">7</span><span style="color: #000000">,</span><span style="color: #000000">2.7e10</span><span style="color: #000000">); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">object1:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">object1); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />FileOutputStream fos</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> FileOutputStream(</span><span style="color: #000000">"</span><span style="color: #000000">serial</span><span style="color: #000000">"</span><span style="color: #000000">); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />ObjectOutputStream oos</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> ObjectOutputStream(fos); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />oos.writeObject(object1); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />oos.flush(); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />oos.close(); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"> <br /> <img id="Codehighlighter1_398_476_Open_Image" onclick="this.style.display='none'; Codehighlighter1_398_476_Open_Text.style.display='none'; Codehighlighter1_398_476_Closed_Image.style.display='inline'; Codehighlighter1_398_476_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_398_476_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_398_476_Closed_Text.style.display='none'; Codehighlighter1_398_476_Open_Image.style.display='inline'; Codehighlighter1_398_476_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #0000ff">catch</span><span style="color: #000000">(Exception e)</span><span id="Codehighlighter1_398_476_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_398_476_Open_Text"><span style="color: #000000">{ <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Exception during serialization:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">e); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />System.exit(</span><span style="color: #000000">0</span><span style="color: #000000">); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"> <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">Object deserialization </span><span style="color: #008000"><br /> <img id="Codehighlighter1_509_724_Open_Image" onclick="this.style.display='none'; Codehighlighter1_509_724_Open_Text.style.display='none'; Codehighlighter1_509_724_Closed_Image.style.display='inline'; Codehighlighter1_509_724_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_509_724_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_509_724_Closed_Text.style.display='none'; Codehighlighter1_509_724_Open_Image.style.display='inline'; Codehighlighter1_509_724_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #0000ff">try</span><span id="Codehighlighter1_509_724_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_509_724_Open_Text"><span style="color: #000000">{ <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />MyClass object2; <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />FileInputStream fis</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> FileInputStream(</span><span style="color: #000000">"</span><span style="color: #000000">serial</span><span style="color: #000000">"</span><span style="color: #000000">); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />ObjectInputStream ois</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> ObjectInputStream(fis); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />object2</span><span style="color: #000000">=</span><span style="color: #000000">(MyClass)ois.readObject(); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />ois.close(); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">object2:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">object2); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"> <br /> <img id="Codehighlighter1_745_825_Open_Image" onclick="this.style.display='none'; Codehighlighter1_745_825_Open_Text.style.display='none'; Codehighlighter1_745_825_Closed_Image.style.display='inline'; Codehighlighter1_745_825_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_745_825_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_745_825_Closed_Text.style.display='none'; Codehighlighter1_745_825_Open_Image.style.display='inline'; Codehighlighter1_745_825_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #0000ff">catch</span><span style="color: #000000">(Exception e)</span><span id="Codehighlighter1_745_825_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_745_825_Open_Text"><span style="color: #000000">{ <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Exception during deserialization:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">e); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />System.exit(</span><span style="color: #000000">0</span><span style="color: #000000">); <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"> <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"> <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"> <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top" /><br /> <img id="Codehighlighter1_872_1045_Open_Image" onclick="this.style.display='none'; Codehighlighter1_872_1045_Open_Text.style.display='none'; Codehighlighter1_872_1045_Closed_Image.style.display='inline'; Codehighlighter1_872_1045_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_872_1045_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_872_1045_Closed_Text.style.display='none'; Codehighlighter1_872_1045_Open_Image.style.display='inline'; Codehighlighter1_872_1045_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">class</span><span style="color: #000000"> MyClass </span><span style="color: #0000ff">implements</span><span style="color: #000000"> Serializable</span><span id="Codehighlighter1_872_1045_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_872_1045_Open_Text"><span style="color: #000000">{ <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" />String s; <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff">int</span><span style="color: #000000"> i; <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff">double</span><span style="color: #000000"> d; <br /> <img id="Codehighlighter1_944_980_Open_Image" onclick="this.style.display='none'; Codehighlighter1_944_980_Open_Text.style.display='none'; Codehighlighter1_944_980_Closed_Image.style.display='inline'; Codehighlighter1_944_980_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_944_980_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_944_980_Closed_Text.style.display='none'; Codehighlighter1_944_980_Open_Image.style.display='inline'; Codehighlighter1_944_980_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> MyClass(String s,</span><span style="color: #0000ff">int</span><span style="color: #000000"> i,</span><span style="color: #0000ff">double</span><span style="color: #000000"> d)</span><span id="Codehighlighter1_944_980_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_944_980_Open_Text"><span style="color: #000000">{ <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff">this</span><span style="color: #000000">.s</span><span style="color: #000000">=</span><span style="color: #000000">s; <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff">this</span><span style="color: #000000">.i</span><span style="color: #000000">=</span><span style="color: #000000">i; <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff">this</span><span style="color: #000000">.d</span><span style="color: #000000">=</span><span style="color: #000000">d; <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"> <br /> <img id="Codehighlighter1_1007_1042_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1007_1042_Open_Text.style.display='none'; Codehighlighter1_1007_1042_Closed_Image.style.display='inline'; Codehighlighter1_1007_1042_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1007_1042_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1007_1042_Closed_Text.style.display='none'; Codehighlighter1_1007_1042_Open_Image.style.display='inline'; Codehighlighter1_1007_1042_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> String toString()</span><span id="Codehighlighter1_1007_1042_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1007_1042_Open_Text"><span style="color: #000000">{ <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">s=</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">s</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">;i=</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">i</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">;d=</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">d; <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"> <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"> <br /> <img alt="" src="http://www.aygfsteel.com/Images/OutliningIndicators/None.gif" align="top" /></span></div> E序q行l果Qobject1和object2的实例变量是一LQ输出如下:[code:1:a55efb5f91]object1:s=Hello;i=-7;d=2.7E10<br /> object2:s=Hello;i=-7;d=2.7E10<br /> <img src ="http://www.aygfsteel.com/djxchen/aggbug/233796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/djxchen/" target="_blank">于元</a> 2008-10-11 22:16 <a href="http://www.aygfsteel.com/djxchen/archive/2008/10/11/233796.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>get post 区别http://www.aygfsteel.com/djxchen/archive/2008/10/11/233793.html于元于元Sat, 11 Oct 2008 13:56:00 GMThttp://www.aygfsteel.com/djxchen/archive/2008/10/11/233793.htmlhttp://www.aygfsteel.com/djxchen/comments/233793.htmlhttp://www.aygfsteel.com/djxchen/archive/2008/10/11/233793.html#Feedback0http://www.aygfsteel.com/djxchen/comments/commentRss/233793.htmlhttp://www.aygfsteel.com/djxchen/services/trackbacks/233793.html
1
表单提交中Get和Post方式的区别有5?br />
  1. get是从服务器上获取数据Qpost是向服务器传送数据?br />   2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字D一一对应Q在URL中可以看到。post是通过HTTP post机制Q将表单内各个字D与其内Ҏ|在HTML HEADER内一起传送到ACTION属性所指的URL地址。用L不到q个q程?br />   3. 对于get方式Q服务器端用Request.QueryString获取变量的|对于post方式Q服务器端用Request.Form获取提交的数据?br />   4. get传送的数据量较,不能大于2KB。post传送的数据量较大,一般被默认Z受限制。但理论上,IIS4中最大量?0KBQIIS5中ؓ100KB?br />   5. get安全性非怽Qpost安全性较高?br />
 
 

HTTPhQGET与POSTҎ的区?br />
HTTP 定义了与服务器交互的不同ҎQ最基本的方法是 GET ?POST。事实上 GET 适用于多数请求,而保?POST 仅用于更新站炏V根?HTTP 规范QGET 用于信息获取Q而且应该?安全的和q等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话_GET h一般不应生副作用。幂{的意味着对同一 URL 的多个请求应该返回同Ll果。完整的定义q不像看h那样严格。从Ҏ上讲Q其目标是当用户打开一个链接时Q她可以信从自w的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次h会返回不同的一Ҏ闻,该操作仍然被认ؓ是安全的和幂{的Q因为它Lq回当前的新闅R反之亦然。POST h׃那么L了。POST 表示可能改变服务器上的资源的h。仍然以新闻站点ZQ读者对文章的注解应该通过 POST h实现Q因为在注解提交之后站点已经不同了(比方说文章下面出C条注解)Q?br /> 在FORM提交的时候,如果不指定MethodQ则默认为GEThQForm中提交的数据会附加在url之后Q以?分开与url分开。字母数字字W原样发送,但空D{换ؓ“+“P其它W号转换?XX,其中XXW号?6q制表示的ASCIIQ或ISO Latin-1Q倹{GEThh交的数据攄在HTTPh协议头中Q而POST提交的数据则攑֜实体数据中;
GET方式提交的数据最多只能有1024字节Q而POST则没有此限制?br />  
 
 
 
在表单里使用”post”?#8221;get”有什么区?br />  
在Form里面Q可以用post也可以用get。它们都是method的合法取倹{但是,post和getҎ在用上臛_有两点不同:
1、GetҎ通过URLh来传递用L输入。PostҎ通过另外的Ş式?br /> 2、Get方式的提交你需要用Request.QueryString来取得变量的|而Post方式提交Ӟ你必通过Request.Form来访问提交的内容?br />
仔细研究下面的代码。你可以q行之来感受一下:

代码
<!--两个Form只有Method属性不?->
<FORM ACTION=“getpost.asp” METHOD=“get”>
<INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”></INPUT>
<INPUT TYPE=“submit” VALUE=“Method=Get”></INPUT>
</FORM>
<BR>
<FORM ACTION=“getpost.asp” METHOD=“post”>
<INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”></INPUT>
<INPUT TYPE=“submit” VALUE=“Method=Post”></INPUT>
</FORM>

<BR>
<BR>

<% If Request.QueryString(“Text”) <> ““ Then %>
通过getҎ传递来的字W串是: “<B><%= Request.QueryString(“Text”) %></B>“<BR>
<% End If %>

<% If Request.Form(“Text”) <> ““ Then %>
通过PostҎ传递来的字W串是: “<B><%= Request.Form(“Text”) %></B>“<BR>
<% End If %>

说明
把上面的代码保存为getpost.aspQ然后运行,首先试postҎQ这时候,览器的urlq没有什么变化,q回的结果是Q?br /> 通过PostҎ传递来的字W串是: "Hello World"
然后试用getҎ提交Q请注意Q浏览器的url变成了:
http://localhost/general/form/getpost.asp?Text=Hello+World
而返回的l果是:
通过getҎ传递来的字W串是: "Hello World"
最后再通过postҎ提交Q浏览器的urlq是Q?br /> http://localhost/general/form/getpost.asp?Text=Hello+World
而返回的l果变成Q?br /> 通过getҎ传递来的字W串是: "Hello World"
通过PostҎ传递来的字W串是: "Hello World"

提示
通过getҎ提交数据Q可能会带来安全性的问题。比如一个登陆页面。当通过getҎ提交数据Ӟ用户名和密码出现在URL上。如果:
Q?登陆面可以被浏览器~存Q?br /> Q?其他人可以访问客Lq台机器?br /> 那么Q别人即可以从浏览器的历史记录中Q读取到此客L账号和密码。所以,在某些情况下QgetҎ会带来严重的安全性问题?br />
在Form中,使用postҎ?br />



于元 2008-10-11 21:56 发表评论
]]>
include与jsp:include区别http://www.aygfsteel.com/djxchen/archive/2008/04/22/194666.html于元于元Mon, 21 Apr 2008 22:54:00 GMThttp://www.aygfsteel.com/djxchen/archive/2008/04/22/194666.htmlhttp://www.aygfsteel.com/djxchen/comments/194666.htmlhttp://www.aygfsteel.com/djxchen/archive/2008/04/22/194666.html#Feedback3http://www.aygfsteel.com/djxchen/comments/commentRss/194666.htmlhttp://www.aygfsteel.com/djxchen/services/trackbacks/194666.html <%@ include file=” ”%>
<jsp:include page=” ” flush=”true”/>

      前者是指o元素、后者是行ؓ元素。具体它们将在何处用Q如何用及它们有什么区别?q应该是很多人看到它都会惛_的问题。下面一h看看吧?br />
    通常当应用程序中所有的面的某些部分(例如标题、页脚和D栏)都相同的时候,我们可以考虑用include。具体在哪些时候用<%@ include file=” ”%>Q哪些时候用<jsp:include page=” ” flush=”true”/>.q种形式。首先要明白的是它们之间的区别。只有了解了它们用法的不同才理解该在何时ȝ以及如何选择?br /> <%@ include file=” ”%>,jsp的include指o元素d指定面的内宏Vƈ把这些内容和原来的页面融合到一赗?q个q程是在译阶段:也就是jsp被{化成servlet的阶D进行的?

    q里对翻译阶D进行一下说?我们知道Qjsp面不能原封不动地被传送给览器,所有的jsp元素都必首先由服务?/a>q行处理。这是通过jsp面转达化成servletQ然后执行这个servlet来完成的?a class="channel_keylink" style="color: black" target="_blank">服务?/a>需要一个jsp容器来处理jsp面。jsp容器通常以servlet的Ş式来实现Q这个servletl过配置Q可以处理对jsp面的所有请求?br />
    Jsp容器负责jsp面转化成servletQ称为jsp面实现c?JSP Page implementation classQ?q编译这个servlet。这两步构成了译阶段.

    由此我们׃知道Qjsp面是把include指o元素所指定的页面的实际内容Q也是代码D)加入到引入它的jsp面?合成一个文件后被jsp容器它转化成servlet。可以看到这时会产生一个时class文g和一个java文g。下面D个例子?br />
    服务器用tomcatQ引入页面的jsp文g叫test.jsp。被引入的页面叫date.jsp.q个jsp文g里存攄是一个有x间的jsp代码,当前的上下文根设为test
//======date.jsp的源文g=====//
<%@ page language=”java” contentType="text/html;charset=gb2312"%>
<%
java.util.Date date=new java.util.Date();
String date_cn ="";
String dateStr = "";
switch(date.getDay())
{
case 0:date_cn ="?; break;
case 1:date_cn ="一"; break;
case 2:date_cn ="?; break;
case 3:date_cn ="?; break;
case 4:date_cn ="?; break;
case 5:date_cn ="?; break;
case 6:date_cn ="?; break;
}
dateStr = (1900+date.getYear()) + "q? + (date.getMonth()+1) + "? + date.getDate() + "?星期" + date_cn + ")";
%>
document.write("<%=dateStr%>");
//======以下是test.jsp的源文g=============//
<%@ page language=”java” contentType=”text/html;charset=gb2312”%>
<html>
<head>
<title>include的两U用?lt;/title>
<jsp:include page=”date.jsp” flush=”true”/>
<%--@ include file=”date.jsp” %-->
//我们在这里用include的两U不同Ş式来引入date.jspq个文g.
<head>
<body>
<table><tr><td>
有关jsp中include的两U用?敬请x?br /> </td></tr></table>
</body>
</html>

      在test.jsp 文g中,我们只输Z一行文?#8220; 有关jsp中include的两U用?敬请x?#8221;,现在让我们先?lt;%@ include file=”date.jsp” %>q种形式引入date.jspq个文g。你想会出现什么问题了吗?此时出现了错误提C:
HTTP Status 500 ?
org.apache.jasper.JasperException: /date.jsp(0,0) Page directive: can't have multiple occurrences of contentType
以下q有一堆错误,但我们只要看q里q道问题的所在了。状态码为http 500服务器内部错误。再看下面的提示。在date.jsp面中不能指定多个contentType. 原因在q里了。是因ؓ在翻译阶D?date.jsp文g的代码被原封不动?span style="color: #ff0000">加入Ctest.jsp面从而合成一个文件。合成后的文件中׃相同的:
<%@ page language=”java” contentType=”text/html;charset=gb2312”%>
q句代码。解决的办法是把date.jsp文g中的q句删掉。刷新后再请求test.jsp面
htest.jsp在页面显C如?br /> 2003q?2?0?nbsp;13:12:40
    q时我们q不能发C么。还是去查看tomcat下的临时文g吧。到那里ȝ看date.jsp文g的内Ҏ否已被加入到了test.jsp文g中?br /> 在目录下会看到test_jsp.java和test_jsp.class两个文g.
 q里的java文g是jsp容器jsp转化成了servlet而得到的test_jsp.javaq个文g。相对应的test_jsp.classq个文g是~译test_jsp.javaq个servlet文g产生的类文g了。打开所产生的servlet文gQtest_jsp.javaQ?此时我们会发玎ͼ在test.jsp 文g被{化成servlet文gӞ在输出的<haed>之间加入了一些不是test.jsp面里面的代?新加入的内容是 date.jsp里面的代? 新加入了哪些内容或是否真的加入了新的内容误己测试去看一下就会一目了然了.在这里不再详q?
以上是我们?lt;%@ include file=”date.jsp”%>q种形式得到的结?

     下面我们换用<jsp:include page=”dae.jsp” flush=”true”/>也就是将
<%@ include file=”date.jsp”%>换成<jsp:include page=”dae.jsp” flush=”true”/>,然后htest.jsp.
2003? ê 12??10?? 13:30:13
此时会在面上看?我们所引入date.jsp输出的日期中中文出现了ؕ?什么原?是因为include行ؓ元素是在h处理阶段执行?此处要对h处理阶段q行说明一?Jsp容器除了上面提到的负责将jsp面转化成servlet?q负责调用jsp面实现cM处理每个hq生应{?q个阶段我们q求处理阶D?h处理阶段仅执行类文g)?br />      所以在我们作include行ؓ元素引入面?实际只是引用了date.jspq个文g被{化ƈ被编译后产生的servletcL?既如? date.jsp是作ؓ一个单独的文g在执行后才被test.jsp文gq行时调?׃date.jsp文g中没有指定字W编?所以出Cq.解决办法是在date.jsp文g中重新把刚才L?br /> <%@ page language=”java” contentType=”text/html;charset=gb2312”%>
q行语句加入后刷新重新运?此时面昄正确,q跟用include指o正常q行时一?再查看tomcat下的临时文g会发?此时多出了一?nbsp;date_jsp.java文g和一个date_jsp.class文g.q两个文件得来的方式跟test_jsp.java?nbsp;test_jsp.class文g得来的方式一?再查看一下此时test_jsp.java文g的代码会发现.此时只新增加了一句代?
JspRuntimeLibrary.include(request, response, "date.jsp", out, true);
     它ƈ没有把date.jsp文g的代码加入到test.jsp.只是在运行时引入了date.jsp面执行后所产生的应{?q意味着我们可以指定M能够产生应答的Web资源,(例如一个servlet或一个jsp面),只要q些资源所产生的类型和jsp面产生的内容类型相?JSP容器通过一个内部的函数调用来执行指定的资源.因此,q些被引入的资源可以帮助处理原来的请?所以这些资源可以访问请求作用域内的所有对?以及所有原来的h参数.
    ׃在主面被请求时,q些面q没有被引入C面?所以你可以对page属性用一个请求时属性?以便Ҏq行时的情况来决定要引入哪一个页?q可以添加一些将被引入的面d的请求参?
<jsp:include page=”<%=pageSelectedAtRuntime%>” flush=”true” >
<jsp:param name=”fitstParamer” value=”firstValue”>
<jsp:param name=”lastParamer” value=”lastValue”>
</jsp:include>
     如果修改了被引入的jsp面,那么可以立刻使用该页面的最新版?q是因ؓ对待被引入的面的方式与对待由浏览器直接调用的jsp面的方式完全相?卛_器检页面的变化,q自动进入翻译阶D?以得到页面的最新版?
(注意,include行ؓ元素同jsp其它元素一?没有行ؓ体时要以”/”l束.像下面q样.
<jsp:include page=”<%=pageSelectedAtRuntime%>” flush=”true” />)

以下是对include 两种用法的区?br /> 主要有两个方面的不同;
一:执行旉?
<%@ include file=”relativeURI”%> 是在译阶段执行
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶D|?
?引入内容的不?
<%@ include file=”relativeURI”%>
引入静态文?html,jsp),在JSP面被{化成servlet之前和它融和C?
<jsp:include page=”relativeURI” flush=”true” />引入执行面或servlet所生成的应{文?
另外在两U用法中file和page属性都被解释ؓ一个相对的URI.如果它以斜杠开?那么它就是一个环境相关的路径.根据赋l应用程序的URI的前~q行解释,如果它不是以斜杠开?那么是面相关的\?根据引入这个文件的面所在的路径q行解释.

于元 2008-04-22 06:54 发表评论
]]>
static(引用)http://www.aygfsteel.com/djxchen/archive/2008/04/21/194522.html于元于元Mon, 21 Apr 2008 07:31:00 GMThttp://www.aygfsteel.com/djxchen/archive/2008/04/21/194522.htmlhttp://www.aygfsteel.com/djxchen/comments/194522.htmlhttp://www.aygfsteel.com/djxchen/archive/2008/04/21/194522.html#Feedback0http://www.aygfsteel.com/djxchen/comments/commentRss/194522.htmlhttp://www.aygfsteel.com/djxchen/services/trackbacks/194522.html     static表示“全局”或?#8220;静?#8221;的意思,用来修饰成员变量和成员方法,也可以Ş成静态static代码块,但是Java语言中没有全局变量的概c?

 被static修饰的成员变量和成员Ҏ独立于该cȝM对象。也是_它不依赖cȝ定的实例Q被cȝ所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在q行时数据区的方法区内定扑ֈ他们。因此,static对象可以在它的Q何对象创Z前访问,无需引用M对象?

 用public修饰的static成员变量和成员方法本质是全局变量和全局ҎQ当声明它类的对象市Q不生成static变量的副本,而是cȝ所有实例共享同一个static变量?

 static变量前可以有private修饰Q表C个变量可以在cȝ静态代码块中,或者类的其他静态成员方法中使用Q当然也可以在非静态成员方法中使用--废话Q,但是不能在其他类中通过cd来直接引用,q一点很重要。实际上你需要搞明白Qprivate是访问权限限定,static表示不要实例化就可以使用Q这样就Ҏ理解多了。static前面加上其它讉K权限关键字的效果也以此类推?

 static修饰的成员变量和成员Ҏ习惯上称为静态变量和静态方法,可以直接通过cd来访问,讉K语法为:
cd.静态方法名(参数列表...)
cd.静态变量名

 用static修饰的代码块表示静态代码块Q当Java虚拟机(JVMQ加载类Ӟ׃执行该代码块Q用处非常大Q呵呵)?

1、static变量
 按照是否静态的对类成员变量q行分类可分两种Q一U是被static修饰的变量,叫静态变量或cd量;另一U是没有被static修饰的变量,叫实例变量。两者的区别是:
 对于静态变量在内存中只有一个拷贝(节省内存Q,JVM只ؓ静态分配一ơ内存,在加载类的过E中完成静态变量的内存分配Q可用类名直接访问(方便Q,当然也可以通过对象来访问(但是q是不推荐的Q?
 对于实例变量Q没创徏一个实例,׃为实例变量分配一ơ内存,实例变量可以在内存中有多个拷贝,互不影响Q灵z)?

2、静态方?/strong>
 静态方法可以直接通过cd调用QQ何的实例也都可以调用Q因此静态方法中不能用this和super关键字,不能直接讉K所属类的实例变量和实例Ҏ(是不带static的成员变量和成员成员Ҏ)Q只能访问所属类的静态成员变量和成员Ҏ。因为实例成员与特定的对象关联!q个需要去理解Q想明白其中的道理,不是记忆Q!Q?
 因ؓstaticҎ独立于Q何实例,因此staticҎ必须被实玎ͼ而不能是抽象的abstract?

3、static代码?/strong>
 static代码块也叫静态代码块Q是在类中独立于cL员的static语句块,可以有多个,位置可以随便放,它不在Q何的Ҏ体内QJVM加蝲cL会执行这些静态的代码块,如果static代码块有多个QJVM按照它们在cM出现的先后顺序依ơ执行它们,每个代码块只会被执行一ơ。例如:

public class Test5 {
private static int a;
private int b;

static{
Test5.a=3;
System.out.println(a);
Test5 t=new Test5();
t.f();
t.b=1000;
System.out.println(t.b);
}
static{
Test5.a=4;
System.out.println(a);
}
public static void main(String[] args) {
// TODO 自动生成Ҏ存根
}
static{
Test5.a=5;
System.out.println(a);
}
public void f(){
System.out.println("hhahhahah");
}

 

q行l果Q?
3
hhahhahah
1000
4
5

 利用静态代码块可以对一些static变量q行赋|最后再看一D些例子,都一个static的mainҎQ这样JVM在运行mainҎ的时候可以直接调用而不用创建实例?

4、static和final一块用表示什?/strong>
static final用来修饰成员变量和成员方法,可简单理解ؓ“全局帔R”Q?
对于变量Q表CZ旦给值就不可修改Qƈ且通过cd可以讉K?
对于ҎQ表CZ可覆盖,q且可以通过cd直接讉K?/p>

于元 2008-04-21 15:31 发表评论
]]>
վ֩ģ壺 | ׸| | ͼľ| | | | ̳| Ϫ| ҵ| | | կ| ƽ| ϰ| | տ| ɫ| | | º| | | | | | | ɽ| ƽ| Դ| ٺ| | | | | | | | ɽ| ˮ| ƽ|