??xml version="1.0" encoding="utf-8" standalone="yes"?>久久美女艺术照精彩视频福利播放,亚洲天堂2020,www.日本久久久久com.http://www.aygfsteel.com/asdtiang/category/43298.htmlasdtiang-java-groovy-grails studyzh-cnThu, 05 May 2011 08:59:51 GMTThu, 05 May 2011 08:59:51 GMT60java js html~码与解码问?/title><link>http://www.aygfsteel.com/asdtiang/archive/2011/05/05/349510.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Thu, 05 May 2011 03:07:00 GMT</pubDate><guid>http://www.aygfsteel.com/asdtiang/archive/2011/05/05/349510.html</guid><wfw:comment>http://www.aygfsteel.com/asdtiang/comments/349510.html</wfw:comment><comments>http://www.aygfsteel.com/asdtiang/archive/2011/05/05/349510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/asdtiang/comments/commentRss/349510.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/asdtiang/services/trackbacks/349510.html</trackback:ping><description><![CDATA[js中编码与解码Q?br /> |上转的Qhttp://www.cnblogs.com/hubcarl/archive/2009/04/11/1433707.html<br /> <p>escape(), encodeURI()和encodeURIComponent()是在Javascript中用于编码字W串的三个常用的Ҏ(gu)<br /> escape() Ҏ(gu)</p> <p>escapeҎ(gu)以Unicode格式q回一个包含传入参数内容的stringcd的倹{?EscapeҎ(gu)会将传入参数中所有的I格、标点符受重韛_W以及其它Q何非ASCII字符替换?xx的编码Ş式,其中xx与其所表示的字W的16q制数表CŞ式相同。如I格字符?6q制表示形式?x20Q则此时xx应ؓ(f)20Q即escape(‘ ’) q回“%20”?/p> <p>escape和unescapeҎ(gu)能够帮助你编码和解码字符丌ӀescapeҎ(gu)对于ISO Latin字符集中的字W组成的参数Q返回其16q制~码。相对应的,unescapeҎ(gu)则能?6q制~码形式的参数{化成为其ASCII码Ş式?/p> <p>encodeURI()Ҏ(gu)</p> <p>encodeURIҎ(gu)q回一个经q编码的URI。如果将encodeURIҎ(gu)的编码结果传递给decodeURIҎ(gu)作参敎ͼ则能得到原始的未~码的字W串。需要注意到是encodeURIҎ(gu)不编码如下字W?:", "/", ";", "?"。如果想要编码这些字W,请用encodeURIComponentҎ(gu)。通过每个属于特定的字符集合的字W替换ؓ(f)一个、两个或者三个(Z么是“一个、两个或者三?#8221;本h也没有搞懂,望高教)使用UTF-8~码来表C个字W的escape序列来编码一个URI。如 ~!@#$%^&*(){}[]=:/,;?+\''"\\ 被替换?~!@#$%25%5E&*()%7B%7D%5B%5D=:/,;?+''%22%5C</p> <p>encodeURIComponent()Ҏ(gu)</p> <p>encodeURIComponentҎ(gu)q回一个编码过的URI。如果将encodeURIComponentҎ(gu)的编码结果传递给encodeURIComponentҎ(gu)作参敎ͼ则能得到原始的未~码的字W串。因为encodeURIComponentҎ(gu)会编码所有的字符Q所以如果待~码的字W串是用来表CZ个\径(?dir1/dir2/index.htmQ时Q就一定要心使用了?#8216;/’W号会被其编码之后,不再是一个有效的路径标识W,所以不能被web服务器正地识别。当字符串包含一个单独的URI component(?后面的请求参?的时候,请用此Ҏ(gu)。通过每个属于特定的字符集合的字W替换ؓ(f)一个、两个或者三个(Z么是“一个、两个或者三?#8221;本h也没有搞懂,望高教)使用UTF-8~码来表C个字W的escape序列来编码一个URIComponent?/p> <p>有什么区别?何时使用Q?br />   <br /> escapeҎ(gu)q不~码字符+。而我们知道,在用h交的表单字段中,如果有空|则会被{化ؓ(f)+字符Q而服务器解析的时候则会认?号代表空根{由于这个缺PescapeҎ(gu)q不能正地处理所有的非ASCII字符Q你应当量避免使用escapeҎ(gu)Q取而代之,你最好选择encodeURIComponent()Ҏ(gu)?br /> escape()不编码的字符Q@*/+</p> <p>相对于用escapeҎ(gu)Q用encodeURIҎ(gu)会显得更专业一些。当你需要编码一整个URI的时候,你可以用此Ҏ(gu)Q因为URI中的合法字符都不会被~码转换。需要注意到是字W?#8217;也是URI中的合法字符Q所以也不会被编码{换?br /> encodeURI() 不编码的字符Q?~!@#$&*()=:/,;?+''</p> <p>encodeURIComponentҎ(gu)在编码单个URIComponentQ指h参数Q应当是最常用的。需要注意到是字W?#8217;也是URI中的合法字符Q所以也不会被编码{换?br /> encodeURIComponent()不编码的字符Q?~!*()''<br /> <br /> 下面是自己写?br /> 再看下jdk文档里的~码和解码:<br /> <br /> </p> <dl> <dt> <pre>public class <strong>URLEncoder</strong><dt>extends <a title="java.lang 中的c? href="mk:@MSITStore:D:\API文档\java\JDK_API_1_6_zh_CN.CHM::/java/lang/Object.html">Object</a></dt></pre> </dt></dl> <pre></pre> <p>HTML 格式~码的实用工L(fng)。该cd含了?String 转换?<code>application/x-www-form-urlencoded</code> MIME 格式的静态方法。有?HTML 格式~码的更多信息,请参?HTML <a >规范</a>? <p>?String ~码Ӟ使用以下规则Q? <p> <ul> <li>字母数字字符 "<code>a</code>" ?"<code>z</code>"?<code>A</code>" ?"<code>Z</code>" ?"<code>0</code>" ?"<code>9</code>" 保持不变? <li>Ҏ(gu)字符 "<code>.</code>"?<code>-</code>"?<code>*</code>" ?"<code>_</code>" 保持不变? <li>I格字符 "<code> </code>" 转换Z个加?"<code>+</code>"? <li>所有其他字W都是不安全的,因此首先使用一些编码机制将它们转换Z个或多个字节。然后每个字节用一个包?3 个字W的字符?"<code>%<em>xy</em></code>" 表示Q其?<em>xy</em> 字节的两位十六进制表CŞ式。推荐的~码机制?UTF-8。但是,Z兼容性考虑Q如果未指定一U编码,则用相应^台的默认~码?</li> </ul> <p>例如Q?UTF-8 ~码机制Q字W串 "The string ü@foo-bar" {换ؓ(f) "The+string+%C3%BC%40foo-bar"Q因为在 UTF-8 中,字符 ü ~码Z个字节,C3 Q十六进Ӟ?BC Q十六进ӞQ字W?@ ~码Z个字?40 Q十六进Ӟ?<br /> <br /> </p> <dl> <dt> <pre>public class <strong>URLDecoder</strong><dt>extends <a title="java.lang 中的c? href="mk:@MSITStore:D:\API文档\java\JDK_API_1_6_zh_CN.CHM::/java/lang/Object.html">Object</a></dt></pre> </dt></dl> <pre></pre> <p>HTML 格式解码的实用工L(fng)。该cd含了?String ?<code>application/x-www-form-urlencoded</code> MIME 格式解码的静态方法? <p>该{换过E正好与 URLEncoder cM用的q程相反。假定已~码的字W串中的所有字Wؓ(f)下列之一Q?<code>a</code>" ?"<code>z</code>"?<code>A</code>" ?"<code>Z</code>"?<code>0</code>" ?"<code>9</code>" ?"<code>-</code>"?<code>_</code>"?<code>.</code>" 以及 "<code>*</code>"。允许有 "<code>%</code>" 字符Q但是将它解释ؓ(f)Ҏ(gu)转义序列的开始? <p>转换中用以下规则: <p> <ul> <li>字母数字字符 "<code>a</code>" ?"<code>z</code>"?<code>A</code>" ?"<code>Z</code>" ?"<code>0</code>" ?"<code>9</code>" 保持不变? <li>Ҏ(gu)字符 "<code>.</code>"?<code>-</code>"?<code>*</code>" ?"<code>_</code>" 保持不变? <li>加号 "<code>+</code>" 转换为空格字W?"<code> </code>"? <li>把 "<code>%<em>xy</em></code>" 格式序列视ؓ(f)一个字节,其中 <em>xy</em> ?8 位的两位十六q制表示形式。然后,所有连l包含一个或多个q些字节序列的子字符Ԍ被其编码可生成q些q箋字节的字W所代替。可以指定对q些字符q行解码的编码机Ӟ或者如果未指定的话Q则使用q_的默认编码机制?</li> </ul> <p>该解码器处理非法字符串有两种可能的方法。一U方法是不管该非法字W,另一U方法是抛出 <tt><a title="java.lang 中的c? href="mk:@MSITStore:D:\API文档\java\JDK_API_1_6_zh_CN.CHM::/java/lang/IllegalArgumentException.html"><code>IllegalArgumentException</code></a></tt> 异常。解码器具体采用哪种Ҏ(gu)取决于实现?br /> <br /> </p> <p><br /> 现在的问题是Q服务器q回字符到页面,面又调用jsQ这个时候肯定要转义下,q是相对比较单的需求?br /> 服务器只需借助于apache commons包里的StringEscapeUtilsc,在struts2里其实已l集成在xwrok包?br /> StringEscapeUtils.escapeJavaScript(returnString);<br /> q样可以搞定这个问题?br /> 另外也可以用jsd理这个问题,不过没有实践Q主要是自己js水^有点差,<br /> escapeJavaScript对应的源码如下:<br /> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">private</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"> escapeJavaStyleString(Writer out, String str, </span><span style="color: #0000ff">boolean</span><span style="color: #000000"> escapeSingleQuote,<br /> <img id="Codehighlighter1_152_2764_Open_Image" onclick="this.style.display='none'; Codehighlighter1_152_2764_Open_Text.style.display='none'; Codehighlighter1_152_2764_Closed_Image.style.display='inline'; Codehighlighter1_152_2764_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_152_2764_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_152_2764_Closed_Text.style.display='none'; Codehighlighter1_152_2764_Open_Image.style.display='inline'; Codehighlighter1_152_2764_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" />            </span><span style="color: #0000ff">boolean</span><span style="color: #000000"> escapeForwardSlash) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> IOException </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_152_2764_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_152_2764_Open_Text"><span style="color: #000000">{<br /> <img id="Codehighlighter1_179_268_Open_Image" onclick="this.style.display='none'; Codehighlighter1_179_268_Open_Text.style.display='none'; Codehighlighter1_179_268_Closed_Image.style.display='inline'; Codehighlighter1_179_268_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_179_268_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_179_268_Closed_Text.style.display='none'; Codehighlighter1_179_268_Open_Image.style.display='inline'; Codehighlighter1_179_268_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (out </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_179_268_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_179_268_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />            </span><span style="color: #0000ff">throw</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> IllegalArgumentException(</span><span style="color: #000000">"</span><span style="color: #000000">The Writer must not be null</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />        }</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_295_325_Open_Image" onclick="this.style.display='none'; Codehighlighter1_295_325_Open_Text.style.display='none'; Codehighlighter1_295_325_Closed_Image.style.display='inline'; Codehighlighter1_295_325_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_295_325_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_295_325_Closed_Text.style.display='none'; Codehighlighter1_295_325_Open_Image.style.display='inline'; Codehighlighter1_295_325_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (str </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_295_325_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_295_325_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />            </span><span style="color: #0000ff">return</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />        }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #0000ff">int</span><span style="color: #000000"> sz;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />        sz </span><span style="color: #000000">=</span><span style="color: #000000"> str.length();<br /> <img id="Codehighlighter1_407_2758_Open_Image" onclick="this.style.display='none'; Codehighlighter1_407_2758_Open_Text.style.display='none'; Codehighlighter1_407_2758_Closed_Image.style.display='inline'; Codehighlighter1_407_2758_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_407_2758_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_407_2758_Closed_Text.style.display='none'; Codehighlighter1_407_2758_Open_Image.style.display='inline'; Codehighlighter1_407_2758_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />        </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; i </span><span style="color: #000000"><</span><span style="color: #000000"> sz; i</span><span style="color: #000000">++</span><span style="color: #000000">) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_407_2758_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_407_2758_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />            </span><span style="color: #0000ff">char</span><span style="color: #000000"> ch </span><span style="color: #000000">=</span><span style="color: #000000"> str.charAt(i);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />            </span><span style="color: #008000">//</span><span style="color: #008000"> handle unicode</span><span style="color: #008000"><br /> <img id="Codehighlighter1_505_565_Open_Image" onclick="this.style.display='none'; Codehighlighter1_505_565_Open_Text.style.display='none'; Codehighlighter1_505_565_Closed_Image.style.display='inline'; Codehighlighter1_505_565_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_505_565_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_505_565_Closed_Text.style.display='none'; Codehighlighter1_505_565_Open_Image.style.display='inline'; Codehighlighter1_505_565_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" /></span><span style="color: #000000">            </span><span style="color: #0000ff">if</span><span style="color: #000000"> (ch </span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000">0xfff</span><span style="color: #000000">) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_505_565_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_505_565_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                out.write(</span><span style="color: #000000">"</span><span style="color: #000000">\\u</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> hex(ch));<br /> <img id="Codehighlighter1_587_648_Open_Image" onclick="this.style.display='none'; Codehighlighter1_587_648_Open_Text.style.display='none'; Codehighlighter1_587_648_Closed_Image.style.display='inline'; Codehighlighter1_587_648_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_587_648_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_587_648_Closed_Text.style.display='none'; Codehighlighter1_587_648_Open_Image.style.display='inline'; Codehighlighter1_587_648_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />            }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (ch </span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000">0xff</span><span style="color: #000000">) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_587_648_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_587_648_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                out.write(</span><span style="color: #000000">"</span><span style="color: #000000">\\u0</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> hex(ch));<br /> <img id="Codehighlighter1_670_732_Open_Image" onclick="this.style.display='none'; Codehighlighter1_670_732_Open_Text.style.display='none'; Codehighlighter1_670_732_Closed_Image.style.display='inline'; Codehighlighter1_670_732_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_670_732_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_670_732_Closed_Text.style.display='none'; Codehighlighter1_670_732_Open_Image.style.display='inline'; Codehighlighter1_670_732_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />            }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (ch </span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000">0x7f</span><span style="color: #000000">) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_670_732_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_670_732_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                out.write(</span><span style="color: #000000">"</span><span style="color: #000000">\\u00</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> hex(ch));<br /> <img id="Codehighlighter1_752_1830_Open_Image" onclick="this.style.display='none'; Codehighlighter1_752_1830_Open_Text.style.display='none'; Codehighlighter1_752_1830_Closed_Image.style.display='inline'; Codehighlighter1_752_1830_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_752_1830_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_752_1830_Closed_Text.style.display='none'; Codehighlighter1_752_1830_Open_Image.style.display='inline'; Codehighlighter1_752_1830_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />            }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (ch </span><span style="color: #000000"><</span><span style="color: #000000"> </span><span style="color: #000000">32</span><span style="color: #000000">) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_752_1830_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_752_1830_Open_Text"><span style="color: #000000">{<br /> <img id="Codehighlighter1_782_1816_Open_Image" onclick="this.style.display='none'; Codehighlighter1_782_1816_Open_Text.style.display='none'; Codehighlighter1_782_1816_Closed_Image.style.display='inline'; Codehighlighter1_782_1816_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_782_1816_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_782_1816_Closed_Text.style.display='none'; Codehighlighter1_782_1816_Open_Image.style.display='inline'; Codehighlighter1_782_1816_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />                </span><span style="color: #0000ff">switch</span><span style="color: #000000"> (ch) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_782_1816_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_782_1816_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">\b</span><span style="color: #000000">'</span><span style="color: #000000"> :<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">b</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">\n</span><span style="color: #000000">'</span><span style="color: #000000"> :<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">n</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">\t</span><span style="color: #000000">'</span><span style="color: #000000"> :<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">t</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">\f</span><span style="color: #000000">'</span><span style="color: #000000"> :<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">f</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">\r</span><span style="color: #000000">'</span><span style="color: #000000"> :<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">r</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    </span><span style="color: #0000ff">default</span><span style="color: #000000"> :<br /> <img id="Codehighlighter1_1587_1673_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1587_1673_Open_Text.style.display='none'; Codehighlighter1_1587_1673_Closed_Image.style.display='inline'; Codehighlighter1_1587_1673_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1587_1673_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1587_1673_Closed_Text.style.display='none'; Codehighlighter1_1587_1673_Open_Image.style.display='inline'; Codehighlighter1_1587_1673_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />                        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (ch </span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000">0xf</span><span style="color: #000000">) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1587_1673_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1587_1673_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                            out.write(</span><span style="color: #000000">"</span><span style="color: #000000">\\u00</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> hex(ch));<br /> <img id="Codehighlighter1_1680_1767_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1680_1767_Open_Text.style.display='none'; Codehighlighter1_1680_1767_Closed_Image.style.display='inline'; Codehighlighter1_1680_1767_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1680_1767_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1680_1767_Closed_Text.style.display='none'; Codehighlighter1_1680_1767_Open_Image.style.display='inline'; Codehighlighter1_1680_1767_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />                        }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1680_1767_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1680_1767_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                            out.write(</span><span style="color: #000000">"</span><span style="color: #000000">\\u000</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> hex(ch));<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />                        }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />                }</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_1837_2748_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1837_2748_Open_Text.style.display='none'; Codehighlighter1_1837_2748_Closed_Image.style.display='inline'; Codehighlighter1_1837_2748_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1837_2748_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1837_2748_Closed_Text.style.display='none'; Codehighlighter1_1837_2748_Open_Image.style.display='inline'; Codehighlighter1_1837_2748_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />            }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1837_2748_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1837_2748_Open_Text"><span style="color: #000000">{<br /> <img id="Codehighlighter1_1867_2734_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1867_2734_Open_Text.style.display='none'; Codehighlighter1_1867_2734_Closed_Image.style.display='inline'; Codehighlighter1_1867_2734_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1867_2734_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1867_2734_Closed_Text.style.display='none'; Codehighlighter1_1867_2734_Open_Image.style.display='inline'; Codehighlighter1_1867_2734_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />                </span><span style="color: #0000ff">switch</span><span style="color: #000000"> (ch) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1867_2734_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1867_2734_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">\</span><span style="color: #000000">''</span><span style="color: #000000"> :</span><span style="color: #000000"><br /> <img id="Codehighlighter1_1949_2022_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1949_2022_Open_Text.style.display='none'; Codehighlighter1_1949_2022_Closed_Image.style.display='inline'; Codehighlighter1_1949_2022_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1949_2022_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1949_2022_Closed_Text.style.display='none'; Codehighlighter1_1949_2022_Open_Image.style.display='inline'; Codehighlighter1_1949_2022_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" /></span><span style="color: #000000">                        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (escapeSingleQuote) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1949_2022_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1949_2022_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                            out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />                        }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\</span><span style="color: #000000">''</span><span style="color: #000000">);</span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">                        </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">"</span><span style="color: #000000">'</span><span style="color: #000000"> :<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">"</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000"> :<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">/</span><span style="color: #000000">'</span><span style="color: #000000"> :<br /> <img id="Codehighlighter1_2472_2545_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2472_2545_Open_Text.style.display='none'; Codehighlighter1_2472_2545_Closed_Image.style.display='inline'; Codehighlighter1_2472_2545_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_2472_2545_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2472_2545_Closed_Text.style.display='none'; Codehighlighter1_2472_2545_Open_Image.style.display='inline'; Codehighlighter1_2472_2545_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />                        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (escapeForwardSlash) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2472_2545_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_2472_2545_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                            out.write(</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />                        }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(</span><span style="color: #000000">'</span><span style="color: #000000">/</span><span style="color: #000000">'</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    </span><span style="color: #0000ff">default</span><span style="color: #000000"> :<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        out.write(ch);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                        </span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />                }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />            }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />        }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />    }</span></span></div> <p>可以用jsdC是一L(fng)Q网上也有类似的js代码?br /> <br /> 出现的问题描qͼ服务器返了stringQ经qescapeJavaScript处理后到js代码Qjs代码又要用这些string去输出html.比如img的src为js处理后的字符Ԍ<br /> 最后经q测试得Z上语句去处理q些问题Q?br /> string=encodeURIComponent(string).replace(<a>/@/g,'%40').replace(/'/g,"'").replace(/"/g,'"'</a>);<br /> 转化@是ؓ(f)了获取服务器资源Q比如图片地址Q可以正常输出。其实输出时后面的{化单引号和双引号是ؓ(f)了保险v见。比?lt;img src='*****.jpg'/>q时只需要{化单引号可以了Q这里主要是针对囄的处理来做的Q@在其它地Ҏ(gu)没有必要转化没有试Q如果要昄囄Q得转化?br /> <br /> 出现的问题描qͼ带特D字W串的图片名要正常显C出来,得{化下Q比如要昄文g名ؓ(f)Q~Q@#K?……&*Q)—?.jpg的图片,代码如下Q?br /> java.net.URLEncoder.encode(photoName,"utf-8")).replace("+", "%20"),转化时因为URLEncoder把空D{化成?,所以最后得?替换回去Q?0是十六进制的Q相当于十进制的32Q即对应为空根{?br /> l过转化后,囄带特D字W就能正常显C?br /> <br /> </p><img src ="http://www.aygfsteel.com/asdtiang/aggbug/349510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/asdtiang/" target="_blank">asdtiang</a> 2011-05-05 11:07 <a href="http://www.aygfsteel.com/asdtiang/archive/2011/05/05/349510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转蝲Qjava keytool使用http://www.aygfsteel.com/asdtiang/archive/2010/12/22/341310.htmlasdtiangasdtiangWed, 22 Dec 2010 06:00:00 GMThttp://www.aygfsteel.com/asdtiang/archive/2010/12/22/341310.htmlhttp://www.aygfsteel.com/asdtiang/comments/341310.htmlhttp://www.aygfsteel.com/asdtiang/archive/2010/12/22/341310.html#Feedback0http://www.aygfsteel.com/asdtiang/comments/commentRss/341310.htmlhttp://www.aygfsteel.com/asdtiang/services/trackbacks/341310.htmlKeytool是一个Java数据证书的管理工?,Keytool密钥(keyQ和证书QcertificatesQ存在一个称为keystore的文件中在keystore里,包含两种数据Q?
密钥实体QKey entityQ——密钥(secret keyQ又或者是U钥和配对公钥(采用非对U加密)
可信ȝ证书实体Qtrusted certificate entriesQ——只包含公钥


ailas(别名)每个keystore都关联这一个独一无二的aliasQ这个alias通常不区分大写

 

JDK中keytool常用命o:

-genkey      在用户主目录中创Z个默认文?.keystore",q会产生一个mykey的别名,mykey中包含用L(fng)公钥、私钥和证书
(在没有指定生成位|的情况?keystore会存在用L(fng)l默认目录,如:对于window xppȝQ会生成在系l的C:\Documents and Settings\UserName\文g名ؓ(f)“.keystore”)
-alias       产生别名
-keystore    指定密钥库的名称(产生的各cM息将不在.keystore文g?
-keyalg      指定密钥的算?(?RSA  DSAQ如果不指定默认采用DSAQ?
-validity    指定创徏的证书有效期多少?br /> -keysize     指定密钥长度
-storepass   指定密钥库的密码(获取keystore信息所需的密?
-keypass     指定别名条目的密?U钥的密?
-dname       指定证书拥有者信?例如Q?nbsp; "CN=名字与姓?OU=l织单位名称,O=l织名称,L=城市或区域名U?ST=州或省䆾名称,C=单位的两字母国家代码"
-list        昄密钥库中的证书信?nbsp;     keytool -list -v -keystore 指定keystore -storepass 密码
-v           昄密钥库中的证书详l信?br /> -export      别名指定的证书导出到文?nbsp; keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位|及证书名称 -storepass 密码
-file        参数指定导出到文件的文g?br /> -delete      删除密钥库中某条?nbsp;         keytool -delete -alias 指定需删除的别  -keystore 指定keystore  -storepass 密码
-printcert   查看导出的证书信?nbsp;         keytool -printcert -file yushan.crt
-keypasswd   修改密钥库中指定条目口o    keytool -keypasswd -alias 需修改的别?-keypass 旧密?-new  新密?nbsp; -storepass keystore密码  -keystore sage
-storepasswd 修改keystore口o      keytool -storepasswd -keystore e:\yushan.keystore(需修改口o的keystore) -storepass 123456(原始密码) -new yushan(新密?
-import      已{֐数字证书导入密钥?nbsp; keytool -import -alias 指定导入条目的别?-keystore 指定keystore -file 需导入的证?/span>

 

下面是各选项的缺省倹{?nbsp;
-alias "mykey"

-keyalg "DSA"

-keysize 1024

-validity 90

-keystore 用户宿主目录中名?nbsp;.keystore 的文?br />
-file L为标准输入,写时为标准输?/span>
          


1、keystore的生成:

分阶D는成:
     keytool -genkey -alias yushan(别名) -keypass yushan(别名密码) -keyalg RSA(法) -keysize 1024(密钥长度) -validity 365(有效期,天单? -keystore        

e:\yushan.keystore(指定生成证书的位|和证书名称) -storepass 123456(获取keystore信息的密?Q回车输入相关信息即可;
    
一ơ性生成:
     keytool -genkey -alias yushan -keypass yushan -keyalg RSA -keysize 1024 -validity 365 -keystore  e:\yushan.keystore -storepass 123456 -dname "CN=(名字?br />
姓氏), OU=(l织单位名称), O=(l织名称), L=(城市或区域名U?, ST=(州或省䆾名称), C=(单位的两字母国家代码)";(中英文即?

2、keystore信息的查看:
   keytool -list  -v -keystore e:\keytool\yushan.keystore -storepass 123456
   昄内容Q?br /> ---------------------------------------------------------------------
   Keystore cdQ?JKS
Keystore 提供者: SUN

(zhn)的 keystore 包含 1 输入

别名名称Q?yushan
创徏日期Q?2009-7-29
类? PrivateKeyEntry
认证N度: 1
认证 [1]:
所有?CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
{֏?CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
序列?4a6f29ed
有效? Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
证书指纹:
         MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
         SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
         {֐法名称:SHA1withRSA
         版本: 3
--------------------------------------------------------------------

 

~省情况下,-list 命o打印证书?nbsp;MD5 指纹。而如果指定了 -v 选项Q将以可L式打印证书,如果指定?nbsp;-rfc 选项Q将以可打印的编码格式输书?/span>


keytool -list  -rfc -keystore e:\yushan.keystore -storepass 123456

昄Q?/span>

-------------------------------------------------------------------------------------------------------

Keystore cdQ?JKS
Keystore 提供者: SUN

(zhn)的 keystore 包含 1 输入

别名名称Q?yushan
创徏日期Q?2009-7-29
类? PrivateKeyEntry
认证N度: 1
认证 [1]:
-----BEGIN CERTIFICATE-----
MIICSzCCAbSgAwIBAgIESm8p7TANBgkqhkiG9w0BAQUFADBqMQ8wDQYDVQQGDAbkuK3lm70xDzAN
BgNVBAgMBua5luWNlzEPMA0GA1UEBwwG5rmY5r2tMREwDwYDVQQKDAh4eOWNj+S8mjERMA8GA1UE
CwwIeHjlhazlj7gxDzANBgNVBAMTBnl1c2hhbjAeFw0wOTA3MjgxNjQwMTNaFw0xMDA3MjgxNjQw
MTNaMGoxDzANBgNVBAYMBuS4reWbvTEPMA0GA1UECAwG5rmW5Y2XMQ8wDQYDVQQHDAbmuZjmva0x
ETAPBgNVBAoMCHh45Y2P5LyaMREwDwYDVQQLDAh4eOWFrOWPuDEPMA0GA1UEAxMGeXVzaGFuMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJoru1RQczRzTnBWxefVNspQBykS220rS8Y/oX3mZa
hjL4wLfOURzUuxxuVQR2jx7QI+XKME+DHQj9r6aAcLBCi/T1jwF8mVYxtpRuTzE/6KEZdhowEe70
liWLVE+hytLBHZ03Zhwcd6q5HUMu27du3MPQvqiwzTY7MrwIvQQ8iQIDAQABMA0GCSqGSIb3DQEB
BQUAA4GBAGoQQ1/FnTfkpQh+Ni6h3fZdn3sR8ZzDMbOAIYVLAhBb85XDJ8QZTarHbZMJcIdHxAl1
i08ct3E8U87V9t8GZFWVC4BFg/+zeFEv76SFpVE56iX7P1jpsu78z0m69hHlds77VJTdyfMSvtXv
sYHP3fxfzx9WyhipBwd8VPK/NgEP
-----END CERTIFICATE-----

-------------------------------------------------------------------------------------------------------

3、证书的导出Q?/span>

keytool -export -alias yushan -keystore e:\yushan.keystore -file e:\yushan.crt(指定导出的证书位|及证书名称) -storepass 123456

4、查看导出的证书信息
   keytool -printcert -file yushan.crt
   昄Q(在windows下可以双击yushan.crt查看Q?br /> -----------------------------------------------------------------------
所有?CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
{֏?CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
序列?4a6f29ed
有效? Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
证书指纹:
         MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
         SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
         {֐法名称:SHA1withRSA
         版本: 3
-----------------------------------------------------------------------

5、证书的导入Q?/span>
   准备一个导入的证书Q?br />    keytool -genkey -alias shuany -keypass shuany -keyalg RSA -keysize 1024 -validity 365 -keystore  e:\shuany.keystore -storepass 123456 -dname "CN=shuany,

OU=xx, O=xx, L=xx, ST=xx, C=xx";
   keytool -export -alias shuany -keystore e:\shuany.keystore -file e:\shuany.crt -storepass 123456
 
  现在shuany.crt 加入到yushan.keystore中:
  keytool -import -alias shuany(指定导入证书的别名,如果不指定默认ؓ(f)mykey,别名唯一Q否则导入出? -file e:\shuany.crt -keystore e:\yushan.keystore -storepass

123456

 keytool -list  -v -keystore e:\keytool\yushan.keystore -storepass 123456
昄Q?br /> ------------------------------------------------------------------------------
Keystore cdQ?JKS
Keystore 提供者: SUN

(zhn)的 keystore 包含 2 输入

别名名称Q?yushan
创徏日期Q?2009-7-29
类? PrivateKeyEntry
认证N度: 1
认证 [1]:
所有?CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
{֏?CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
序列?4a6f29ed
有效? Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
证书指纹:
         MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
         SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
         {֐法名称:SHA1withRSA
         版本: 3


*******************************************
*******************************************


别名名称Q?shuany
创徏日期Q?2009-7-29
输入cdQ?trustedCertEntry

所有?CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx
{֏?CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx
序列?4a6f2cd9
有效? Wed Jul 29 00:52:41 CST 2009 至Thu Jul 29 00:52:41 CST 2010
证书指纹:
         MD5:15:03:57:9B:14:BD:C5:50:21:15:47:1E:29:87:A4:E6
         SHA1:C1:4F:8B:CD:5E:C2:94:77:B7:42:29:35:5C:BB:BB:2E:9E:F0:89:F5
         {֐法名称:SHA1withRSA
         版本: 3


*******************************************
*******************************************
------------------------------------------------------------------------------

6、证书条目的删除Q?/span>
 keytool -delete -alias shuany(指定需删除的别? -keystore yushan.keystore -storepass 123456
 
7、证书条目口令的修改Q?/span>
keytool -keypasswd -alias yushan(需要修改密码的别名) -keypass yushan(原始密码) -new 123456(别名的新密码)  -keystore e:\yushan.keystore -storepass 123456

8、keystore口o的修改:
 keytool -storepasswd -keystore e:\yushan.keystore(需修改口o的keystore) -storepass 123456(原始密码) -new yushan(新密?

 

9、修改keystore中别名ؓ(f)yushan的信?/span>

 

keytool -selfcert -alias yushan -keypass yushan -keystore e:\yushan.keystore -storepass 123456 -dname "cn=yushan,ou=yushan,o=yushan,c=us"



asdtiang 2010-12-22 14:00 发表评论
]]>
java Ҏ(gu)IP获取所在地http://www.aygfsteel.com/asdtiang/archive/2010/08/12/328684.htmlasdtiangasdtiangThu, 12 Aug 2010 08:21:00 GMThttp://www.aygfsteel.com/asdtiang/archive/2010/08/12/328684.htmlhttp://www.aygfsteel.com/asdtiang/comments/328684.htmlhttp://www.aygfsteel.com/asdtiang/archive/2010/08/12/328684.html#Feedback0http://www.aygfsteel.com/asdtiang/comments/commentRss/328684.htmlhttp://www.aygfsteel.com/asdtiang/services/trackbacks/328684.htmlҎ(gu)IP获取所在地及服务商Q?br />直接l代码吧Q?br />Ҏ(gu)q个|站http://www.ip138.com取地址?br />讉K地址为:http://www.ip138.com/ips.asp?ip=124.236.239.105&action=2
构造connectionQ返回里直接字符串处理的Q主要是自己的正则表辑ּ没学好啊
q回中:

<td align="center"><ul class="ul1"><li>本站L据:沛_省石家庄??sh)?lt;/li><li>参考数据一Q河北省矛_庄市 ?sh)?lt;/li><li>参考数据二Q河北省矛_庄市 ?sh)?lt;/li></ul></td>

l果只取了主数据?br />

public   class  GetIPArea  {
    
    
// URL
     private   static   final  String REQUEST_URL = " http://www.ip138.com/ips.asp " ;
      ///////有时查询不出来,qq个URL    http://www.ip138.com/ips8.asp
    
//
     private   static   final  String REQUEST_MOTHOD = " POST " ;
    
// K�K�URLK�HttpURLConnectionK�K�
     private   static  HttpURLConnection httpConn = null ;
    
    
/**
     * IP
     * 
@return  String
     
*/

    
public   static  String getIPArea(String ip)
    
{
        String requestParameter
= " ip= " + ip + " &action=2 " ;
        String IPArea
= "" ;
        BufferedReader br
= null ;
        
try
        
{
            httpConn
= (HttpURLConnection) new  URL(REQUEST_URL).openConnection();
            httpConn.setRequestMethod(REQUEST_MOTHOD);
            httpConn.setDoOutput(
true );
            httpConn.getOutputStream().write(requestParameter.getBytes());
            httpConn.getOutputStream().flush();
            httpConn.getOutputStream().close();
            
            br
= new  BufferedReader( new  InputStreamReader(httpConn.getInputStream(), " gb2312 " ));
            String lineStr
= null ;
            
while ((lineStr = br.readLine()) != null )
            
{
                
if (lineStr.contains( " <td align=\ " center\ " ><ul class=\ " ul1\ " ><li> " ))
                
{
                    IPArea
= lineStr.substring(lineStr.indexOf( " Q?/span> " ) + 1 ,lineStr.indexOf( " </ " ));
                    
break ;
                }

            }

        }

        
catch (IOException e)  {
            e.printStackTrace();
        }

        
finally
        
{
            
if (br != null )
                
try   {
                    br.close();
                }
  catch  (IOException e)  {
                    e.printStackTrace();
                }

        }

        
return  IPArea;
    }

    
public   static   void  main(String args[]) {
        System.out.println(GetIPArea.getIPArea(
" 124.236.239.105 " ));
    }

}

http~码问题在这里也ZC下?br />br=new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"gb2312"));//在这个地方加上编?br />
q种Ҏ(gu)获取IP很不E_Q容易获取不刎ͼ我测试是q样的,最好的Ҏ(gu)q是有自qIP数据库?br />U真IP数据库刚好可以用上?br />具体参考:http://javagp.group.javaeye.com/group/topic/11866
在他的博客上有源码下载,直接用就可以?br />




主要参考 ?http://gzhzh.javaeye.com/blog/425458



asdtiang 2010-08-12 16:21 发表评论
]]>
下蝲JAVAhttp://www.aygfsteel.com/asdtiang/archive/2010/03/29/316856.htmlasdtiangasdtiangMon, 29 Mar 2010 10:17:00 GMThttp://www.aygfsteel.com/asdtiang/archive/2010/03/29/316856.htmlhttp://www.aygfsteel.com/asdtiang/comments/316856.htmlhttp://www.aygfsteel.com/asdtiang/archive/2010/03/29/316856.html#Feedback0http://www.aygfsteel.com/asdtiang/comments/commentRss/316856.htmlhttp://www.aygfsteel.com/asdtiang/services/trackbacks/316856.htmljava se下蝲”或?#8220;JDK 下蝲”Q目录最新版是jdk1.6,即jdk 6,
2、到官网下蝲Q?a target="_blank">http://java.sun.com/Q没被Oracle收购前,不用注册可以下载,有段旉要注 册了才能下蝲Q现在测试了下,不用注册也能下蝲


安装JAVA

A custom caption
Zoom
A custom caption
Copyright: Magnolia
Li Europan lingues es membres del sam familie

如果你下载的是安装包的话QJDK环境变量是没有配|的Q但可以q行.jar文gQ在cmd下面可以q行javaQ但是不能运行javac.

下面介绍的是如何配置JDK环境变量Q?/p>

|上搜烦吧,q个东西多用用就会了Q我开始学?fn)JAVA的时候,半年多还不会自己配置Q每ơ配|都得上|搜索。搜索关键:jdk配置Qjava配置,java环境配置




asdtiang 2010-03-29 18:17 发表评论
]]>
java 元数据学?fn)笔?----自带的元数据Q{Q?/title><link>http://www.aygfsteel.com/asdtiang/archive/2010/03/09/314966.html</link><dc:creator>asdtiang</dc:creator><author>asdtiang</author><pubDate>Tue, 09 Mar 2010 08:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/asdtiang/archive/2010/03/09/314966.html</guid><wfw:comment>http://www.aygfsteel.com/asdtiang/comments/314966.html</wfw:comment><comments>http://www.aygfsteel.com/asdtiang/archive/2010/03/09/314966.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/asdtiang/comments/commentRss/314966.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/asdtiang/services/trackbacks/314966.html</trackback:ping><description><![CDATA[<p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> <span style="font-family: 宋体;">注释?/span> 3 <span style="font-family: 宋体;">中基本类?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> a. <span style="font-family: 宋体;">标记注释</span> -- <span style="font-family: 宋体;">没有变量Q只有名U标识。例?/span> @annotation</font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> b. <span style="font-family: 宋体;">单一值注?/span> -- <span style="font-family: 宋体;">在标记注释的基础上提供一D|据。如</span> @annotation(“data”)</font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> c. <span style="font-family: 宋体;">完整注释</span> -- <span style="font-family: 宋体;">可以包括多个数据成员Q每个数据成员由名称和值构成?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"> <font color="#000000">@annotation(val1="data1",val2="data2")</font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000">.Java <span style="font-family: 宋体;">?/span> “ <span style="font-family: 宋体;">注释</span> ”</font> </p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> Java <span style="font-family: 宋体;">中提?/span> 3 <span style="font-family: 宋体;">个内|注释类?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> a. Override <span style="font-family: 宋体;">Q只能用于方?/span> ( <span style="font-family: 宋体;">不能用于c,包声明或者其他构?/span> )</font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> <span style="font-family: 宋体;">作用Q可以保证编译时?/span> Override <span style="font-family: 宋体;">函数的声明正?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> <span style="font-family: 宋体;">用法Q?/span> @Override</font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"> <font color="#000000">public void fun(){..}</font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> b.Deprecated <span style="font-family: 宋体;">同样只能作用与方?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"> <span style="font-family: 宋体;"><font color="#000000">作用Q对不应再用的Ҏ(gu)q行注解</font></span></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> <span style="font-family: 宋体;">用法Q?/span> @Deprecated public void fun{...} // <span style="font-family: 宋体;">它们说这个注释跟函数要同一?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"><span style="font-family: 宋体;"><img alt="" src="http://www.aygfsteel.com/images/blogjava_net/asdtiang/test.png" /><br /> </span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> c.SupressWarnings <span style="font-family: 宋体;">可以注释一D代?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"> <span style="font-family: 宋体;"><font color="#000000">作用Q关闭特定的警告信息Q例如你在 用泛型的时候未指定cd</font></span></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> <span style="font-family: 宋体;">用法Q?/span> @SupressWarnings("unchecked")</font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> Java <span style="font-family: 宋体;">中还提供了四U元注释Q专门负责注释其他的注释</span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> @Target <span style="font-family: 宋体;">表示该注释可以用于什么地斏V可用的</span> ElementType <span style="font-family: 宋体;">参数包括Q?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> CONSTRUCTOR : <span style="font-family: 宋体;">构造器的声?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> FIELD : <span style="font-family: 宋体;">域声?/span> ( <span style="font-family: 宋体;">包括</span> enum <span style="font-family: 宋体;">实例</span> )</font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> LOCAL_VARIABLE : <span style="font-family: 宋体;">局部变量声?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> METHOD : <span style="font-family: 宋体;">Ҏ(gu)声明</span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> PACKAGE : <span style="font-family: 宋体;">包声?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> PARAMETER : <span style="font-family: 宋体;">参数声明</span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> TYPE : <span style="font-family: 宋体;">cR接?/span> ( <span style="font-family: 宋体;">包括注解cd</span> ) <span style="font-family: 宋体;">?/span> enum <span style="font-family: 宋体;">声明</span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> @Retention <span style="font-family: 宋体;">表示需要在什么别保存该注释信息。可选的</span> RetentionPoicy <span style="font-family: 宋体;">参数包括Q?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> SOURCE : <span style="font-family: 宋体;">注释被~译器丢?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> CLASS : <span style="font-family: 宋体;">注释?/span> class <span style="font-family: 宋体;">文g中可用,但会?/span> VM <span style="font-family: 宋体;">丢弃</span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> RUNTIME : VM <span style="font-family: 宋体;">在q行时也保留注释Q因此可以通过反射机制d注释的信息?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> @Documented <span style="font-family: 宋体;">注释包含在</span> JavaDoc <span style="font-family: 宋体;">?/span></font></p> <p style="line-height: 200%; text-indent: 21pt; margin: 0cm 0cm 0pt;" class="MsoNormal"><font color="#000000"> @Inheried <span style="font-family: 宋体;">允许子类l承父类中的注释?/span></font></p> <br /> <img src ="http://www.aygfsteel.com/asdtiang/aggbug/314966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/asdtiang/" target="_blank">asdtiang</a> 2010-03-09 16:30 <a href="http://www.aygfsteel.com/asdtiang/archive/2010/03/09/314966.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 元数据学?fn)笔?----什么是元数据(转)http://www.aygfsteel.com/asdtiang/archive/2010/03/09/314963.htmlasdtiangasdtiangTue, 09 Mar 2010 08:25:00 GMThttp://www.aygfsteel.com/asdtiang/archive/2010/03/09/314963.htmlhttp://www.aygfsteel.com/asdtiang/comments/314963.htmlhttp://www.aygfsteel.com/asdtiang/archive/2010/03/09/314963.html#Feedback0http://www.aygfsteel.com/asdtiang/comments/commentRss/314963.htmlhttp://www.aygfsteel.com/asdtiang/services/trackbacks/314963.html元数据是关于数据的数据。在~程语言上下文中Q元数据? d到程序元素如Ҏ(gu)、字Dc类和包上的额外信息?/font>
元数据的作用
  •  一般来_元数据可以用于创建文档,跟踪代码中的依赖 性,执行~译时检查,代码分析?/font>
  • 元数据还可用于协助程序元素与框架或者EJB? EMF ?TestNGq样的工具之间的通信。EJB 3.0广泛地应用了Java元数据,通过元数据来实现声明性请求企业服务,依赖性以及资源注入,消除了严格的EJBlg模型U束Qƈ且取代了复杂? XML配置文g?/font>
  • 元数据甚至我们可以不用修改核心语言Q就能够?Java 语言中添加新功能Q核心语言成ؓ(f)一U开攑ּ语言。在U面向对象的语言中实现AOP是使用元数据进行语a扩展的一个很好的例子? AspectWerkz、JBoss AOP以及AspectJ5 使用元数据将cȝ语义转换Z个aspect、将数据字段转换Z个pointcut、将Ҏ(gu)转换Z个adviceQ等{?/font>
Javaq_的元数据
Java 元数据(AnnotationQ是 J2SE 5.0 Q研发历时近三年Q于2004q??0日正式发布,代号?#8220;Tiger”)新增加的功能之一Q它在JSR-175规范中有详细定义。该机制允许? Java 代码中添加自定义注释Qƈ允许通过反射QreflectionQ,以编E方式访问元数据注释。通过提供为程序元素附加额外数据的标准Ҏ(gu)Q元数据功能h 化和改进许多应用E序开发领域的潜在能力Q其中包括配|管理、框架实现和代码生成?/font>
 
Annotation不直接媄响程序的语义。然而,开发和部v工具可以dq些注释Qƈ以某UŞ式处理这些注释,可能生成其他 Java源程序、XML配置文g或者要与包含注释的E序一起用的其他lgQ从而媄响运行状态的E序的语义。注释可以从源代码中dQ从~译? ?class文g中读取,也可以通过反射机制在运行时d?/font>
 
Annotationh以下的一些特点:
  •  元数据以标签的Ş式存在于Java代码中?nbsp;
  •  ? 数据描述的信息是cd安全的,卛_数据内部的字D都是有明确cd的?nbsp;
  •  元数据需要编译器之外的工具额外的处理用来生成其它的程 序部件?nbsp;
  •  元数据可以只存在于Java源代码别,也可以存在于~译之后的Class文g内部?/font>
事实上,早在JDK5.0推出语言U的元数据机制Annotation以前Q就一直存在对元数据的需求。但是由于没有提供表辑օ数据 的标准机Ӟ出现了各U解x案。下面罗列了一些例?/font>
  •  transient 关键?nbsp;
  •  Serializable 标记接口
  •  xml 部v描述文g 
  • manifest.mf 文g    
  • Javadoc 标记Q将文档直接写在源程序里Q极大的方便了文档的~写Q?/font>
  •  XDocletQ 用类gJavaDoc的语法撰写描qC息,q用工L(fng)成描q文Ӟ
q? 些方法都存在一定的局限性,比如使用关键字不h扩展性,用户自定义新的关键字Q标记接口没有提供额外的信息Q它们不能带有参敎ͼq且只能处理c,而不? 处理字段或方法或包。Javadoc和XDoclet标记不会被编译器查?/font>
 
最后,我们再详l的Ҏ(gu)一下Annotation和XML部v描述文g的优?/font>
  • XML配置文g与代码文件分,不利于一致性维护,~Z在运行时的反机制。而Annotation与代码一赯~译器处理,q能? 在运行时讉K?/font>
  • 通常XML配置文g都很复杂而且冗长Qؓ(f)了配|代码,XML? 件必d制许多信息:比如代码中类名字和方法名字。Java注释则不同,它是代码的一部分Q不需要额外的引用可以指明配|信息?/font>
  • XML配置文g是文本文Ӟ没有昑ּ的类型支持,需要到q行时刻才能发现隐藏的错误。? Annotation是类型安全的Q它会被~译器检查?/font>  
  • XML文g可以表达复杂的关p,但是在注释中我们却很难表? 复杂的或层次的结构?/font>
  •  XML配置文g是在代码之外被单独处理的Q也是说基于XML的配|信息不是硬~码的,可以? |的时候进行修攏V而修改Annotation则需要进行重新编译,不过我们可以利用AOP提供的机制ؓ(f)已有的代码添加Annotation。通过部v? 同的AOP模块Q就能代码h不同的AnnotationQ但比v直接修改XML昑־复杂?/font>
? 而言之,注释是简单易用的Qƈ且对大多数应用来说已l够了。而XML文g更复杂,但具有部|的灉|性,因而被用来处理与部|相关的决策。注释与XML? |文件可以一起用。由于注释只能保存相当少的配|信息,只有预先集成的框架组ӞcM在框架组件中已经完成了大多数预备工作Q可以广泛地把注释作为配|? 选项。而XML配置文g作ؓ(f)一个可选的重蝲机制Q可以用于改变注释的默认行ؓ(f)?

asdtiang 2010-03-09 16:25 发表评论
]]>
swing皮肤包用及样例http://www.aygfsteel.com/asdtiang/archive/2010/02/28/314093.htmlasdtiangasdtiangSun, 28 Feb 2010 02:04:00 GMThttp://www.aygfsteel.com/asdtiang/archive/2010/02/28/314093.htmlhttp://www.aygfsteel.com/asdtiang/comments/314093.htmlhttp://www.aygfsteel.com/asdtiang/archive/2010/02/28/314093.html#Feedback0http://www.aygfsteel.com/asdtiang/comments/commentRss/314093.htmlhttp://www.aygfsteel.com/asdtiang/services/trackbacks/314093.html
http://javootoo.l2fprod.com/index.html  该网站上有收费和开源的皮肤包?br />
加蝲皮肤包的代码在这里简单说下,加入JAR包,在窗体加载代码前加入以下代码Q窗体最好以U程启动?br />
 protected void startup() {
        
try {
            UIManager.setLookAndFeel(
new NapkinLookAndFeel());
            ///每个皮肤包都有一?***LookAndFeelc,查下文档或看下JAR都能扑ֈQ在q里改下可以了
        } 
catch (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(TestSkin1View.
class.getName()).log(Level.SEVERE, null, ex);
        }
        show(
new TestSkin1View(this));
    }
我的环境是NetBean6.8

代码׃用多说了Q来看下效果。substance有BUGQ它不是完全开源的Q不q它的皮肤包很多

Napkin Look & Feel



Liquid look & feel




idw-gpl



JTattoo


com.jtattoo.plaf.smart.SmartLookAndFeel

com.jtattoo.plaf.bernstein.BernsteinLookAndFeel


Squareness Look and Feel


net.beeger.squareness.SquarenessLookAndFeel







asdtiang 2010-02-28 10:04 发表评论
]]>
վ֩ģ壺 ¦| | | ˮ| | ˶| ɽ| ȫ| ɽ| Ӣ| | | Դ| ٹ| ɽ| | ٰ| | ϻ| Խ| ľ| | | | | | ɳ| ɳ| ˻| | | ¤| ٸ| | | ʡ| ٳ| | | п| ־|