﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-努力创造未来！-随笔分类-jdk</title><link>http://www.blogjava.net/pdw2009/category/14802.html</link><description>J2EE相关应用技术日志</description><language>zh-cn</language><lastBuildDate>Fri, 07 Aug 2009 11:25:50 GMT</lastBuildDate><pubDate>Fri, 07 Aug 2009 11:25:50 GMT</pubDate><ttl>60</ttl><item><title>Html Parse 最佳实践</title><link>http://www.blogjava.net/pdw2009/archive/2008/06/19/209125.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Thu, 19 Jun 2008 03:53:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/06/19/209125.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/209125.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/06/19/209125.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/209125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/209125.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
本文转移到<a title="http://php.11519.net/5jblog/?p=399" href="http://php.11519.net/5jblog/?p=399">http://php.11519.net/5jblog/?p=399</a>
  <img src ="http://www.blogjava.net/pdw2009/aggbug/209125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-06-19 11:53 <a href="http://www.blogjava.net/pdw2009/archive/2008/06/19/209125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>加密与编码</title><link>http://www.blogjava.net/pdw2009/archive/2008/06/19/209121.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Thu, 19 Jun 2008 03:45:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/06/19/209121.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/209121.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/06/19/209121.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/209121.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/209121.html</trackback:ping><description><![CDATA[<p>转移到 &nbsp;<a href="http://php.11519.net/5jblog/?p=414">http://php.11519.net/5jblog/?p=414</a></p>
<img src ="http://www.blogjava.net/pdw2009/aggbug/209121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-06-19 11:45 <a href="http://www.blogjava.net/pdw2009/archive/2008/06/19/209121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>unicode 编码转换成汉字</title><link>http://www.blogjava.net/pdw2009/archive/2008/06/19/209119.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Thu, 19 Jun 2008 03:33:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/06/19/209119.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/209119.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/06/19/209119.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/209119.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/209119.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 把最近工作中所写的代码贴一下,以备后用,如能给予你帮助我万分高兴package&nbsp;com.easylotto.omas.util;import&nbsp;java.util.*;import&nbsp;java.io.*;import&nbsp;org.apache.commons.lang.*;/**&nbsp;*&nbsp;替换HTMl里面的字符&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/pdw2009/archive/2008/06/19/209119.html'>阅读全文</a><img src ="http://www.blogjava.net/pdw2009/aggbug/209119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-06-19 11:33 <a href="http://www.blogjava.net/pdw2009/archive/2008/06/19/209119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA和JAVAC 命令行 </title><link>http://www.blogjava.net/pdw2009/archive/2008/06/12/207413.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Thu, 12 Jun 2008 08:00:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/06/12/207413.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/207413.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/06/12/207413.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/207413.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/207413.html</trackback:ping><description><![CDATA[<h5 class="posthead"><a id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/JeffChen/archive/2008/01/15/1039708.html">JAVA和JAVAC 命令行</a> </h5>
<div class="postText">javac和java命令行中的-classpath选项<br />
这是个很基础的问题，但是因为基本上都是用现有的IDE工具 来开发java程序，所以很少有人意识到这一点。<br />
<span style="font-weight: bold">javac</span><br />
-classpath，设定要搜索类的路径，可以是目录，jar文件，zip文件（里面都是class文件），会覆盖掉所有在CLASSPATH里面的设定。<br />
-sourcepath， 设定要搜索编译所需java 文件的路径，可以是目录，jar文件，zip文件（里面都是java文件）。<br />
所以一个完整的javac命令行应该是这样的，<br />
假设abc.java在路径c:\src里面，在任何的目录的都可以执行以下命令来编译。<br />
javac -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip -sourcepath c:\source\project1\src;c:\source\project2 \lib\src.jar;c:\source\project3\lib\src.zip c:\src\abc.java<br />
<br />
表示编译需要c:\classed下面的class文件，c:\jar\abc.jar里面的class文件，c:\zip\abc.zip里面的class文件<br />
还需要c:\source\project1\src下面的源文件，c:\source\project2 \lib\src.jar里面的源文件，c:\source\project3\lib\src.zip里面的源文件，<br style="color: rgb(255,0,0)" />
<span style="color: rgb(255,0,0)">注意：jar，zip里面的源文件不会有什么改动，目录下的源文件，有可能会被重新编译。<br />
<span style="color: rgb(0,0,0)"><span style="font-weight: bold">java</span><br />
-classpath， 设定要搜索的类的路径，可以是目录，jar文件，zip文件（里面都是class文件），会覆盖掉所有的CLASSPATH的设定。<br />
由于所要执行的类也是要搜索的类的一部分，所以一定要把这个类的路径也放到-classpath的设置里面。<br />
表现在，在要执行的类的路径里面执行java时，一定要添加上点号（.）标示本目录也要搜索。<br />
<br />
假设abc.class在路径c:\src里面<br />
可以在任何路径下执行以下命令<br />
java -classpath c:\classes;</span></span>c:\jar\abc.jar;c:\zip\abc.zip;c:\src abc<br />
<br />
问题：如果main.class属于c:\jar\abc.jar，并且在com.cnblogs.jeffchen这个包里，那么执行java -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip;com.cnblogs.jeffchen.main即可， 但是如果classpath中包含多个jar包呢？并且其他jar包中也有com.cnblogs.jeffchen会发生什么情况？错误？<br />
<br />
<span style="color: rgb(255,0,0)">在windows下，<br />
文件路径的分割符为反斜杠&nbsp; \&nbsp;&nbsp; <br />
类或者java文件列表的分割符为分号 ;<br />
<br />
在linux下<br />
文件路径的分隔符位斜杠 /<br />
类或者java文件列表的分隔符为冒号 :<br />
<br />
<span style="color: rgb(51,153,102)">一个linux下编译和运行的例子<br />
&nbsp;/usr/local/java/bin/javac -classpath /tmp/javatest/lib/mail-1.3.3.jar -d /tmp/javatest/bin/ /tmp/javatest/src/jp/co/realseed/Capability.java<br />
<br />
/usr/local/java/bin/java -classpath /tmp/javatest/lib/mail-1.3.3.jar:/tmp/javatest/bin/ jp.co.realseed.Capability<br />
</span></span><br />
</div>
<img src ="http://www.blogjava.net/pdw2009/aggbug/207413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-06-12 16:00 <a href="http://www.blogjava.net/pdw2009/archive/2008/06/12/207413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java加密相关技术</title><link>http://www.blogjava.net/pdw2009/archive/2008/04/15/193046.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Tue, 15 Apr 2008 03:44:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/04/15/193046.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/193046.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/04/15/193046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/193046.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/193046.html</trackback:ping><description><![CDATA[前段时间需要用到这方面的技术,写了几个例子,不加文字说明,只贴代码<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"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;demo.encrypt;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.UnsupportedEncodingException;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.MessageDigest;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.NoSuchAlgorithmException;<br />
<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;*&nbsp;<br />
&nbsp;*&nbsp;摘要加密。检验信息完整性&nbsp;目前广泛使用的算法有MD4、MD5、SHA-1<br />
&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;peidw&nbsp;2008-03-02<br />
&nbsp;*<br />
&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MessageDigestExample&nbsp;{<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;*&nbsp;信息摘要完整性加密<br />
&nbsp;*&nbsp;<br />
&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;单一摘要算法，不使用密码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@throws</span><span style="color: #008000">&nbsp;UnsupportedEncodingException&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@throws</span><span style="color: #008000">&nbsp;NoSuchAlgorithmException&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;UnsupportedEncodingException,&nbsp;NoSuchAlgorithmException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">www.17lotto.com</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">要加密的字符串</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;bstr</span><span style="color: #000000">=</span><span style="color: #000000">str.getBytes(</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageDigest&nbsp;messageDigest</span><span style="color: #000000">=</span><span style="color: #000000">MessageDigest.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">SHA-1</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获取算法</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\n</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">messageDigest.getProvider().getInfo());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">加密前:\n&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(bstr));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;messageDigest.update(bstr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\n加密后结果:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(messageDigest.digest(),</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
</span></div>
<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"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;demo.encrypt;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.Key;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.NoSuchAlgorithmException;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.crypto.Cipher;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.crypto.KeyGenerator;<br />
<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;*&nbsp;私钥加密，也称对称性密码，加/解密双方共享同一密钥<br />
&nbsp;*&nbsp;<br />
&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;peidw<br />
&nbsp;*<br />
&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;PrivateExample&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;加必解密例子<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@throws</span><span style="color: #008000">&nbsp;Exception<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;deendemo()</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">www.17lotto.com</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">要加密的字符串</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;bstr</span><span style="color: #000000">=</span><span style="color: #000000">str.getBytes(</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">产生密钥</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyGenerator&nbsp;keyGen</span><span style="color: #000000">=</span><span style="color: #000000">KeyGenerator.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">AES</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyGen.init(</span><span style="color: #000000">128</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;key</span><span style="color: #000000">=</span><span style="color: #000000">keyGen.generateKey();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">密钥保存</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;fkey</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(</span><span style="color: #000000">"</span><span style="color: #000000">f:\\key.obj</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;os</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(fkey);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.write(key.getEncoded());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">密钥保存问题<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获得一个私鈅加密类Cipher，ECB是加密方式，PKCS5Padding是填充方法</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cipher&nbsp;cipher</span><span style="color: #000000">=</span><span style="color: #000000">Cipher.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">AES/ECB/PKCS5Padding</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\n</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">cipher.getProvider().getInfo());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使用私鈅加密</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cipher.init(Cipher.ENCRYPT_MODE,key);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;cipherText</span><span style="color: #000000">=</span><span style="color: #000000">cipher.doFinal(bstr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">密文保存</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;cryptograph</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(</span><span style="color: #000000">"</span><span style="color: #000000">f:\\cryptograph.obj</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;cos</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(cryptograph);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cos.write(cipherText);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cos.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cos.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Finish&nbsp;encryption:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(cipherText,</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\nStart&nbsp;decryption:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cipher.init(Cipher.DECRYPT_MODE,key);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;newPlainText</span><span style="color: #000000">=</span><span style="color: #000000">cipher.doFinal(cipherText);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Finish&nbsp;decryption:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(newPlainText,</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;从文件加载密钥和密文进行解密例子(新jdk不懂怎么加载)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@throws</span><span style="color: #008000">&nbsp;Exception<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;decryptionFromFile()</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyGenerator&nbsp;keyGen</span><span style="color: #000000">=</span><span style="color: #000000">KeyGenerator.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">AES</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@throws</span><span style="color: #008000">&nbsp;Exception&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrivateExample&nbsp;pe</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PrivateExample();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pe.deendemo();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
</span></div>
<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"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;demo.encrypt;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.KeyFactory;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.KeyPair;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.KeyPairGenerator;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.PrivateKey;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.PublicKey;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.spec.PKCS8EncodedKeySpec;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.spec.X509EncodedKeySpec;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.crypto.Cipher;<br />
<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;*&nbsp;&nbsp;非对称性加密，也叫公钥加密&nbsp;产开两个密钥（私钥，公钥）私钥加密只有公钥才能解样，同时公钥加密只有私钥能解开.<br />
&nbsp;*&nbsp;&nbsp;目前JDK5提供的RSA算法<br />
&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;peidw<br />
&nbsp;*<br />
&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;PublicExample&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;加密解密例子<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@throws</span><span style="color: #008000">&nbsp;Exception<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;deenDemo()</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">www.17lotto.com</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">&nbsp;bstr[]</span><span style="color: #000000">=</span><span style="color: #000000">str.getBytes(</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">构成一个RSA密钥</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\nStart&nbsp;generating&nbsp;RSA&nbsp;key</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyPairGenerator&nbsp;keyGen</span><span style="color: #000000">=</span><span style="color: #000000">KeyPairGenerator.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">RSA</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyGen.initialize(</span><span style="color: #000000">1024</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyPair&nbsp;key</span><span style="color: #000000">=</span><span style="color: #000000">keyGen.generateKeyPair();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">保存公/私密钥</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;pubfile</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(</span><span style="color: #000000">"</span><span style="color: #000000">f:\\public.dat</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;prifile</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(</span><span style="color: #000000">"</span><span style="color: #000000">f:\\private.dat</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;pubos</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(pubfile);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;prios</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(prifile);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pubos.write(key.getPublic().getEncoded());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prios.write(key.getPrivate().getEncoded());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pubos.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prios.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pubos.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prios.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Finish&nbsp;generating&nbsp;RSA&nbsp;key</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获得一个RSA的Cipher类，使用公鈅加密</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cipher&nbsp;cipher</span><span style="color: #000000">=</span><span style="color: #000000">Cipher.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">RSA/ECB/PKCS1Padding</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\n</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">cipher.getProvider().getInfo());<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\nStart&nbsp;encryption</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cipher.init(Cipher.ENCRYPT_MODE,key.getPublic());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;cipherText</span><span style="color: #000000">=</span><span style="color: #000000">cipher.doFinal(bstr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;pub_cryptograph</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(</span><span style="color: #000000">"</span><span style="color: #000000">f:\\pub_cryptograph.dat</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;os</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(pub_cryptograph);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.write(cipherText);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Finish&nbsp;encryption:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(cipherText,</span><span style="color: #000000">"</span><span style="color: #000000">UTF8</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使用私鈅解密</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\nStart&nbsp;decryption</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cipher.init(Cipher.DECRYPT_MODE,key.getPrivate());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;newPlainText</span><span style="color: #000000">=</span><span style="color: #000000">cipher.doFinal(cipherText);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Finish&nbsp;decryption:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(newPlainText,</span><span style="color: #000000">"</span><span style="color: #000000">UTF8</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;加裁私钥，解密公钥加密的文的文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@throws</span><span style="color: #008000">&nbsp;Exception<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;fromfielEnDeDemo()</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;prifile</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(</span><span style="color: #000000">"</span><span style="color: #000000">f:\\private.dat</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;fsprivateKey&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileInputStream(prifile);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedInputStream&nbsp;bfsprivateKey&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedInputStream(fsprivateKey);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;byteprivateKey&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[bfsprivateKey.available()];&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bfsprivateKey.read(byteprivateKey);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bfsprivateKey.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">X509EncodedKeySpec&nbsp;priKeySpec&nbsp;=&nbsp;new&nbsp;X509EncodedKeySpec(byteprivateKey);&nbsp;&nbsp;公钥加载法</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PKCS8EncodedKeySpec&nbsp;priKeySpec&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PKCS8EncodedKeySpec(byteprivateKey);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">私钥加载</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyFactory&nbsp;keyFactory&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;KeyFactory.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">RSA</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrivateKey&nbsp;priKey&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;keyFactory.generatePrivate(priKeySpec);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(priKey.getFormat());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cipher&nbsp;cipher</span><span style="color: #000000">=</span><span style="color: #000000">Cipher.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">RSA/ECB/PKCS1Padding</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cipher.init(Cipher.DECRYPT_MODE,priKey);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;pubcryptographfile</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(</span><span style="color: #000000">"</span><span style="color: #000000">f:\\pub_cryptograph.dat</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;pubcis&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileInputStream(pubcryptographfile);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">&nbsp;cstr[]</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[pubcis.available()];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pubcis.read(cstr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pubcis.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;newPlainText</span><span style="color: #000000">=</span><span style="color: #000000">cipher.doFinal(cstr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Finish&nbsp;decryption:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(newPlainText,</span><span style="color: #000000">"</span><span style="color: #000000">UTF8</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PublicExample&nbsp;pe</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PublicExample();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pe.fromfielEnDeDemo();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
</span></div>
<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"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;demo.encrypt;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;*&nbsp;&lt;p&gt;数字签名&lt;/p&gt;<br />
&nbsp;*&nbsp;&lt;pre&gt;<br />
&nbsp;*&nbsp;&nbsp;&nbsp;使用RSA私钥对信息摘要签名，然后用公钥进行解密<br />
&nbsp;*&nbsp;&lt;/pre&gt;<br />
&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;peidw<br />
&nbsp;*<br />
&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;DigitalSignature2Example&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;test&nbsp;()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">www.17lotto.com</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;bstr</span><span style="color: #000000">=</span><span style="color: #000000">str.getBytes(</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">形成RSA公私钥对</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\nStart&nbsp;generating&nbsp;RSA&nbsp;key</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyPairGenerator&nbsp;keyGen</span><span style="color: #000000">=</span><span style="color: #000000">KeyPairGenerator.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">RSA</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyGen.initialize(</span><span style="color: #000000">1024</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyPair&nbsp;key</span><span style="color: #000000">=</span><span style="color: #000000">keyGen.generateKeyPair();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signature&nbsp;sig</span><span style="color: #000000">=</span><span style="color: #000000">Signature.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">SHA1WithRSA</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sig.initSign(key.getPrivate());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sig.update(bstr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;signature</span><span style="color: #000000">=</span><span style="color: #000000">sig.sign();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(sig.getProvider().getInfo());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\nSignature:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(signature,</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使用公鈅验证</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\nStart&nbsp;signature&nbsp;verification</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sig.initVerify(key.getPublic());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sig.update(bstr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(sig.verify(signature)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Signature&nbsp;verified</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Signature&nbsp;failed</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">catch</span><span style="color: #000000">(SignatureException&nbsp;e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Signature&nbsp;failed</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
</span></div>
<img src ="http://www.blogjava.net/pdw2009/aggbug/193046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-04-15 11:44 <a href="http://www.blogjava.net/pdw2009/archive/2008/04/15/193046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将Unicode 码(字符串)转换成汉字</title><link>http://www.blogjava.net/pdw2009/archive/2008/02/18/180485.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Mon, 18 Feb 2008 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/02/18/180485.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/180485.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/02/18/180485.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/180485.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/180485.html</trackback:ping><description><![CDATA[<p><br />
例子代码如相,原理我还没弄明白<br />
</p>
<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"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;example;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.UnsupportedEncodingException;<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;*&nbsp;Unicode&nbsp;码转成汉字<br />
&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;peidw<br />
&nbsp;*<br />
&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;CodeFormTest&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String&nbsp;args[])&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;UnsupportedEncodingException{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;a</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">&#24320;&#22987;&#20817;&#22870;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a.replaceAll(</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">,</span><span style="color: #000000">"</span><span style="color: #000000">).replaceAll(</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 />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;[]&nbsp;s2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.split(</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">""</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(s2.length);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">s2.length;i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;v&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Integer.parseInt(s2[i],</span><span style="color: #000000">10</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s1</span><span style="color: #000000">=</span><span style="color: #000000">s1</span><span style="color: #000000">+</span><span style="color: #000000">(</span><span style="color: #0000ff">char</span><span style="color: #000000">)v;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(s1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<img src ="http://www.blogjava.net/pdw2009/aggbug/180485.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-02-18 16:18 <a href="http://www.blogjava.net/pdw2009/archive/2008/02/18/180485.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java api提供的正则表达式</title><link>http://www.blogjava.net/pdw2009/archive/2008/01/21/176744.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Mon, 21 Jan 2008 05:57:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/01/21/176744.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/176744.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/01/21/176744.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/176744.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/176744.html</trackback:ping><description><![CDATA[无聊一直想看明白正则表达式,但这门课程要深入需要太常时间了,就看了java api中所提供的正则表达式,做了个小例子,也算一个入门吧.<br />
在java中正则运算主要由三部分构成.<br />
<br />
1、模式Parttern<br />
<br />
2、知配器<span class="original_words">Matcher</span><br />
<br />
3、输入字符串<br />
<br />
参考如下例子和别的blog<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"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;example;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.regex.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;RegexDemo&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;args<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">ccdewps&nbsp;kkikk</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;regEx</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">a|f</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pattern&nbsp;&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Matcher&nbsp;m</span><span style="color: #000000">=</span><span style="color: #000000">p.matcher(str);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;result</span><span style="color: #000000">=</span><span style="color: #000000">m.find();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(result);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">替换</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">ababccded,ab&nbsp;,love&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regEx</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">a+</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">Pattern.compile(regEx);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m</span><span style="color: #000000">=</span><span style="color: #000000">p.matcher(str);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s</span><span style="color: #000000">=</span><span style="color: #000000">m.replaceAll(</span><span style="color: #000000">"</span><span style="color: #000000">--</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">""表示删除</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(s);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regEx</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">(love)</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">Pattern.compile(regEx);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m</span><span style="color: #000000">=</span><span style="color: #000000">p.matcher(str);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s1</span><span style="color: #000000">=</span><span style="color: #000000">m.replaceAll(</span><span style="color: #000000">"</span><span style="color: #000000">&amp;</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">""表示删除</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(s1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(m.find());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">Pattern.compile(</span><span style="color: #000000">"</span><span style="color: #000000">c.e</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m</span><span style="color: #000000">=</span><span style="color: #000000">p.matcher(str);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(m.find());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(m.replaceFirst(</span><span style="color: #000000">"</span><span style="color: #000000">呵呵,正则表达式</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
</span></div>
<p>&nbsp;</p>
<p>这篇介绍java 正则的blog写得不错，细心看一遍就能弄懂个大概<br />
http://blog.csdn.net/ambitiontan/archive/2005/12/21/558195.aspx<br />
<br />
最后切记正则的目的：对字符串正行，查找匹配、替换、删除等工作。</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/pdw2009/aggbug/176744.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-01-21 13:57 <a href="http://www.blogjava.net/pdw2009/archive/2008/01/21/176744.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java读取资源文件</title><link>http://www.blogjava.net/pdw2009/archive/2007/10/11/152182.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Thu, 11 Oct 2007 15:54:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2007/10/11/152182.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/152182.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2007/10/11/152182.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/152182.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/152182.html</trackback:ping><description><![CDATA[<div>如何读取资源文件：<br />
（一）<br />
Properties props = new Properties();&nbsp;&nbsp;&nbsp; <br />
props.load(new FileInputStream("db.properties")); </div>
<div>（二）<br />
blog.properties文件如下</div>
<div>dbdriver=oracle.jdbc.driver.OracleDriver<br />
dburl=jdbc:oracle:thin:@127.0.0.1:1521:ora92<br />
dbuser=blog<br />
dbpwd=blog</div>
<div>--------------</div>
<div>public class Config {</div>
<div>&nbsp; public Config() {<br />
&nbsp;&nbsp;&nbsp; this.initDBConfig();<br />
&nbsp; }</div>
<div>&nbsp; public String DBdriver;<br />
&nbsp; public String DBuser;<br />
&nbsp; public String DBpwd;<br />
&nbsp; public String DBurl;</div>
<div>&nbsp; private void initDBConfig() {<br />
&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResourceBundle bundle = ResourceBundle.getBundle("blog");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBdriver = bundle.getString("dbdriver");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBurl = bundle.getString("dburl");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBuser = bundle.getString("dbuser");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBpwd = bundle.getString("dbpwd");<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; catch (Exception ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp; }</div>
<div>}</div>
<div>----------------</div>
<div>public class DAO {<br />
&nbsp; public DAO() {<br />
&nbsp; }</div>
<div>&nbsp; public Connection getConnection() {<br />
&nbsp;&nbsp;&nbsp; Connection conn = null;<br />
&nbsp;&nbsp;&nbsp; Config config = new Config();<br />
&nbsp;&nbsp;&nbsp; String DBdriver = config.DBdriver;<br />
&nbsp;&nbsp;&nbsp; String DBuser = config.DBuser;<br />
&nbsp;&nbsp;&nbsp; String DBpwd = config.DBpwd;<br />
&nbsp;&nbsp;&nbsp; String DBurl = config.DBurl;<br />
&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName(DBdriver);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn = DriverManager.getConnection(DBurl, DBuser, DBpwd);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; catch (Exception ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("********************");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("不能得到数据库连接");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("DBdriver: " + DBdriver);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("DBuser: " + DBuser);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("DBpwd: " + DBpwd);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("DBurl: " + DBurl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return conn;<br />
&nbsp; }</div>
<div>}</div>
<div>（三）<br />
&nbsp;Properties props=new Properties();<br />
&nbsp;props.load(BugFactory.class.getResourceAsStream("xx.properties"));<br />
&nbsp;String name = props.getPropery("xxxx");<br />
&nbsp;此时xx.properties应该与该类放在同一个目录.</div>
<div>（四）<br />
&nbsp;ResourceBundle res = ResourceBundle.getBundle("yy.properties");<br />
&nbsp;String name = res.getString("yyyy");<br />
&nbsp;yy.properties应放在/WEB-INF/classes目录</div>
<div>（五）<br />
如果你这个Bean打包的话，就把这个文件放在包内。</div>
<div>我一般是这样写的<br />
Properties prop = new Properties();<br />
try<br />
{<br />
&nbsp;InputStream is&nbsp;= getClass().getResourceAsStream("db.properties");<br />
&nbsp;prop.load(is);<br />
&nbsp;if(is!=null)<br />
&nbsp;&nbsp;&nbsp; is.close();<br />
}</div>
<div>另：<br />
props.load(new FileInputStream("db.properties")); 是读取当前目录的db.properties文件<br />
getClass.getResourceAsStream("db.properties"); 是读取当前类所在位置一起的db.properties文件<br />
getClass.getResourceAsStream("/db.properties"); 是读取ClassPath的根的db.properties文件,注意ClassPath如果是多个路径或者jar文件的,只要在任意一个路径目录下或者jar文件里的根下都可以,如果存在于多个路径下的话,按照ClassPath中的先后顺序,使用先找到的,其余忽略.</div>
<img src ="http://www.blogjava.net/pdw2009/aggbug/152182.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2007-10-11 23:54 <a href="http://www.blogjava.net/pdw2009/archive/2007/10/11/152182.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javax.mail使用例子</title><link>http://www.blogjava.net/pdw2009/archive/2007/10/08/151180.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Mon, 08 Oct 2007 14:40:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2007/10/08/151180.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/151180.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2007/10/08/151180.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/151180.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/151180.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: package&nbsp;pg.system;/**&nbsp;*&nbsp;@author&nbsp;pdw&nbsp;*&nbsp;*&nbsp;TODO&nbsp;发送邮件!&nbsp;*&nbsp;&nbsp;*/import&nbsp;java.util.*;import&nbsp;javax.mail.*;import&nbsp;javax.ma...&nbsp;&nbsp;<a href='http://www.blogjava.net/pdw2009/archive/2007/10/08/151180.html'>阅读全文</a><img src ="http://www.blogjava.net/pdw2009/aggbug/151180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2007-10-08 22:40 <a href="http://www.blogjava.net/pdw2009/archive/2007/10/08/151180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jdk5多线程(转)</title><link>http://www.blogjava.net/pdw2009/archive/2007/09/05/142835.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Wed, 05 Sep 2007 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2007/09/05/142835.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/142835.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2007/09/05/142835.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/142835.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/142835.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;该文转移至&nbsp; <a href="http://php.11519.net/5jblog/?p=401">http://php.11519.net/5jblog/?p=401</a></p>
<img src ="http://www.blogjava.net/pdw2009/aggbug/142835.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2007-09-05 10:51 <a href="http://www.blogjava.net/pdw2009/archive/2007/09/05/142835.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java类反射例子</title><link>http://www.blogjava.net/pdw2009/archive/2007/08/29/141077.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Wed, 29 Aug 2007 12:47:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2007/08/29/141077.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/141077.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2007/08/29/141077.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/141077.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/141077.html</trackback:ping><description><![CDATA[<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"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;util;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.lang.reflect.Field;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.lang.reflect.Method;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;test.web.example.PP;<br></span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br>&nbsp;*&nbsp;<br>&nbsp;*&nbsp;</span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000">&nbsp;peidw<br>&nbsp;*<br>&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Reflection&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;取得参数对象中的公共属性<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;obj<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;fieldname<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@return</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@throws</span><span style="COLOR: #008000">&nbsp;Exception<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Object&nbsp;getProperty(Object&nbsp;obj,String&nbsp;fieldname)</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;result</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;objClass</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">obj.getClass();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field&nbsp;field</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">objClass.getField(fieldname);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">field.get(obj);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;result;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获得某类的静态属性<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;className<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;fieldName<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@return</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@throws</span><span style="COLOR: #008000">&nbsp;Exception<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Object&nbsp;getStaticProperty(String&nbsp;className,String&nbsp;fieldName)</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;cls</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">Class.forName(className);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field&nbsp;field</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">cls.getField(fieldName);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;provalue</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">field.get(cls);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;provalue;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获取参数对象的属性值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;obj<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;propertyName<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@return</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@throws</span><span style="COLOR: #008000">&nbsp;Exception<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Object&nbsp;getPrivatePropertyValue(Object&nbsp;obj,String&nbsp;propertyName)</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;cls</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">obj.getClass();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field&nbsp;field</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">cls.getDeclaredField(propertyName);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field.setAccessible(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;retvalue</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">field.get(obj);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;retvalue;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;执行某对象的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;owner<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;methodName<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;args<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@return</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@throws</span><span style="COLOR: #008000">&nbsp;Exception<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Object&nbsp;invokeMethod(Object&nbsp;owner,String&nbsp;methodName,Object[]&nbsp;args)</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;cls</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">owner.getClass();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class[]&nbsp;argclass</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Class[args.length];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">argclass.length;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">j;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argclass[i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">args[i].getClass();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method&nbsp;method</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">cls.getMethod(methodName,argclass);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;method.invoke(owner,&nbsp;args);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;执行静态类的方法<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;className<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;methodName<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;args<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@return</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@throws</span><span style="COLOR: #008000">&nbsp;Exception<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Object&nbsp;invokeStaticMethod(String&nbsp;className,String&nbsp;methodName,Object[]&nbsp;args)</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;cls</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">Class.forName(className);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class[]&nbsp;argclass</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Class[args.length];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">argclass.length;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">j;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argclass[i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">args[i].getClass();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method&nbsp;method</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">cls.getMethod(methodName,argclass);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;method.invoke(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">,&nbsp;args);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Object&nbsp;newInstance(String&nbsp;className,Object[]&nbsp;args)</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;clss</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">Class.forName(className);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class[]&nbsp;argclass</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Class[args.length];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">argclass.length;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">j;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argclass[i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">args[i].getClass();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.lang.reflect.Constructor&nbsp;cons</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">clss.getConstructor(argclass);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;cons.newInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;main(String[]&nbsp;args)</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reflection&nbsp;rl</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Reflection();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PP&nbsp;p</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;PP();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rl.getPrivatePropertyValue(p,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">aname</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span></div>
测试类<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"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;test.web.example;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;org.junit.Assert.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.junit.Before;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.junit.Test;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.junit.Assert.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;util.Reflection;<br><br></span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br>&nbsp;*&nbsp;<br>&nbsp;*&nbsp;</span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000">&nbsp;peidw<br>&nbsp;*<br>&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;ReflectionTest&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;PP&nbsp;pp</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;Reflection&nbsp;reflection</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;@Before<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setUp()&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reflection</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Reflection();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pp</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;PP();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;@Test<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;testGetProperty()&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(pp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(reflection);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(reflection.getProperty(pp,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">address</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">assertEquals(reflection.getProperty(pp,&nbsp;"address"),&nbsp;null);</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;@Test<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;testGetStaticProperty()</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertEquals(reflection.getStaticProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test.web.example.PP</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">count</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">love&nbsp;you</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;@Test<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;testGetPrivatePropertyValue()&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertEquals(reflection.getPrivatePropertyValue(pp,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">aname</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;@Test<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;testInvokeMethod()&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertEquals(reflection.invokeMethod(pp,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">setAddress</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Object[]{</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">合浦西场镇</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">}),</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertEquals(reflection.getProperty(pp,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">address</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">合浦西场镇</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;@Test<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;testInvokeStaticMethod()</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertEquals(reflection.invokeStaticMethod(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test.web.example.PP</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">changeCount</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Object[]{</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">80</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">}),</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertEquals(reflection.getStaticProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test.web.example.PP</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">count</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">80</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;@Test<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;testNewInstance()&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;vpp</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">reflection.newInstance(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test.web.example.PP</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Object[]{</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">peidw</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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.junit.Assert.assertNotNull(vpp);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">assertEquals(reflection.getPrivatePropertyValue(vpp,"aname"),"peidw");</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br><br><br><br>}<br></span></div>
<img src ="http://www.blogjava.net/pdw2009/aggbug/141077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2007-08-29 20:47 <a href="http://www.blogjava.net/pdw2009/archive/2007/08/29/141077.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>itext经验总结( 转)</title><link>http://www.blogjava.net/pdw2009/archive/2007/02/28/101162.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Wed, 28 Feb 2007 08:02:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2007/02/28/101162.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/101162.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2007/02/28/101162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/101162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/101162.html</trackback:ping><description><![CDATA[因为前些日子在一个项目中用到了iText，稍有收获，便总结于此，以供他人所需。<br /><br />iText是一个比较底层的pdf库，很多项目的pdf操作都是以它为基础的。像spring，以及另一个比较有名的报表工具jasperreports。简单的pdf报表输出用它比较合适，比较复杂的话使用起来就比较困难了，你要手工编写太多的代码。<br /><br />比较好的是iText网站上提供相当多的示例代码，比较容易入门。我这里只说一些在它的文档里并没有直接讲到的东西。<br /><br />1 关于Document<br /><br />Document的几种构造函数：<br />public Document(); <br />public Document(Rectangle pageSize); <br />public Document(Rectangle pageSize, <br />int marginLeft, <br />int marginRight, <br />int marginTop, <br />int marginBottom); <br />下面两种比较有用，如果是你想定义纸张大小和边缘的时候。对于Margin，iText上提到“You can also change the margins while you are adding content. Note that the changes will only be noticed on the NEXT page. If you want the margins mirrored (odd and even pages), you can do this with this method: setMarginMirroring(true). ”不过，对于table似乎并不好使。table并不会了理会你设定的margin，如果想改变它的magin还是需要去改变它的宽度（setWidth）。<br /><br />2 pdf表单<br /><br />使用PdfStamper是可以填充pdf表单的，这样就给出了一种很好的报表生成思路。<br />word制作报表样式--&gt;acrobat转pdf--&gt;itext填充数据--&gt;输出pdf <br />这做非常简单，因为可以比较容易的控制pdf的样式。我对于Java的报表工具了解的并不多，不过在jasperreports，即使用GUI工具做一个样式比较复杂的报表也不是怎么容易。比如有那种斜线的表头，比较花哨的嵌套表格。这样的情况还是比较多见的，客户不会关系你实现起来是否困难。不过想要使用这种方式也有不足的地方。首先是acrobat把word转化成pdf的时候，格式总是保持不好，特别的是字体。然后是文件的体积这样生成的pdf会比直接用iText生成的pdf文件大很多，acrobat在pdf里加入了太多无用的信息。初次使用iText填充Adobe Designer生成的pdf表单时会有点小麻烦。在Designer中设计了一个name的text文本框的绑定名为name。照着iText中例子使用使用PdfStamper的setField方法去这样写form.setField("name", "XXXX");并不会成功。原因是Adobe Designer生成的表单名都是具有层次的，它可能是这个样子form1[0].#subform[0].name[0]。不过我们可以用一个方法把它们列出来，只要做一次就知道结构了，可以使用类似下面的代码：<br />PdfReader reader = new PdfReader("form.pdf"); <br />PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("registered_flat.pdf")); <br />AcroFields form = stamp.getAcroFields(); <br />for (Iterator it = form.getFields().keySet().iterator(); it <br />.hasNext();) { <br />System.out.println(it.next()); <br />} <br />如果直接用iText编程生成的表单就不会有这样的问题，设定的什么名字就是什么名字。<br /><br />3 表单元素<br /><br />pdf并不像html那样具有良好清晰的结构，而是一个有层次的文档类型。在它的maillist里，作者说明了iText虽然可以操作现存的pdf文件但是没办法去还原它的结构的。没办法像html一样，能从一个pdf文件获得一个清晰的“源文件”的。关于层次，可以从iText上得到详细的讲述，获取去看看pdf规范。表单和普通文本是不在一个层上的。没办法适用对待文本表各一样把它们简单的add进Document对象。获取一个cb直接去用绝对定位的方法可以加入表单元素，不过很多的时候因为排版并不能那么简单的去做。就是在html中布局一样可以使用表格定位。想把一个表单元素加入cell，要借助cell的setCellEvent方法。以一个checkbox为例。新建一个类CheckBoxForm，实现PdfPCellEvent接口。需要实现一个cellLayout的方法。<br />  public void cellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases)<br />position可以好好利用，它包含当前cell的位置信息，你可以用它来确定自己checkbox的位置。<br />position.top()-position.bottom()就能得到高position.right()-position.left()可以得到长，如果需要这两个值得花可以如此计算。下面的代码就是定义一个宽度为a的checkbox的rectangle 。它在cell中水平居中，垂直也居中。<br />    float bo = (position.top()-position.bottom()-a)/2;<br />    float ao = (position.right()-position.left()-a)/2;     <br />    Rectangle rectangle = new Rectangle(position.left() + ao, position<br />          .bottom() + bo, position.left() +ao+ a, position.bottom()+ bo + a);<br />然后把它加入Document<br />    RadioCheckField tf = new RadioCheckField(writer, rectangle, fieldname,<br />          "f");<br />    tf.setCheckType(RadioCheckField.TYPE_SQUARE);<br />    tf.setBorderWidth(1);<br />    tf.setBorderColor(Color.black);<br />    tf.setBackgroundColor(Color.white);       <br />    try {<br />        PdfFormField field = tf.getCheckField();         <br />        writer.addAnnotation(field);<br />    } catch (IOException e) {<br />        e.printStackTrace();<br />    } catch (DocumentException e) {<br />        e.printStackTrace();<br />    }<br />其它的元素与此类似。<br /><br />4 PdfPTable和Table<br /><br />说不上哪种更好用，有时候不能不使用PdfPTable。可惜它只有setColspan方法，没有setRowspan。嵌套的时候也有区别，PdfPTable是用addcell（）加入嵌套表的，table则有一个更明了的方法insertTable（）。PdfPTable想进行设置border之类的操作要先获得一个默认cell，<br />pdfPTableName.getDefaultCell().setBorder(Rectangle.NO_BORDER);//设置无框的表<br />另外在PdfPTable中，一些修饰属性会因为设置的时机不正确而没有效果。如，适用cell的构造函数加入了文本，在cell的setVerticalAlignment（）fangfa去设定垂直对齐方式就不会有效。还有一个有意思的不同是table默认外边框是加粗的，而PdfPTable则一样粗细。<br /><br />5 字体<br /><br />iText的例子有很多足够用，给出一些pdf的字体名称和编码，如果想使用内嵌字体的话。<br />语言 PDF 字体名 <br />简体中文 STSong-Light <br />繁体中文 MHei-Medium <br />MSung-Light <br />日语 HeiseiKakuGo-W5 <br />HeiseiMin-W3 <br />韩语 HYGoThic-Medium <br />HYSMyeongJo-Medium <br /><br />字符集 编码 <br />简体中文 UniGB-UCS2-H <br />UniGB-UCS2-V <br />繁体中文 UniCNS-UCS2-H <br />UniCNS-UCS2-V <br />日语 UniJIS-UCS2-H <br />UniJIS-UCS2-V <br />UniJIS-UCS2-HW-H <br />UniJIS-UCS2-HW-V <br />韩语 UniKS-UCS2-H <br />UniKS-UCS2-H <br />必须要有Asian的包才可以用，也可以使用TrueType字体。<br /><br /><img src ="http://www.blogjava.net/pdw2009/aggbug/101162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2007-02-28 16:02 <a href="http://www.blogjava.net/pdw2009/archive/2007/02/28/101162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用poi导成excel的一个类型判断函数</title><link>http://www.blogjava.net/pdw2009/archive/2006/12/21/89303.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Thu, 21 Dec 2006 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2006/12/21/89303.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/89303.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2006/12/21/89303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/89303.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/89303.html</trackback:ping><description><![CDATA[
		<p>/**<br />  * 获取cell中的数据<br />  * @param cell<br />  * @return<br />  */<br /> private String readCell(HSSFCell cell) {<br />  if (null == cell) {<br />   return "";<br />  }<br />  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);<br />  switch (cell.getCellType()) {<br />   case HSSFCell.CELL_TYPE_STRING: {<br />    return Strings.trim(cell.getStringCellValue());<br />   }<br />   case HSSFCell.CELL_TYPE_NUMERIC: {<br />    if(HSSFDateUtil.isCellDateFormatted(cell)){<br />     <br />     return sdf.format(cell.getDateCellValue());<br />    }else{<br />     return Strings.trim(new BigDecimal(cell.getNumericCellValue())<br />       .toString());<br />    }</p>
		<p>   }<br />   case HSSFCell.CELL_TYPE_BOOLEAN: {<br />    return Strings.trim(String.valueOf(cell.getBooleanCellValue()));<br />   }<br />   case HSSFCell.CELL_TYPE_FORMULA: {<br />    return Strings.trim(String.valueOf(cell.getCellFormula()));<br />   }<br />   <br />   default: {<br />    return Strings.trim(cell.getStringCellValue());<br />   }<br />  }<br /> }</p>
<img src ="http://www.blogjava.net/pdw2009/aggbug/89303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2006-12-21 16:10 <a href="http://www.blogjava.net/pdw2009/archive/2006/12/21/89303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>List 排序</title><link>http://www.blogjava.net/pdw2009/archive/2006/12/18/88636.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Mon, 18 Dec 2006 12:58:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2006/12/18/88636.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/88636.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2006/12/18/88636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/88636.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/88636.html</trackback:ping><description><![CDATA[
		<p>class Mycomparator implements Comparator{</p>
		<p>   public int compare(Object arg0, Object arg1) {<br />    Step obj0=(Step)arg0;<br />    Step obj1=(Step)arg1;<br />    if(obj0.getId()&lt;obj1.getId()){<br />     return 0;<br />    }else{<br />     return 1;<br />    }<br />   }<br />   <br />  }<br />  Comparator comp = new Mycomparator();<br />  Collections.sort(historyList,comp);</p>
<img src ="http://www.blogjava.net/pdw2009/aggbug/88636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2006-12-18 20:58 <a href="http://www.blogjava.net/pdw2009/archive/2006/12/18/88636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDOM的一个例子</title><link>http://www.blogjava.net/pdw2009/archive/2006/10/13/74905.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Fri, 13 Oct 2006 01:12:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2006/10/13/74905.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/74905.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2006/10/13/74905.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/74905.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/74905.html</trackback:ping><description><![CDATA[ import org.jdom.*; <br />import org.jdom.output.*; <br />import org.jdom.input.*; <br />import org.jdom.xpath.*; <br /><br />import java.io.FileOutputStream; <br />import java.lang.reflect.Field; <br />import java.lang.reflect.Method; <br />import java.util.*; <br /><br /><br />/** <br />* @author Peter (C)www.ldtec.com <br />* <br />* 处理xml配置文件 <br />* <br />*/ <br /><br />public class SearchUtil { <br />private static String tablelistfile="C:/tomcat/webapps/csms/WEB-INF/search/tablelist.xml"; <br /><br />/** <br />* &lt;p&gt;通过类反射来获得xml文件的信息&lt;/p&gt; <br />* @param vbean <br />* @param filepath <br />* @param xpath <br />* @return result <br />*/ <br />public static List search(Class vbean,String xpath){ <br />List result=new ArrayList(); <br />SAXBuilder builder=new SAXBuilder(); <br />Document doc=null; <br />Element root=null; <br />try{ <br />doc=builder.build(tablelistfile); <br />root=doc.getRootElement(); <br />List xlist=XPath.selectNodes(root,xpath); <br />Field[] field=Class.forName(vbean.getName()).getDeclaredFields(); <br />for(int i=0;i&lt;xlist.size();i++){ <br />Element xele=(Element)xlist.get(i); <br />Object myclass=new Object(); <br />myclass=Class.forName(vbean.getName()).newInstance(); <br />for(int k=0;k&lt;field.length;k++){ <br />String vname=field[k].getName(); <br />String method=vname.substring(0,1).toUpperCase()+vname.substring(1,vname.length()); <br />String vmethod="set"+method; <br />Class[] clazz = new Class[1] ; <br />clazz[0] = String.class ; <br />Method met = Class.forName(vbean.getName()).getMethod(vmethod,clazz) ; <br />Object[] obj = new Object[1] ; <br />obj[0] = xele.getAttributeValue(field[k].getName()); <br />Object ret = met.invoke(myclass,obj) ; <br />} <br />result.add(myclass); <br />} <br />}catch(Exception e){ <br />e.printStackTrace(); <br />} <br />return result; <br />} <br /><br />/** <br />* &lt;p&gt;xml文件路径从界面传进来..&lt;/p&gt; <br />* @param vbean <br />* @param filepath <br />* @param xpath <br />* @return <br />*/ <br />public static List search(Class vbean,String filepath ,String xpath){ <br />List result=new ArrayList(); <br />SAXBuilder builder=new SAXBuilder(); <br />Document doc=null; <br />Element root=null; <br />try{ <br />doc=builder.build(filepath); <br />root=doc.getRootElement(); <br />List xlist=XPath.selectNodes(root,xpath); <br />Field[] field=Class.forName(vbean.getName()).getDeclaredFields(); <br />for(int i=0;i&lt;xlist.size();i++){ <br />Element xele=(Element)xlist.get(i); <br />Object myclass=new Object(); <br />myclass=Class.forName(vbean.getName()).newInstance(); <br />for(int k=0;k&lt;field.length;k++){ <br />String vname=field[k].getName(); <br />String method=vname.substring(0,1).toUpperCase()+vname.substring(1,vname.length()); <br />String vmethod="set"+method; <br />Class[] clazz = new Class[1] ; <br />clazz[0] = String.class ; <br />Method met = Class.forName(vbean.getName()).getMethod(vmethod,clazz) ; <br />Object[] obj = new Object[1] ; <br />obj[0] = xele.getAttributeValue(field[k].getName()); <br />Object ret = met.invoke(myclass,obj) ; <br />} <br />result.add(myclass); <br />} <br />}catch(Exception e){ <br />e.printStackTrace(); <br />} <br />return result; <br />} <br /><br />/** <br />* &lt;p&gt;xml文件路径由页面传进来&lt;/p&gt; <br />* @param vbean <br />* @param filepath <br />* @param xpath <br />* @param map <br />* @return <br />*/ <br />public static boolean modify(Class vbean,String filepath,String xpath,Map map){ <br />boolean result=false; <br />SAXBuilder builder=new SAXBuilder(); <br />Document doc=null; <br />Element root=null; <br />try{ <br />doc=builder.build(filepath); <br />root=doc.getRootElement(); <br />List xlist=XPath.selectNodes(root,xpath); <br />Element xele=(Element)xlist.get(0); <br />Field[] field=Class.forName(vbean.getName()).getDeclaredFields(); <br />for(int k=0;k&lt;field.length;k++){ <br />xele.setAttribute(field[k].getName(),(String) map.get(field[k].getName())); <br />} <br /><br />Format format = Format.getCompactFormat(); <br />format.setEncoding("gb2312"); <br />format.setIndent(" "); <br />XMLOutputter XMLOut = new XMLOutputter(format); <br />XMLOut.output(doc,new FileOutputStream(filepath)); <br />result=true; <br />}catch(Exception e){ <br />e.printStackTrace(); <br />} <br />return result; <br />} <br /><br /><br />/** <br />* &lt;p&gt;修改某个节点&lt;/p&gt; <br />* @param vbean <br />* @param xpath <br />* @return <br />*/ <br />public static boolean modify(Class vbean,String xpath,Map map){ <br />boolean result=false; <br />SAXBuilder builder=new SAXBuilder(); <br />Document doc=null; <br />Element root=null; <br />try{ <br />doc=builder.build(tablelistfile); <br />root=doc.getRootElement(); <br />List xlist=XPath.selectNodes(root,xpath); <br />Element xele=(Element)xlist.get(0); <br />Field[] field=Class.forName(vbean.getName()).getDeclaredFields(); <br />for(int k=0;k&lt;field.length;k++){ <br />xele.setAttribute(field[k].getName(),(String) map.get(field[k].getName())); <br />} <br /><br />Format format = Format.getCompactFormat(); <br />format.setEncoding("gb2312"); <br />format.setIndent(" "); <br />XMLOutputter XMLOut = new XMLOutputter(format); <br />XMLOut.output(doc,new FileOutputStream(tablelistfile)); <br />result=true; <br />}catch(Exception e){ <br />e.printStackTrace(); <br />} <br />return result; <br />} <br /><br /><br />/** <br />* &lt;p&gt;文件路径由页面传输进来!&lt;/p&gt; <br />* @param vbean <br />* @param filepath <br />* @param xpath <br />* @param map <br />* @return <br />*/ <br />public static boolean add(Class vbean,String filepath,String xpath,Map map,String strele){ <br />boolean result=false; <br />SAXBuilder builder=new SAXBuilder(); <br />Document doc=null; <br />Element root=null; <br />try{ <br /><br />doc=builder.build(filepath); <br />root=doc.getRootElement(); <br />Element tablelistEle=(Element)XPath.selectSingleNode(root,xpath); <br />List xlist=tablelistEle.getChildren(); <br />Element xele=new Element(strele); <br />Field[] field=Class.forName(vbean.getName()).getDeclaredFields(); <br />for(int k=0;k&lt;field.length;k++){ <br />xele.setAttribute(field[k].getName(),(String) map.get(field[k].getName())); <br />} <br />xlist.add(xele); <br /><br />Format format = Format.getCompactFormat(); <br />format.setEncoding("gb2312"); <br />format.setIndent(" "); <br />XMLOutputter XMLOut = new XMLOutputter(format); <br />XMLOut.output(doc,new FileOutputStream(filepath)); <br />result=true; <br />}catch(Exception e){ <br />e.printStackTrace(); <br />} <br />return result; <br />} <br />/** <br />* &lt;p&gt;在当前xpath路径处,添加一个节点&lt;/p&gt; <br />* @param vbean <br />* @param xpath <br />* @param map <br />* @return <br />*/ <br />public static boolean add(Class vbean,String xpath,Map map,String strele){ <br />boolean result=false; <br />SAXBuilder builder=new SAXBuilder(); <br />Document doc=null; <br />Element root=null; <br />try{ <br /><br />doc=builder.build(tablelistfile); <br />root=doc.getRootElement(); <br />Element tablelistEle=(Element)XPath.selectSingleNode(root,xpath); <br />List xlist=tablelistEle.getChildren(); <br />Element xele=new Element(strele); <br />Field[] field=Class.forName(vbean.getName()).getDeclaredFields(); <br />for(int k=0;k&lt;field.length;k++){ <br />xele.setAttribute(field[k].getName(),(String) map.get(field[k].getName())); <br />} <br />xlist.add(xele); <br /><br />Format format = Format.getCompactFormat(); <br />format.setEncoding("gb2312"); <br />format.setIndent(" "); <br />XMLOutputter XMLOut = new XMLOutputter(format); <br />XMLOut.output(doc,new FileOutputStream(tablelistfile)); <br />result=true; <br />}catch(Exception e){ <br />e.printStackTrace(); <br />} <br />return result; <br />} <br /><br />/** <br />* &lt;p&gt;文件路径由页面传进来&lt;/p&gt; <br />* @param vbean <br />* @param filepath <br />* @param xpath <br />* @param map <br />* @return <br />*/ <br />public static boolean remove(Class vbean,String filepath,String xpath,Map map){ <br />boolean result=false; <br />SAXBuilder builder=new SAXBuilder(); <br />Document doc=null; <br />Element root=null; <br />try{ <br />doc=builder.build(filepath); <br />root=doc.getRootElement(); <br />List templist=XPath.selectNodes(root,xpath); <br />String key=(String)map.get("key"); <br />String value="/(String)map.get(""value"); <br />int row=0; <br />boolean flag=false; <br />for(int i=0;i&lt;templist.size();i++){ <br />Element tempele=(Element)templist.get(i); <br />if(tempele.getAttributeValue(key).equals(value)){ <br />row=i; <br />flag=true; <br />} <br />} <br />if(flag==false){ <br />return false; <br />} <br />int pos=0; <br />pos=xpath.lastIndexOf("/"); <br />String vpath=xpath.substring(0,pos); <br />Element xele=(Element)XPath.selectSingleNode(root,vpath); <br />List xlist=xele.getChildren(); <br />if(flag){ <br />xlist.remove(row); <br />result=true; <br />} <br /><br />Format format = Format.getCompactFormat(); <br />format.setEncoding("gb2312"); <br />format.setIndent(" "); <br />XMLOutputter XMLOut = new XMLOutputter(format); <br />XMLOut.output(doc,new FileOutputStream(filepath)); <br />result=true; <br />}catch(Exception e){ <br />e.printStackTrace(); <br />} <br />return result; <br />} <br />/** <br />* &lt;p&gt;删除某个节点,map参数必须有一个键名为key和value&lt;/p&gt; <br />* @param vbean <br />* @param xpath <br />* @param map <br />* @return result <br />*/ <br />public static boolean remove(Class vbean,String xpath,Map map){ <br />boolean result=false; <br />SAXBuilder builder=new SAXBuilder(); <br />Document doc=null; <br />Element root=null; <br />try{ <br />doc=builder.build(tablelistfile); <br />root=doc.getRootElement(); <br />List templist=XPath.selectNodes(root,xpath); <br />String key=(String)map.get("key"); <br />String value="/(String)map.get(""value"); <br />int row=0; <br />boolean flag=false; <br />for(int i=0;i&lt;templist.size();i++){ <br />Element tempele=(Element)templist.get(i); <br />if(tempele.getAttributeValue(key).equals(value)){ <br />row=i; <br />flag=true; <br />} <br />} <br />if(flag==false){ <br />return false; <br />} <br />int pos=0; <br />pos=xpath.lastIndexOf("/"); <br />String vpath=xpath.substring(0,pos); <br />Element xele=(Element)XPath.selectSingleNode(root,vpath); <br />List xlist=xele.getChildren(); <br />if(flag){ <br />xlist.remove(row); <br />result=true; <br />} <br /><br />Format format = Format.getCompactFormat(); <br />format.setEncoding("gb2312"); <br />format.setIndent(" "); <br />XMLOutputter XMLOut = new XMLOutputter(format); <br />XMLOut.output(doc,new FileOutputStream(tablelistfile)); <br />result=true; <br />}catch(Exception e){ <br />e.printStackTrace(); <br />} <br />return result; <br />} <br />public static void main(String args[]){ <br /><br />Map kk=new HashMap(); <br />kk.put("f1","xxxx"); <br />kk.put("f2","MMMM"); <br />kk.put("f3","JJJJ"); <br />String v="kkk()"; <br /><br />String temp=(v.substring(0,1)).toUpperCase(); <br />String vv=temp+v.substring(1,v.length()); <br />System.out.println("temp-&gt;&gt;"+temp); <br />System.out.println("vv-&gt;"+vv); <br />String path="c:/kk/lo.xml"; <br />int start=path.lastIndexOf("/"); <br />int end=path.lastIndexOf("."); <br />String xx=path.substring(start+1,end); <br />System.out.println("----xx-&gt;"+xx); <br />} <br /><br />} <img src ="http://www.blogjava.net/pdw2009/aggbug/74905.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2006-10-13 09:12 <a href="http://www.blogjava.net/pdw2009/archive/2006/10/13/74905.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDOM入门</title><link>http://www.blogjava.net/pdw2009/archive/2006/10/13/74904.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Fri, 13 Oct 2006 01:09:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2006/10/13/74904.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/74904.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2006/10/13/74904.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/74904.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/74904.html</trackback:ping><description><![CDATA[<table cellspacing="5" cellpadding="5" width="680" align="center" border="0">
    <tbody>
        <tr>
            <td style="font-size: 14px; line-height: 180%" align="left" colspan="2">1) JDOM的组成.任何一个框架都有自己的组成结构,JDOM虽说不上是一个框架,因为她没有提供给我们任何的扩展框架.如果说其是一个工具,那么她是一个结构非常简单的XML操作工具,其包插如下包: <br />
            <br />
            org.JDOM <br />
            org.JDOM.input <br />
            org.JDOM.output <br />
            org.JDOM.adapters <br />
            org.JDOM.transform <br />
            我们可以从字面上去理解每个包的作用. JDOM包含以下类型 <br />
            Attribute <br />
            CDATA <br />
            Coment <br />
            DocType <br />
            Document <br />
            Element <br />
            EntityRef <br />
            Namespace <br />
            ProscessingInstruction <br />
            Text <br />
            在开发jdom应用程序中我们所用的所有类型....就这几个类型很简单就可理解.下面介始一个每个开发包的作用: <br />
            *　org.JDOM.transform <br />
            在涉及xslt格式转换时应使用下面的2个类 <br />
            JDOMSource <br />
            JDOMResult <br />
            <br />
            ＊　org.JDOM.input <br />
            输入类，一般用于文档的创建工作 <br />
            SAXBuilder <br />
            DOMBuilder <br />
            ResultSetBuilder <br />
            注jdom的输入源非常广泛,可以是字符串,可以是其它的XML工具生成的XML文件。 <br />
            * org.JDOM.output <br />
            输出类，用于文档转换输出 <br />
            XMLOutputter <br />
            SAXOutputter <br />
            DomOutputter <br />
            JTreeOutputter <br />
            从以上输出类可以看出jdom可以输出常用类型号XML文件 <br />
            下面是我写的一个读xml，一个创建XML的两个例程 <br />
            ================== <br />
            package jdom; <br />
            <br />
            /** <br />
            * @author&nbsp; <br />
            * TODO 学习用例 ,pdw2009@tom.com <br />
            * <br />
            */ <br />
            import org.jdom.*; <br />
            import org.jdom.input.*; <br />
            import java.io.FileInputStream; <br />
            import java.io.FileOutputStream; <br />
            import java.io.*; <br />
            import java.util.*; <br />
            public class readabc { <br />
            <br />
            public static void main(String[] args) throws Exception{ <br />
            SAXBuilder sb=new SAXBuilder();//建立构造器 <br />
            Document doc=sb.build(new FileInputStream("E:\\eclipse\\myworkspace\\base\\src\\jdom\\abc.xml")); <br />
            Element root=doc.getRootElement(); //获得根结点 <br />
            <br />
            List list=root.getChildren(); //将所有根结点下的子结点放入list <br />
            for(int i=0;i&lt;list.size();i++){ <br />
            System.out.println("----------------------"); <br />
            Element item=(Element)list.get(i); //获得实体结体 <br />
            <br />
            //用于获得属性 <br />
            String name=item.getAttributeValue("id"); <br />
            System.out.println("Name----&gt;"+name); <br />
            //获得了节点 <br />
            <br />
            String temptitle=item.getChildText("title"); <br />
            System.out.println("测试"+temptitle); //使用item获得子节点属性 <br />
            <br />
            Element sub=item.getChild("title"); <br />
            String title=sub.getText(); <br />
            System.out.println("title----&gt;"+title); <br />
            <br />
            Element sub2=item.getChild("email"); <br />
            String email=sub2.getText(); <br />
            System.out.println("email--&gt;"+email); <br />
            <br />
            Element sub3=item.getChild("content"); <br />
            String content=sub3.getValue(); <br />
            System.out.println("content--&gt;"+content); <br />
            <br />
            } <br />
            <br />
            } <br />
            } <br />
            -----------以上代码要读的xml文件内容如下---------------------------- <br />
            &lt;?xml version="1.0" encoding="gb2312"?&gt; <br />
            &lt;messages&gt; <br />
            &lt;message id="jhgjg"&gt;i &lt;title&gt;jhgjg&lt;/title&gt; <br />
            &lt;content&gt;jhgjg&lt;/content&gt; <br />
            &lt;email&gt;jhjh&lt;/email&gt; <br />
            &lt;/message&gt; <br />
            &lt;message id="fdsa"&gt; <br />
            &lt;title&gt;fdsa&lt;/title&gt; <br />
            &lt;content&gt;fasdf&lt;/content&gt; <br />
            &lt;email&gt;fsadfa&lt;/email&gt; <br />
            &lt;/message&gt; <br />
            &lt;/messages&gt; <br />
            -------------------------------------------------------------------------------------------- <br />
            创建一个xml文件 <br />
            ---------------- <br />
            /* <br />
            * Created on 2000-1-1 <br />
            * <br />
            * TODO To change the template for this generated file go to <br />
            * Window - Preferences - Java - Code Style - Code Templates <br />
            */ <br />
            package jdom; <br />
            import java.io.FileWriter; <br />
            <br />
            import org.jdom.*; <br />
            import org.jdom.adapters.*; <br />
            import org.jdom.adapters.*; <br />
            import org.jdom.input.*; <br />
            import org.jdom.output.Format; <br />
            import org.jdom.output.XMLOutputter; <br />
            import java.io.*; <br />
            /** <br />
            * @author * <br />
            * TODO 学习用例 ,pdw2009@tom.com <br />
            * <br />
            */ <br />
            public class createonexml { <br />
            <br />
            public static void main(String[] args)throws Exception { <br />
            Element carElement=new Element("car"); <br />
            Document mydoc=new Document(carElement); <br />
            //carElement.addAttribute(new Attribute("vin", "123fhg5869705iop90")); <br />
            <br />
            //添加内容 <br />
            carElement.addContent(new Element("make").addContent("DF")); <br />
            carElement.addContent(new Element("year").addContent("1997")); <br />
            carElement.addContent(new Element("color").addContent("green")); <br />
            carElement.addContent(new Element("listenr").addContent("SSDDDBBA")); <br />
            //添加注解 <br />
            carElement.addContent(new Comment("描述一辆车")); <br />
            <br />
            //输出到文件 <br />
            XMLOutputter outer=new XMLOutputter(); <br />
            FileWriter fw=new FileWriter("E:\\eclipse\\myworkspace\\base\\src\\jdom\\car.xml"); <br />
            Format fm=Format.getPrettyFormat(); //设定XML文件的输出格式 <br />
            fm.setEncoding("GBK"); <br />
            <br />
            outer.setFormat(fm); <br />
            outer.output(mydoc,fw); <br />
            outer.output(mydoc,System.out); <br />
            fw.close(); <br />
            } <br />
            } <br />
            ------------------以上代码生成的xml文件内容如下--------------- <br />
            &lt;?xml version="1.0" encoding="GBK"?&gt; <br />
            &lt;car&gt; <br />
            &lt;make&gt;DF&lt;/make&gt; <br />
            &lt;year&gt;1997&lt;/year&gt; <br />
            &lt;color&gt;green&lt;/color&gt; <br />
            &lt;listenr&gt;SSDDDBBA&lt;/listenr&gt; <br />
            &lt;!--描述一辆车--&gt; <br />
            &lt;/car&gt; <br />
            --------------------------------------------------------------------------------------- <br />
            在jdom 1。0版本里输出xml文档时，我们必须定义该文档的格式，如xml文件的编辑格式，输出的xml文档是否换行，是否删除我作的空格，等。所以在输出xml文档时需定义一个Format对象类,并给相关属性赋值，然后设定XMLOutputter所用到的格式类,outter.setFormat()。 <br />
            请关注我有关JDOM的文章希望对你有所帮助。。。。。 <br />
            <br />
            详细说明请参考jdom API文档 </td>
        </tr>
        <tr bgcolor="#f4f4f4">
            <td style="font-size: 14px" colspan="2"><strong>1</strong> </td>
        </tr>
        <tr>
            <td style="font-size: 14px">lonely wolf</td>
            <td align="right">&nbsp; </td>
        </tr>
        <tr>
            <td style="font-size: 14px; line-height: 180%" align="left" colspan="2">1 将一个xml文件输出到一个字符串对象里 <br />
            XMLOutputter outputter = new XMLOutputter(); <br />
            Element element = new Element("Greeting"); <br />
            String hello = outputter.outputString(element); <br />
            <br />
            2 一个list转换成一个xml文件。。虽然其list中的字段是固定了，我们也可以修改类集转换代码，以实现动态字段的转换 <br />
            <br />
            package jdom; <br />
            import java.io.FileWriter; <br />
            import java.util.*; <br />
            import org.jdom.*; <br />
            import org.jdom.input.*; <br />
            import org.jdom.output.*; <br />
            <br />
            /** <br />
            * @author&nbsp; pdw2009@tom.com <br />
            * TODO 将一个List对象,转换一个XML文件 <br />
            */ <br />
            class Person{ <br />
            private String ID; //学号 <br />
            private String name; //姓名 <br />
            private String addr; //地址 <br />
            private String tel; //联系电话 <br />
            private String email; //email地址 <br />
            /** <br />
            * @return Returns the addr. <br />
            */ <br />
            public String getAddr() { <br />
            return addr; <br />
            } <br />
            /** <br />
            * @param addr The addr to set. <br />
            */ <br />
            public void setAddr(String addr) { <br />
            this.addr = addr; <br />
            } <br />
            /** <br />
            * @return Returns the iD. <br />
            */ <br />
            public String getID() { <br />
            return ID; <br />
            } <br />
            /** <br />
            * @param id The iD to set. <br />
            */ <br />
            public void setID(String id) { <br />
            ID = id; <br />
            } <br />
            /** <br />
            * @return Returns the name. <br />
            */ <br />
            public String getName() { <br />
            return name; <br />
            } <br />
            /** <br />
            * @param name The name to set. <br />
            */ <br />
            public void setName(String name) { <br />
            this.name = name; <br />
            } <br />
            /** <br />
            * @return Returns the tel. <br />
            */ <br />
            public String getTel() { <br />
            return tel; <br />
            } <br />
            /** <br />
            * @param tel The tel to set. <br />
            */ <br />
            public void setTel(String tel) { <br />
            this.tel = tel; <br />
            } <br />
            /** <br />
            * @return Returns the email. <br />
            */ <br />
            public String getEmail() { <br />
            return email; <br />
            } <br />
            /** <br />
            * @param email The email to set. <br />
            */ <br />
            public void setEmail(String email) { <br />
            this.email = email; <br />
            } <br />
            } <br />
            <br />
            public class listtoxml { <br />
            public List creatlist(){ <br />
            List list=new ArrayList(); <br />
            Person person=new Person(); <br />
            person.setAddr("广西合浦"); <br />
            person.setID("1048"); <br />
            person.setName("hfggf"); <br />
            person.setTel("138777778888"); <br />
            person.setEmail("pdw2009@tom.com"); <br />
            list.add(person); <br />
            <br />
            person.setAddr("广西南宁"); <br />
            person.setID("1036"); <br />
            person.setName("蠢卢"); <br />
            person.setTel("1387778888"); <br />
            person.setEmail("XXXXX@tom.com"); <br />
            list.add(person); <br />
            return list; <br />
            } <br />
            public static void main(String[] args) throws Exception { <br />
            listtoxml lx=new listtoxml(); <br />
            List list=lx.creatlist(); //生成Person类的对象list <br />
            Element root=new Element("Student");//根条目; <br />
            Iterator it=list.iterator(); //获取iterator接口 <br />
            while(it.hasNext()){ <br />
            Person p=(Person)it.next(); <br />
            Element person=new Element("Person"); <br />
            person.setAttribute("ID",p.getID()); <br />
            root.addContent(person); //在根元素下,添加一个person子元素 <br />
            <br />
            Element ele=new Element("Name"); <br />
            ele.setText(p.getName()); <br />
            person.addContent(ele); //在person元素下添加一个name的子元素 <br />
            <br />
            Element addr=new Element("Address"); <br />
            addr.setText(p.getAddr()); <br />
            person.addContent(addr); <br />
            <br />
            Element tel=new Element("tel"); <br />
            tel.setText(p.getTel()); <br />
            person.addContent(tel); <br />
            <br />
            Element email=new Element("email"); <br />
            email.setText(p.getEmail()); <br />
            person.addContent(email); <br />
            <br />
            } <br />
            Document doc=new Document(root); <br />
            XMLOutputter outer=new XMLOutputter(); <br />
            Format fm=Format.getPrettyFormat(); <br />
            fm.setEncoding("GBK"); <br />
            outer.setFormat(fm); <br />
            FileWriter fw=new FileWriter("E:\\eclipse\\myworkspace\\base\\src\\jdom\\listtoxml.xml"); <br />
            outer.output(doc,fw); //只需要把自己定义的FileWriter替换掉System.out就可以确定xml文件的输出了 <br />
            } <br />
            } <br />
            <br />
            仅供参与，只需要添加你的jdbc连接便于工作可实现，从数据库里取出记录并生</td>
        </tr>
    </tbody>
</table>
<br />
<br />
<br />
<p><strong><span>定位节点</span></strong><span> <span lang="EN-US"><br />
XML</span><span>是树状结构，类似档案系统内数据夹的结构，</span><span lang="EN-US">XPath</span><span>也类似档案系统的路径命名方式。不过</span><span lang="EN-US">XPath </span><span>是一种模式</span><span lang="EN-US">(Pattern)</span><span>，可以选出</span><span lang="EN-US"> XML</span><span>档案中，路径符合某个模式的所有节点出来。例如要选</span><span lang="EN-US">catalog</span><span>底下的</span><span lang="EN-US">cd</span><span>中所有</span><span lang="EN-US">price</span><span>元素可以用：</span><span> <br />
</span><span lang="EN-US">/catalog/cd/price<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<pre></pre>
<p><span>如果</span><span lang="EN-US">XPath</span><span>的开头是一个斜线（</span><span lang="EN-US">/</span><span>）代表这是绝对路径。如果开头是两个斜线（</span><span lang="EN-US">//</span><span>）表示文件中所有符合模式的元素都会被选出来，即使是处于树中不同的层级也会被选出来。以下的语法会选出文件中所有叫做</span><span lang="EN-US">cd</span><span>的元素（在树中的任何层级都会被选出来）：</span><span> </span></p>
<pre></pre>
<pre><span lang="EN-US">//cd</span></pre>
<pre></pre>
<p><strong><span>选择未知的元素</span></strong><span> <span lang="EN-US"><br />
</span><span>使用星号（</span><span lang="EN-US">Wildcards,</span><span>＊）可以选择未知的元素。下面这个语法会选出</span><span lang="EN-US">/catalog/cd </span><span>的所有子元素：</span><span> </span></p>
<pre></pre>
<pre><span lang="EN-US">/catalog/cd/*</span></pre>
<pre></pre>
<p><span>以下的语法会选出所有</span><span lang="EN-US">catalog</span><span>的子元素中，包含有</span><span lang="EN-US">price</span><span>作为子元素的元素。</span></p>
<pre></pre>
<pre><span lang="EN-US">/catalog/*/price</span></pre>
<pre></pre>
<p><span>以下的语法会选出有两层父节点，叫做</span><span lang="EN-US">price</span><span>的所有元素。</span></p>
<pre></pre>
<pre><span lang="EN-US">/*/*/price</span></pre>
<pre></pre>
<p><span>以下的语法会选择出文件中的所有元素。</span><span> </span></p>
<pre></pre>
<pre><span lang="EN-US">//*<br />
</span><span>要注意的是，想要存取不分层级的元素，</span><span lang="EN-US">XPath</span><span>语法必须以两个斜线开头</span><span lang="EN-US">(//)</span><span>，想要存取未知元素才用星号</span><span lang="EN-US">(*)</span><span>，星号只能代表未知名称的元素，不能代表未知层级的元素。</span></pre>
<p><strong><span>选择分支</span></strong><span> <span lang="EN-US"><br />
</span><span>使用中括号可以选择分支。以下的语法从</span><span lang="EN-US">catalog</span><span>的子元素中取出第一个叫做</span><span lang="EN-US">cd</span><span>的元素。</span><span lang="EN-US">XPath</span><span>的定义中没有第</span><span lang="EN-US">0</span><span>元素这种东西。</span><span> </span></p>
<pre></pre>
<pre><span lang="EN-US">/catalog/cd[1]</span></pre>
<pre></pre>
<p><span>以下语法选择</span><span lang="EN-US">catalog</span><span>中的最后一个</span><span lang="EN-US">cd</span><span>元素：（</span><span lang="EN-US">XPathj</span><span>并没有定义</span><span lang="EN-US"> first() </span><span>这种函式喔，用上例的</span><span lang="EN-US"> [1]</span><span>就可以取出第一个元素。</span><span> </span></p>
<pre></pre>
<pre><span lang="EN-US">/catalog/cd[last()]</span></pre>
<pre></pre>
<p><span>以下语法选出含有</span><span lang="EN-US">price</span><span>子元素的所有</span><span lang="EN-US">/catalog/cd</span><span>元素。</span><span> </span></p>
<pre></pre>
<pre><span lang="EN-US">/catalog/cd[price]</span></pre>
<pre></pre>
<p><span>以下语法选出</span><span lang="EN-US">price</span><span>元素的值等于</span><span lang="EN-US">10.90</span><span>的所有</span><span lang="EN-US">/catalog/cd</span><span>元素</span><span> </span></p>
<pre></pre>
<pre><span lang="EN-US">/catalog/cd[price=10.90]</span></pre>
<pre></pre>
<p><span>以下语法选出</span><span lang="EN-US">price</span><span>元素的值等于</span><span lang="EN-US">10.90</span><span>的所有</span><span lang="EN-US">/catalog/cd</span><span>元素</span><span> </span><span>的</span><span lang="EN-US">price</span><span>元素</span><span> </span></p>
<pre></pre>
<pre><span lang="EN-US">/catalog/cd[price=10.90]/price</span></pre>
<pre></pre>
<p><strong><span>选择一个以上的路径</span></strong><span> <span lang="EN-US"><br />
</span><span>使用</span><span lang="EN-US">Or</span><span>操作数</span><span lang="EN-US">(|)</span><span>就可以选择一个以上的路径。例如：</span><span> </span></p>
<pre></pre>
<pre><span lang="EN-US">/catalog/cd/title | catalog/cd/artist</span></pre>
<pre><span lang="EN-US">&nbsp;</span><span>选择所有</span><span lang="EN-US">title</span><span>以及</span><span lang="EN-US">artist</span><span>元素</span></pre>
<pre><span lang="EN-US">&nbsp;</span><span lang="EN-US">//title | //artist</span></pre>
<pre><span lang="EN-US">&nbsp;</span></pre>
<p><span>选择所有</span><span lang="EN-US">title</span><span>以及</span><span lang="EN-US">artist</span><span>以及</span><span lang="EN-US">price</span><span>元素</span></p>
<pre></pre>
<pre><span lang="EN-US">//title | //artist | //price</span></pre>
<pre><span lang="EN-US">&nbsp;</span><strong><span>选择属性</span></strong><span> <span lang="EN-US"><br />
</span><span>在</span><span lang="EN-US">XPath</span><span>中，除了选择元素以外，也可以选择属性。属性都是以</span><span lang="EN-US">@</span><span>开头。例如选择文件中所有叫做</span><span lang="EN-US">country</span><span>的属性：</span><span> </span></pre>
<pre><span lang="EN-US">&nbsp;</span><span lang="EN-US">//@country</span></pre>
<pre><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></pre>
<p><span>选择所有含有</span><span lang="EN-US">country</span><span>这个属性的</span><span lang="EN-US">cd</span><span>元素：</span></p>
<pre><span lang="EN-US">&nbsp;</span></pre>
<pre><span lang="EN-US">//cd[@country]</span></pre>
<pre><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></pre>
<p><span>以下语法选择出含有属性的所有</span><span lang="EN-US">cd</span><span>元素</span></p>
<pre><span lang="EN-US">&nbsp;</span></pre>
<pre><span lang="EN-US">//cd[@*]</span></pre>
<pre><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></pre>
<p><span>以下语法选择出</span><span lang="EN-US">country</span><span>属性值为</span><span lang="EN-US">UK</span><span>的</span><span lang="EN-US">cd</span><span>元素</span></p>
<pre><span lang="EN-US">&nbsp;</span></pre>
<pre><span lang="EN-US">//cd[@country='UK']</span></pre>
</span></span></span></span></span></span></span></span></span>
<img src ="http://www.blogjava.net/pdw2009/aggbug/74904.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2006-10-13 09:09 <a href="http://www.blogjava.net/pdw2009/archive/2006/10/13/74904.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java输入与输出</title><link>http://www.blogjava.net/pdw2009/archive/2006/10/07/73667.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Sat, 07 Oct 2006 12:52:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2006/10/07/73667.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/73667.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2006/10/07/73667.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/73667.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/73667.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JAVA				中定义了两种输入输出流：字符流、字节流。字节流由两个顶层的操象类，				InputStream				、				OutputStream				类构成，每个操象类，都有其具体子类。下表是一些常用的字节流类。																				 																																	...&nbsp;&nbsp;<a href='http://www.blogjava.net/pdw2009/archive/2006/10/07/73667.html'>阅读全文</a><img src ="http://www.blogjava.net/pdw2009/aggbug/73667.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2006-10-07 20:52 <a href="http://www.blogjava.net/pdw2009/archive/2006/10/07/73667.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于线程</title><link>http://www.blogjava.net/pdw2009/archive/2006/10/07/73666.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Sat, 07 Oct 2006 12:48:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2006/10/07/73666.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/73666.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2006/10/07/73666.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/73666.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/73666.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JAVA				多线程系统建立于				Thread				类，它的方法，它的共伴接口				Runnable				基础上，				Thread				类封装了多线程的执行。为创建一个新的线程，你的程序必须实现				Runnabel				接口或继承				Thread				类。								Thread				类定义了好几个方法...&nbsp;&nbsp;<a href='http://www.blogjava.net/pdw2009/archive/2006/10/07/73666.html'>阅读全文</a><img src ="http://www.blogjava.net/pdw2009/aggbug/73666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2006-10-07 20:48 <a href="http://www.blogjava.net/pdw2009/archive/2006/10/07/73666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>