﻿<?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-……天天向上-随笔分类-Java</title><link>http://www.blogjava.net/japper/category/51717.html</link><description>好的想法总是无穷无尽</description><language>zh-cn</language><lastBuildDate>Wed, 19 Sep 2012 20:46:16 GMT</lastBuildDate><pubDate>Wed, 19 Sep 2012 20:46:16 GMT</pubDate><ttl>60</ttl><item><title>calendar获取当前日期及时间的用例</title><link>http://www.blogjava.net/japper/archive/2012/09/19/388042.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Wed, 19 Sep 2012 01:51:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/09/19/388042.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/388042.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/09/19/388042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/388042.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/388042.html</trackback:ping><description><![CDATA[<ol><li><span class="keyword">import</span><span> Java.util.*; </span></li><li><span>　　<span class="keyword">public</span><span> </span><span class="keyword">class</span><span> ShowDate { </span></span></li><li><span>　　<span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) { </span></span></li><li><span>　　Calendar calendar = <span class="keyword">new</span><span> GregorianCalendar(); </span></span></li><li><span>　　Date trialTime = <span class="keyword">new</span><span> Date(); </span></span></li><li><span>　　calendar.setTime(trialTime); </span></li><li><span>　　<span class="comment">// print out a bunch of interesting things</span><span> </span></span></li><li><span>　　System.out.println(<span class="string">"ERA: "</span><span> + calendar.get(Calendar.ERA)); </span></span></li><li><span>　　System.out.println(<span class="string">"YEAR: "</span><span> + calendar.get(Calendar.YEAR)); </span></span></li><li><span>　　System.out.println(<span class="string">"MONTH: "</span><span> + calendar.get(Calendar.MONTH)); </span></span></li><li><span>　　System.out.println(<span class="string">"WEEK_OF_YEAR: "</span><span> + calendar.get(Calendar.WEEK_OF_YEAR)); </span></span></li><li><span>　　System.out.println(<span class="string">"WEEK_OF_MONTH: "</span><span> + calendar.get(Calendar.WEEK_OF_MONTH)); </span></span></li><li><span>　　System.out.println(<span class="string">"DATE: "</span><span> + calendar.get(Calendar.DATE)); </span></span></li><li><span>　　System.out.println(<span class="string">"DAY_OF_MONTH: "</span><span> + calendar.get(Calendar.DAY_OF_MONTH)); </span></span></li><li><span>　　System.out.println(<span class="string">"DAY_OF_YEAR: "</span><span> + calendar.get(Calendar.DAY_OF_YEAR)); </span></span></li><li><span>　　System.out.println(<span class="string">"DAY_OF_WEEK: "</span><span> + calendar.get(Calendar.DAY_OF_WEEK)); </span></span></li><li><span>　　System.out.println(<span class="string">"DAY_OF_WEEK_IN_MONTH: "</span><span> + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); </span></span></li><li><span>　　System.out.println(<span class="string">"AM_PM: "</span><span> + calendar.get(Calendar.AM_PM)); </span></span></li><li><span>　　System.out.println(<span class="string">"HOUR: "</span><span> + calendar.get(Calendar.HOUR)); </span></span></li><li><span>　　System.out.println(<span class="string">"HOUR_OF_DAY: "</span><span> + calendar.get(Calendar.HOUR_OF_DAY)); </span></span></li><li><span>　　System.out.println(<span class="string">"MINUTE: "</span><span> + calendar.get(Calendar.MINUTE)); </span></span></li><li><span>　　System.out.println(<span class="string">"SECOND: "</span><span> + calendar.get(Calendar.SECOND)); </span></span></li><li><span>　　System.out.println(<span class="string">"MILLISECOND: "</span><span> + calendar.get(Calendar.MILLISECOND)); </span></span></li><li><span>　　System.out.println(<span class="string">"ZONE_OFFSET: "</span><span> + (calendar.get(Calendar.ZONE_OFFSET)/(</span><span class="number">60</span><span>*</span><span class="number">60</span><span>*</span><span class="number">1000</span><span>))); </span></span></li><li><span>　　System.out.println(<span class="string">"DST_OFFSET: "</span><span> + (calendar.get(Calendar.DST_OFFSET)/(</span><span class="number">60</span><span>*</span><span class="number">60</span><span>*</span><span class="number">1000</span><span>))); </span></span></li><li><span>　　System.out.println(<span class="string">"Current Time, with hour reset to 3"</span><span>); </span></span></li><li><span>　　calendar.clear(Calendar.HOUR_OF_DAY); <span class="comment">// so doesn't override</span><span> </span></span></li><li><span>　　calendar.set(Calendar.HOUR, <span class="number">3</span><span>); </span></span></li><li><span>　　System.out.println(<span class="string">"ERA: "</span><span> + calendar.get(Calendar.ERA)); </span></span></li><li><span>　　System.out.println(<span class="string">"YEAR: "</span><span> + calendar.get(Calendar.YEAR)); </span></span></li><li><span>　　System.out.println(<span class="string">"MONTH: "</span><span> + calendar.get(Calendar.MONTH)); </span></span></li><li><span>　　System.out.println(<span class="string">"WEEK_OF_YEAR: "</span><span> + calendar.get(Calendar.WEEK_OF_YEAR)); </span></span></li><li><span>　　System.out.println(<span class="string">"WEEK_OF_MONTH: "</span><span> + calendar.get(Calendar.WEEK_OF_MONTH)); </span></span></li><li><span>　　System.out.println(<span class="string">"DATE: "</span><span> + calendar.get(Calendar.DATE)); </span></span></li><li><span>　　System.out.println(<span class="string">"DAY_OF_MONTH: "</span><span> + calendar.get(Calendar.DAY_OF_MONTH)); </span></span></li><li><span>　　System.out.println(<span class="string">"DAY_OF_YEAR: "</span><span> + calendar.get(Calendar.DAY_OF_YEAR)); </span></span></li><li><span>　　System.out.println(<span class="string">"DAY_OF_WEEK: "</span><span> + calendar.get(Calendar.DAY_OF_WEEK)); </span></span></li><li><span>　　System.out.println(<span class="string">"DAY_OF_WEEK_IN_MONTH: "</span><span> + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); </span></span></li></ol><img src ="http://www.blogjava.net/japper/aggbug/388042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-09-19 09:51 <a href="http://www.blogjava.net/japper/archive/2012/09/19/388042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>免安装版Tomcat 6.0.35碰到的问题 ：打开tomcat管理界面时，用户名和密码错误的设置方法</title><link>http://www.blogjava.net/japper/archive/2012/09/05/387096.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Wed, 05 Sep 2012 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/09/05/387096.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/387096.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/09/05/387096.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/387096.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/387096.html</trackback:ping><description><![CDATA[<p><img alt="" src="http://my.csdn.net/uploads/201204/04/1333521098_5458.jpg" />Tomcat 6.0.35 的功能有些不同于Tomcat 6.0.20。我下载的Tomcat 6.0.35是免安装的，而以前使用的Tomcat 6.0.20是需要安装的，而且Tomcat 6.0.20 的安装密码，即进入Tomcat Manager 这个地方的密码是在安装的时候指定的，但是呢，Tomcat 6.0.35 由于是免安装的，所以就没有地方去指定密码了，当我们访问Tomcat 6.0.35 的Tomcat Manager的时候 ，输入以前默认的用户名：admin 密码为空，会发现出现了403 错误，即access deny 。调试了好久，最后终于找出原因了。根据403页面的提示，需要在tomcat的配置文件中（即conf/tomcat-users.xml）加入</p><p><span style="white-space: pre;"></span>&lt;role rolename="manager-gui"/&gt;</p><p><span style="white-space: pre;"></span>&lt;user username="admin" password="" roles="manager-gui"/&gt;</p><p>有一点必须注意，其中的rolename 必须是&#8220;manager-gui&#8221; ，更改成admin 或者 admin-gui，都不好用，而下面的username&nbsp; password是可以任意的，但是后面的roles 必须和上面role 中的rolename相同。</p><img src ="http://www.blogjava.net/japper/aggbug/387096.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-09-05 14:22 <a href="http://www.blogjava.net/japper/archive/2012/09/05/387096.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过 jconsole查看tomcat运行情况的配置方法</title><link>http://www.blogjava.net/japper/archive/2012/09/05/387094.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Wed, 05 Sep 2012 06:16:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/09/05/387094.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/387094.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/09/05/387094.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/387094.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/387094.html</trackback:ping><description><![CDATA[
<p style="text-align: center; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "Times New Roman"; font-size: 16pt; font-weight: bold; mso-spacerun: "yes";'>通过&nbsp;<font face="Times New Roman">jconsole</font><font face="宋体">查看</font><font face="Times New Roman">tomcat</font><font face="宋体">运行情况</font></span><span style='font-family: "宋体"; font-size: 16pt; font-weight: bold; mso-spacerun: "yes";'>的配置方法</span><span style='font-family: "宋体"; font-size: 16pt; font-weight: bold; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="text-align: center; text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt;" class="p0"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&#8212;&#8212;基于<font face="Times New Roman">JDK1.5</font><font face="宋体">、</font><font face="Times New Roman">Linux</font><font face="宋体">（</font><font face="Times New Roman">Redhat5.5</font><font face="宋体">）、</font><font face="Times New Roman">Tomcat6</font></span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="text-align: center; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>由于项目的原因，需要使用<font face="Times New Roman">jconsole</font><font face="宋体">对</font><font face="Times New Roman">tomcat</font><font face="宋体">进行远程监控，结合网上的资料对配置方法进行了总结。</font></span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "Times New Roman"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'>第一步、配置<font face="Times New Roman">tomcat</font></span><span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'>打开<font face="Times New Roman">%</font></span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>TOMCAT</span><span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'>_HOME%/bin<font face="宋体">下的文件</font><font face="Times New Roman">catalina.</font></span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>sh</span><span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'>，</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>搜索&#8220;<font face="Times New Roman">JAVA_OPTS</font><font face="宋体">&#8221;找到</font></span><span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'>下面这行：</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt;" class="p0"><span style='font-family: "Courier New"; font-size: 9pt; mso-spacerun: "yes";'>if&nbsp;[&nbsp;-z&nbsp;"$LOGGING_MANAGER"&nbsp;];&nbsp;then</span><span style='font-family: "Courier New"; font-size: 9pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt;" class="p0"><span style='font-family: "Courier New"; font-size: 9pt; mso-spacerun: "yes";'>&nbsp;&nbsp;JAVA_OPTS="$JAVA_OPTS&nbsp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"</span><span style='font-family: "Courier New"; font-size: 9pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt;" class="p0"><span style='font-family: "Courier New"; font-size: 9pt; mso-spacerun: "yes";'>else</span><span style='font-family: "Courier New"; font-size: 9pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt;" class="p0"><span style='font-family: "Courier New"; font-size: 9pt; mso-spacerun: "yes";'>&nbsp;&nbsp;JAVA_OPTS="$JAVA_OPTS&nbsp;$LOGGING_MANAGER"</span><span style='font-family: "Courier New"; font-size: 9pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt;" class="p0"><span style='font-family: "Courier New"; font-size: 9pt; mso-spacerun: "yes";'>fi&nbsp;</span><span style='font-family: "Courier New"; font-size: 9pt; mso-spacerun: "yes";'><o:p></o:p></span></p><!--EndFragment--><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0"></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>在每个&#8220;<font face="Times New Roman">JAVA_OPTS</font><font face="宋体">&#8221;后边都添加以下标黄代码段，</font></span><span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'>且在一行显示</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>：</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><table style="padding: 0pt 5.4pt; border-collapse: collapse; mso-table-layout-alt: fixed;"><tbody><tr style="height: 84.85pt;"><td style="background: rgb(204, 255, 255); padding: 0pt 5.4pt; border: 0.5pt solid rgb(0, 0, 0); width: 426.1pt; mso-border-left-alt: 0.5000pt solid rgb(0, 0, 0); mso-border-right-alt: 0.5000pt solid rgb(0, 0, 0); mso-border-top-alt: 0.5000pt solid rgb(0, 0, 0); mso-border-bottom-alt: 0.5000pt solid rgb(0, 0, 0);" valign="top" width="568"><p style="text-align: left; line-height: 14.25pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes";'>if&nbsp;[&nbsp;-z&nbsp;"$LOGGING_MANAGER"&nbsp;];&nbsp;then</span><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt;'><o:p></o:p></span></p><p style="text-align: left; line-height: 14.25pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes";'>&nbsp;&nbsp;JAVA_OPTS="$JAVA_OPTS&nbsp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager&nbsp;</span><span style='background: rgb(255, 255, 0); color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes"; mso-highlight: rgb(255, 255, 0);'>-Djava.rmi.server.hostname=192.9.100.4</span><span style='background: rgb(255, 255, 0); color: rgb(0, 0, 0); font-family: "宋体"; font-size: 10pt; mso-highlight: rgb(255, 255, 0);'>8</span><span style='background: rgb(255, 255, 0); color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes"; mso-highlight: rgb(255, 255, 0);'>&nbsp;&nbsp;-Dcom.sun.management.jmxremote&nbsp;-Dcom.sun.management.jmxremote.port="9004"&nbsp;-Dcom.sun.management.jmxremote.authenticate="false"&nbsp;-Dcom.sun.management.jmxremote.ssl="false"</span><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt;'>"</span><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt;'><o:p></o:p></span></p><p style="text-align: left; line-height: 14.25pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes";'>else&nbsp;</span><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt;'><o:p></o:p></span></p><p style="text-align: left; line-height: 14.25pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes";'>&nbsp;&nbsp;JAVA_OPTS="$JAVA_OPTS&nbsp;$LOGGING_MANAGER&nbsp;</span><span style='background: rgb(255, 255, 0); color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes"; mso-highlight: rgb(255, 255, 0);'>-Djava.rmi.server.hostname=192.9.100.48&nbsp;&nbsp;-Dcom.sun.management.jmxremote&nbsp;-Dcom.sun.management.jmxremote.port="9004"&nbsp;-Dcom.sun.management.jmxremote.authenticate="false"&nbsp;-Dcom.sun.management.jmxremote.ssl="false"</span><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt;'>"</span><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt;'><o:p></o:p></span></p><p style="text-align: left; line-height: 14.25pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes";'>fi</span><span style='font-family: "宋体"; font-size: 12pt;'><o:p></o:p></span></p></td></tr></tbody></table><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(51, 51, 51); font-family: "Arial"; font-size: 10pt; mso-spacerun: "yes";' class="15">其中<font face="Arial">-Djava.rmi.server.hostname</font><font face="宋体">项必须设置，否则远程连接会因为解析到</font><font face="Arial">127.0.0.1</font><font face="宋体">失败，该项的值就是你在</font><font face="Arial">windows</font><font face="宋体">客户端连接</font><font face="Arial">linux</font><font face="宋体">时的</font><font face="Arial">ip</font><font face="宋体">地址</font></span><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15"><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(51, 51, 51); font-family: "Arial"; font-size: 10pt; mso-spacerun: "yes";' class="15">-Dcom.sun.management.jmxremote.port="9004"</span><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15">项设置远程连接端口，</span><span style='color: rgb(51, 51, 51); font-family: "Arial"; font-size: 10pt; mso-spacerun: "yes";' class="15">不要与其他应用冲突</span><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15"><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(51, 51, 51); font-family: "Arial"; font-size: 10pt; mso-spacerun: "yes";' class="15">ssl<font face="宋体">和</font><font face="Arial">authenticate</font><font face="宋体">设置为</font><font face="Arial">false</font><font face="宋体">，如果需要安全，请不要</font><font face="Arial">false</font></span><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15"><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15"><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "Times New Roman"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'>第</span><span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'>二</span><span style='font-family: "Times New Roman"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'>步</span><span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'>、重启</span><span style='font-family: "Times New Roman"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'>tomcat</span><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15"><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15">使用<font face="Arial">root</font><font face="宋体">身份登录系统，进入</font></span><span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'>%</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>TOMCAT</span><span style='font-family: "Times New Roman"; font-size: 10.5pt; mso-spacerun: "yes";'>_HOME%/bin</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>目录下：</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><table style="padding: 0pt 5.4pt; border-collapse: collapse; mso-table-layout-alt: fixed;"><tbody><tr style="height: 61.8pt;"><td style="background: rgb(204, 255, 255); padding: 0pt 5.4pt; border: 0.5pt solid rgb(0, 0, 0); width: 426.1pt; mso-border-left-alt: 0.5000pt solid rgb(0, 0, 0); mso-border-right-alt: 0.5000pt solid rgb(0, 0, 0); mso-border-top-alt: 0.5000pt solid rgb(0, 0, 0); mso-border-bottom-alt: 0.5000pt solid rgb(0, 0, 0);" valign="top" width="568"><p style="text-align: left; line-height: 14.25pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes";'>[root@</span><span style='color: rgb(0, 0, 0); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";'>test</span><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes";'>&nbsp;~]#</span><span style='color: rgb(0, 0, 0); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";'>ps&nbsp;</span><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt;'>&#8211;</span><span style='color: rgb(0, 0, 0); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";'>ef&nbsp;|grep&nbsp;tomcat&nbsp;</span><span style='color: rgb(255, 102, 0); font-family: "Lucida Console"; font-size: 10pt; font-weight: bold;'>&#8211;</span><span style='color: rgb(255, 102, 0); font-family: "宋体"; font-size: 10pt; font-weight: bold; mso-spacerun: "yes";'>-<font face="宋体">输入命令查看是否存在</font><font face="Lucida Console">tomcat</font><font face="宋体">进程</font></span><span style='color: rgb(0, 0, 0); font-family: "宋体"; font-size: 10pt;'><o:p></o:p></span></p><p style="text-align: left; line-height: 14.25pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes";'>[root@</span><span style='color: rgb(0, 0, 0); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";'>test</span><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes";'>&nbsp;~]#</span><span style='color: rgb(0, 0, 0); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";'>./shutdown.sh</span><span style='color: rgb(255, 102, 0); font-family: "宋体"; font-size: 10pt; font-weight: bold; mso-spacerun: "yes";'>--<font face="宋体">停止</font><font face="Lucida Console">tomcat</font><font face="宋体">服务，如果无效使用</font><font face="Lucida Console">kill</font><font face="宋体">命令杀掉进程</font></span><span style='color: rgb(0, 0, 0); font-family: "宋体"; font-size: 10pt;'><o:p></o:p></span></p><p style="text-align: left; line-height: 14.25pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes";'>[root@</span><span style='color: rgb(0, 0, 0); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";'>test</span><span style='color: rgb(0, 0, 0); font-family: "Lucida Console"; font-size: 10pt; mso-spacerun: "yes";'>&nbsp;~]</span><span style='color: rgb(0, 0, 0); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";'>#./startup.sh&nbsp;&nbsp;</span><span style='color: rgb(255, 102, 0); font-family: "宋体"; font-size: 10pt; font-weight: bold; mso-spacerun: "yes";'>--<font face="宋体">启动</font><font face="Lucida Console">tomcat</font><font face="宋体">服务</font></span><span style='color: rgb(0, 0, 0); font-family: "宋体"; font-size: 10pt;'><o:p></o:p></span></p></td></tr></tbody></table><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='font-family: "Times New Roman"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'>第</span><span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'>三</span><span style='font-family: "Times New Roman"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'>步</span><span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'>、运行<font face="Times New Roman">jconsole</font></span><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15"><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15">进入<font face="Arial">JDK</font><font face="宋体">安装目录</font><font face="Arial">%JDK_HOME%/bin</font><font face="宋体">下，找到&#8220;</font></span><span style='color: rgb(51, 51, 51); font-family: "Arial"; font-size: 10pt; mso-spacerun: "yes";' class="15">jconsole.exe</span><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15">&#8221;，点击运行并选择【远程】选项卡：</span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15">在【主机名或<font face="Arial">ip</font><font face="宋体">】输入要远程监控的</font><font face="Arial">tomcat</font><font face="宋体">服务器地址</font></span><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15"><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15">在【端口】输入上文设置的端口号：<font face="Arial">9004</font></span><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15"><o:p></o:p></span></p><p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" class="p0"><span style='color: rgb(51, 51, 51); font-family: "宋体"; font-size: 10pt; mso-spacerun: "yes";' class="15">【用户名、口令】为空，点击【连接】进入监控界面。</span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p0"></p><!--EndFragment--> 
<img src ="http://www.blogjava.net/japper/aggbug/387094.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-09-05 14:16 <a href="http://www.blogjava.net/japper/archive/2012/09/05/387094.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TOMCAT获取信息：JMXServiceURL 、JMXConnector 和MBeanServerConnection </title><link>http://www.blogjava.net/japper/archive/2012/09/05/387092.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Wed, 05 Sep 2012 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/09/05/387092.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/387092.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/09/05/387092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/387092.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/387092.html</trackback:ping><description><![CDATA[<p align="left">
 
</p><pre><ol class="dp-j"><li class="alt"><span class="keyword">import</span><span> java.lang.management.MemoryUsage; </span></li><li><span class="keyword">import</span><span> java.text.SimpleDateFormat; </span></li><li class="alt"><span class="keyword">import</span><span> java.util.Date; </span></li><li><span class="keyword">import</span><span> java.util.Formatter; </span></li><li class="alt"><span class="keyword">import</span><span> java.util.HashMap; </span></li><li><span class="keyword">import</span><span> java.util.Iterator; </span></li><li class="alt"><span class="keyword">import</span><span> java.util.Map; </span></li><li><span class="keyword">import</span><span> java.util.Set; </span></li><li class="alt"><span> </span></li><li><span class="keyword">import</span><span> javax.management.MBeanAttributeInfo; </span></li><li class="alt"><span class="keyword">import</span><span> javax.management.MBeanInfo; </span></li><li><span class="keyword">import</span><span> javax.management.MBeanServerConnection; </span></li><li class="alt"><span class="keyword">import</span><span> javax.management.ObjectInstance; </span></li><li><span class="keyword">import</span><span> javax.management.ObjectName; </span></li><li class="alt"><span class="keyword">import</span><span> javax.management.openmbean.CompositeDataSupport; </span></li><li><span class="keyword">import</span><span> javax.management.remote.JMXConnector; </span></li><li class="alt"><span class="keyword">import</span><span> javax.management.remote.JMXConnectorFactory; </span></li><li><span class="keyword">import</span><span> javax.management.remote.JMXServiceURL; </span></li><li class="alt"><span> </span></li><li><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> test { </span></li><li class="alt"><span>    <span class="comment">/**</span> </span></li><li><span class="comment">     * @param args</span> </li><li class="alt"><span class="comment">     */</span><span> </span></li><li><span>    <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) { </span></span></li><li class="alt"><span>        <span class="keyword">try</span><span> { </span></span></li><li><span> </span></li><li class="alt"><span>            String jmxURL = <span class="string">"service:jmx:rmi:///jndi/rmi://192.168.1.126:10090/jmxrmi"</span><span>;//tomcat jmx url   </span></span></li><li><span>            JMXServiceURL serviceURL = <span class="keyword">new</span><span> JMXServiceURL(jmxURL); </span></span></li><li class="alt"><span> </span></li><li><span>            Map map = <span class="keyword">new</span><span> HashMap(); </span></span></li><li class="alt"><span>            String[] credentials = <span class="keyword">new</span><span> String[] { </span><span class="string">"monitorRole"</span><span>, </span><span class="string">"QED"</span><span> }; </span></span></li><li><span>            map.put(<span class="string">"jmx.remote.credentials"</span><span>, credentials); </span></span></li><li class="alt"><span>            JMXConnector connector = JMXConnectorFactory.connect(serviceURL, map); </span></li><li><span>            MBeanServerConnection mbsc = connector.getMBeanServerConnection(); </span></li><li class="alt"><span> </span></li><li><span>            <span class="comment">//端口最好是动态取得  </span><span> </span></span></li><li class="alt"><span>            ObjectName threadObjName = <span class="keyword">new</span><span> ObjectName(</span><span class="string">"Catalina:type=ThreadPool,name=http-8089"</span><span>); </span></span></li><li><span>            MBeanInfo mbInfo = mbsc.getMBeanInfo(threadObjName); </span></li><li class="alt"><span> </span></li><li><span>            String attrName = <span class="string">"currentThreadCount"</span><span>;</span><span class="comment">//tomcat的线程数对应的属性值  </span><span> </span></span></li><li class="alt"><span>            MBeanAttributeInfo[] mbAttributes = mbInfo.getAttributes(); </span></li><li><span>            System.out.println(<span class="string">"currentThreadCount:"</span><span> + mbsc.getAttribute(threadObjName, attrName)); </span></span></li><li class="alt"><span> </span></li><li><span>            <span class="comment">//heap  </span><span> </span></span></li><li class="alt"><span>            <span class="keyword">for</span><span> (</span><span class="keyword">int</span><span> j = </span><span class="number">0</span><span>; j &lt; mbsc.getDomains().length; j++) { </span></span></li><li><span>                System.out.println(<span class="string">"###########"</span><span> + mbsc.getDomains()[j]); </span></span></li><li class="alt"><span>            } </span></li><li><span>            Set MBeanset = mbsc.queryMBeans(<span class="keyword">null</span><span>, </span><span class="keyword">null</span><span>); </span></span></li><li class="alt"><span>            System.out.println(<span class="string">"MBeanset.size() : "</span><span> + MBeanset.size()); </span></span></li><li><span>            Iterator MBeansetIterator = MBeanset.iterator(); </span></li><li class="alt"><span>            <span class="keyword">while</span><span> (MBeansetIterator.hasNext()) { </span></span></li><li><span>                ObjectInstance objectInstance = (ObjectInstance) MBeansetIterator.next(); </span></li><li class="alt"><span>                ObjectName objectName = objectInstance.getObjectName(); </span></li><li><span>                String canonicalName = objectName.getCanonicalName(); </span></li><li class="alt"><span>                System.out.println(<span class="string">"canonicalName : "</span><span> + canonicalName); </span></span></li><li><span>                <span class="keyword">if</span><span> (canonicalName.equals(</span><span class="string">"Catalina:host=localhost,type=Cluster"</span><span>)) { </span></span></li><li class="alt"><span>                    <span class="comment">// Get details of cluster MBeans  </span><span> </span></span></li><li><span>                    System.out.println(<span class="string">"Cluster MBeans Details:"</span><span>); </span></span></li><li class="alt"><span>                    System.out.println(<span class="string">"========================================="</span><span>); </span></span></li><li><span>                    <span class="comment">//getMBeansDetails(canonicalName);  </span><span> </span></span></li><li class="alt"><span>                    String canonicalKeyPropList = objectName.getCanonicalKeyPropertyListString(); </span></li><li><span>                } </span></li><li class="alt"><span>            } </span></li><li><span>            <span class="comment">//------------------------- system ----------------------  </span><span> </span></span></li><li class="alt"><span>            ObjectName runtimeObjName = <span class="keyword">new</span><span> ObjectName(</span><span class="string">"java.lang:type=Runtime"</span><span>); </span></span></li><li><span>            System.out.println(<span class="string">"厂商:"</span><span> + (String) mbsc.getAttribute(runtimeObjName, </span><span class="string">"VmVendor"</span><span>)); </span></span></li><li class="alt"><span>            System.out.println(<span class="string">"程序:"</span><span> + (String) mbsc.getAttribute(runtimeObjName, </span><span class="string">"VmName"</span><span>)); </span></span></li><li><span>            System.out.println(<span class="string">"版本:"</span><span> + (String) mbsc.getAttribute(runtimeObjName, </span><span class="string">"VmVersion"</span><span>)); </span></span></li><li class="alt"><span>            Date starttime = <span class="keyword">new</span><span> Date((Long) mbsc.getAttribute(runtimeObjName, </span><span class="string">"StartTime"</span><span>)); </span></span></li><li><span>            SimpleDateFormat df = <span class="keyword">new</span><span> SimpleDateFormat(</span><span class="string">"yyyy-MM-dd HH:mm:ss"</span><span>); </span></span></li><li class="alt"><span>            System.out.println(<span class="string">"启动时间:"</span><span> + df.format(starttime)); </span></span></li><li><span> </span></li><li class="alt"><span>            Long timespan = (Long) mbsc.getAttribute(runtimeObjName, <span class="string">"Uptime"</span><span>); </span></span></li><li><span>            System.out.println(<span class="string">"连续工作时间:"</span><span> + test.formatTimeSpan(timespan)); </span></span></li><li class="alt"><span>            <span class="comment">//------------------------ JVM -------------------------  </span><span> </span></span></li><li><span>            <span class="comment">//堆使用率  </span><span> </span></span></li><li class="alt"><span>            ObjectName heapObjName = <span class="keyword">new</span><span> ObjectName(</span><span class="string">"java.lang:type=Memory"</span><span>); </span></span></li><li><span>            MemoryUsage heapMemoryUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(heapObjName, </span></li><li class="alt"><span>                    <span class="string">"HeapMemoryUsage"</span><span>)); </span></span></li><li><span>            <span class="keyword">long</span><span> maxMemory = heapMemoryUsage.getMax();</span><span class="comment">//堆最大  </span><span> </span></span></li><li class="alt"><span>            <span class="keyword">long</span><span> commitMemory = heapMemoryUsage.getCommitted();</span><span class="comment">//堆当前分配  </span><span> </span></span></li><li><span>            <span class="keyword">long</span><span> usedMemory = heapMemoryUsage.getUsed(); </span></span></li><li class="alt"><span>            System.out.println(<span class="string">"heap:"</span><span> + (</span><span class="keyword">double</span><span>) usedMemory * </span><span class="number">100</span><span> / commitMemory + </span><span class="string">"%"</span><span>);</span><span class="comment">//堆使用率  </span><span> </span></span></li><li><span> </span></li><li class="alt"><span>            MemoryUsage nonheapMemoryUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(heapObjName, </span></li><li><span>                    <span class="string">"NonHeapMemoryUsage"</span><span>)); </span></span></li><li class="alt"><span>            <span class="keyword">long</span><span> noncommitMemory = nonheapMemoryUsage.getCommitted(); </span></span></li><li><span>            <span class="keyword">long</span><span> nonusedMemory = heapMemoryUsage.getUsed(); </span></span></li><li class="alt"><span>            System.out.println(<span class="string">"nonheap:"</span><span> + (</span><span class="keyword">double</span><span>) nonusedMemory * </span><span class="number">100</span><span> / noncommitMemory + </span><span class="string">"%"</span><span>); </span></span></li><li><span> </span></li><li class="alt"><span>            ObjectName permObjName = <span class="keyword">new</span><span> ObjectName(</span><span class="string">"java.lang:type=MemoryPool,name=Perm Gen"</span><span>); </span></span></li><li><span>            MemoryUsage permGenUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(permObjName, <span class="string">"Usage"</span><span>)); </span></span></li><li class="alt"><span>            <span class="keyword">long</span><span> committed = permGenUsage.getCommitted();</span><span class="comment">//持久堆大小  </span><span> </span></span></li><li><span>            <span class="keyword">long</span><span> used = heapMemoryUsage.getUsed();</span><span class="comment">//  </span><span> </span></span></li><li class="alt"><span>            System.out.println(<span class="string">"perm gen:"</span><span> + (</span><span class="keyword">double</span><span>) used * </span><span class="number">100</span><span> / committed + </span><span class="string">"%"</span><span>);</span><span class="comment">//持久堆使用率  </span><span> </span></span></li><li><span> </span></li><li class="alt"><span>            <span class="comment">//-------------------- Session ---------------   </span><span> </span></span></li><li><span>            ObjectName managerObjName = <span class="keyword">new</span><span> ObjectName(</span><span class="string">"Catalina:type=Manager,*"</span><span>); </span></span></li><li class="alt"><span>            Set&lt;ObjectName&gt; s = mbsc.queryNames(managerObjName, <span class="keyword">null</span><span>); </span></span></li><li><span>            <span class="keyword">for</span><span> (ObjectName obj : s) { </span></span></li><li class="alt"><span>                System.out.println(<span class="string">"应用名:"</span><span> + obj.getKeyProperty(</span><span class="string">"path"</span><span>)); </span></span></li><li><span>                ObjectName objname = <span class="keyword">new</span><span> ObjectName(obj.getCanonicalName()); </span></span></li><li class="alt"><span>                System.out.println(<span class="string">"最大会话数:"</span><span> + mbsc.getAttribute(objname, </span><span class="string">"maxActiveSessions"</span><span>)); </span></span></li><li><span>                System.out.println(<span class="string">"会话数:"</span><span> + mbsc.getAttribute(objname, </span><span class="string">"activeSessions"</span><span>)); </span></span></li><li class="alt"><span>                System.out.println(<span class="string">"活动会话数:"</span><span> + mbsc.getAttribute(objname, </span><span class="string">"sessionCounter"</span><span>)); </span></span></li><li><span>            } </span></li><li class="alt"><span> </span></li><li><span>            <span class="comment">//----------------- Thread Pool ----------------  </span><span> </span></span></li><li class="alt"><span>            ObjectName threadpoolObjName = <span class="keyword">new</span><span> ObjectName(</span><span class="string">"Catalina:type=ThreadPool,*"</span><span>); </span></span></li><li><span>            Set&lt;ObjectName&gt; s2 = mbsc.queryNames(threadpoolObjName, <span class="keyword">null</span><span>); </span></span></li><li class="alt"><span>            <span class="keyword">for</span><span> (ObjectName obj : s2) { </span></span></li><li><span>                System.out.println(<span class="string">"端口名:"</span><span> + obj.getKeyProperty(</span><span class="string">"name"</span><span>)); </span></span></li><li class="alt"><span>                ObjectName objname = <span class="keyword">new</span><span> ObjectName(obj.getCanonicalName()); </span></span></li><li><span>                System.out.println(<span class="string">"最大线程数:"</span><span> + mbsc.getAttribute(objname, </span><span class="string">"maxThreads"</span><span>)); </span></span></li><li class="alt"><span>                System.out.println(<span class="string">"当前线程数:"</span><span> + mbsc.getAttribute(objname, </span><span class="string">"currentThreadCount"</span><span>)); </span></span></li><li><span>                System.out.println(<span class="string">"繁忙线程数:"</span><span> + mbsc.getAttribute(objname, </span><span class="string">"currentThreadsBusy"</span><span>)); </span></span></li><li class="alt"><span>            } </span></li><li><span> </span></li><li class="alt"><span>        } <span class="keyword">catch</span><span> (Exception e) { </span></span></li><li><span>            e.printStackTrace(); </span></li><li class="alt"><span>        } </span></li><li><span>    } </span></li><li class="alt"><span> </span></li><li><span>    <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> String formatTimeSpan(</span><span class="keyword">long</span><span> span) { </span></span></li><li class="alt"><span>        <span class="keyword">long</span><span> minseconds = span % </span><span class="number">1000</span><span>; </span></span></li><li><span> </span></li><li class="alt"><span>        span = span / <span class="number">1000</span><span>; </span></span></li><li><span>        <span class="keyword">long</span><span> seconds = span % </span><span class="number">60</span><span>; </span></span></li><li class="alt"><span> </span></li><li><span>        span = span / <span class="number">60</span><span>; </span></span></li><li class="alt"><span>        <span class="keyword">long</span><span> mins = span % </span><span class="number">60</span><span>; </span></span></li><li><span> </span></li><li class="alt"><span>        span = span / <span class="number">60</span><span>; </span></span></li><li><span>        <span class="keyword">long</span><span> hours = span % </span><span class="number">24</span><span>; </span></span></li><li class="alt"><span> </span></li><li><span>        span = span / <span class="number">24</span><span>; </span></span></li><li class="alt"><span>        <span class="keyword">long</span><span> days = span; </span></span></li><li><span>        <span class="keyword">return</span><span> (</span><span class="keyword">new</span><span> Formatter()).format(</span><span class="string">"%1$d天 %2$02d:%3$02d:%4$02d.%5$03d"</span><span>, days, hours, mins, seconds, minseconds) </span></span></li><li class="alt"><span>                .toString(); </span></li><li><span>    } </span></li><li class="alt"><span> </span></li><li><span>}  </span></li></ol></pre><p> </p><p> </p><pre><ol class="dp-j"><li class="alt"><span class="keyword">import</span><span> java.util.Iterator;    </span></li><li><span class="keyword">import</span><span> java.util.Set;    </span></li><li class="alt"><span class="keyword">import</span><span> javax.management.Attribute;    </span></li><li><span class="keyword">import</span><span> javax.management.MBeanInfo;    </span></li><li class="alt"><span class="keyword">import</span><span> javax.management.MBeanServerConnection;    </span></li><li><span class="keyword">import</span><span> javax.management.MBeanServerInvocationHandler;    </span></li><li class="alt"><span class="keyword">import</span><span> javax.management.ObjectInstance;    </span></li><li><span class="keyword">import</span><span> javax.management.ObjectName;    </span></li><li class="alt"><span class="keyword">import</span><span> javax.management.remote.JMXConnector;    </span></li><li><span class="keyword">import</span><span> javax.management.remote.JMXConnectorFactory;    </span></li><li class="alt"><span class="keyword">import</span><span> javax.management.remote.JMXServiceURL;    </span></li><li><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> Client {    </span></li><li class="alt"><span>    <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) </span><span class="keyword">throws</span><span> Exception {       </span></span></li><li><span>        JMXServiceURL url = <span class="keyword">new</span><span> JMXServiceURL(</span><span class="string">"service:jmx:rmi:///jndi/rmi://localhost:9999/server"</span><span>);       </span></span></li><li class="alt"><span>        JMXConnector jmxc = JMXConnectorFactory.connect(url, <span class="keyword">null</span><span>);        </span></span></li><li><span>        MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();      </span></li><li class="alt"><span>        ObjectName mbeanName = <span class="keyword">new</span><span> ObjectName(</span><span class="string">"chengang:name=HelloWorld"</span><span>);    </span></span></li><li><span>        <span class="comment">// 把所有Domain都打印出来   </span><span> </span></span></li><li class="alt"><span>        System.out.println(<span class="string">"Domains:---------------"</span><span>);       </span></span></li><li><span>        String domains[] = mbsc.getDomains();        </span></li><li class="alt"><span>        <span class="keyword">for</span><span> (</span><span class="keyword">int</span><span> i = </span><span class="number">0</span><span>; i &lt; domains.length; i++) {        </span></span></li><li><span>            System.out.println(<span class="string">"\tDomain["</span><span> + i + </span><span class="string">"] = "</span><span> + domains[i]);     </span></span></li><li class="alt"><span>        }    </span></li><li><span>        <span class="comment">// MBean的总数   </span><span> </span></span></li><li class="alt"><span>        System.out.println(<span class="string">"MBean count = "</span><span> + mbsc.getMBeanCount());    </span></span></li><li><span>        <span class="comment">// 对name属性的操作（属性名的第一个字母要大写）   </span><span> </span></span></li><li class="alt"><span>        mbsc.setAttribute(mbeanName, <span class="keyword">new</span><span> Attribute(</span><span class="string">"Name"</span><span>, </span><span class="string">"PANDA"</span><span>));</span><span class="comment">// 设值   </span><span> </span></span></li><li><span>        System.out.println(<span class="string">"Name = "</span><span> + mbsc.getAttribute(mbeanName, </span><span class="string">"Name"</span><span>));</span><span class="comment">// 取值   </span><span> </span></span></li><li class="alt"><span>        <span class="comment">// 得到proxy代理后直接调用的方式   </span><span> </span></span></li><li><span>        HelloMBean proxy = (HelloMBean) MBeanServerInvocationHandler.newProxyInstance(mbsc, mbeanName, HelloMBean.<span class="keyword">class</span><span>, </span><span class="keyword">false</span><span>);         </span></span></li><li class="alt"><span>        proxy.printHello();         </span></li><li><span>        proxy.printHello(<span class="string">"Raymend"</span><span>);    </span></span></li><li class="alt"><span>        <span class="comment">// 远程调用的方式   </span><span> </span></span></li><li><span>        mbsc.invoke(mbeanName, <span class="string">"printHello"</span><span>, </span><span class="keyword">null</span><span>, </span><span class="keyword">null</span><span>);          </span></span></li><li class="alt"><span>        mbsc.invoke(mbeanName, <span class="string">"printHello"</span><span>, </span><span class="keyword">new</span><span> Object[] { </span><span class="string">"熊猫烧香"</span><span> }, </span><span class="keyword">new</span><span> String[] { String.</span><span class="keyword">class</span><span>.getName() });    </span></span></li><li><span>        <span class="comment">// 得mbean的信息   </span><span> </span></span></li><li class="alt"><span>        MBeanInfo info = mbsc.getMBeanInfo(mbeanName);          </span></li><li><span>        System.out.println(<span class="string">"Hello Class: "</span><span> + info.getClassName());       </span></span></li><li class="alt"><span>        System.out.println(<span class="string">"Hello Attriber："</span><span> + info.getAttributes()[</span><span class="number">0</span><span>].getName());      </span></span></li><li><span>        System.out.println(<span class="string">"Hello Operation："</span><span> + info.getOperations()[</span><span class="number">0</span><span>].getName());    </span></span></li><li class="alt"><span>        <span class="comment">// 得到所有的MBean的ObjectName   </span><span> </span></span></li><li><span>        System.out.println(<span class="string">"all ObjectName：---------------"</span><span>);         </span></span></li><li class="alt"><span>        Set set = mbsc.queryMBeans(<span class="keyword">null</span><span>, </span><span class="keyword">null</span><span>);        </span></span></li><li><span>        <span class="keyword">for</span><span> (Iterator it = set.iterator(); it.hasNext();) {         </span></span></li><li class="alt"><span>            ObjectInstance oi = (ObjectInstance) it.next();         </span></li><li><span>            System.out.println(<span class="string">"\t"</span><span> + oi.getObjectName());         </span></span></li><li class="alt"><span>            }</span></li><li><span>        <span class="comment">// 关闭MBeanServer连接   </span><span> </span></span></li><li class="alt"><span>        jmxc.close();      </span></li><li><span>}    </span></li><li class="alt"><span>}    </span></li></ol></pre><img src ="http://www.blogjava.net/japper/aggbug/387092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-09-05 14:14 <a href="http://www.blogjava.net/japper/archive/2012/09/05/387092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LinkedHashMap和HashMap的比较使用 </title><link>http://www.blogjava.net/japper/archive/2012/09/05/387091.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Wed, 05 Sep 2012 06:12:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/09/05/387091.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/387091.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/09/05/387091.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/387091.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/387091.html</trackback:ping><description><![CDATA[<p align="left">
 
</p><div id="cnblogs_post_body"><p>由于现在项目中用到了LinkedHashMap，并不是太熟悉就到网上搜了一下。</p><div class="cnblogs_Highlighter"><div><div id="highlighter_900446" class="syntaxhighlighter nogutter  java ie"><div class="toolbar"><span></span></div><br /><table border="0" cellspacing="0" cellpadding="0"><br /><tbody><br /><tr><br /><td class="code"><br /><div class="container"><br /><div class="line number1 index0 alt2"><code class="java keyword">import</code> <br /><code class="java plain">java.util.HashMap; </code></div><br /><div class="line number2 index1 alt1"><code class="java keyword">import</code> <br /><code class="java plain">java.util.Iterator; </code></div><br /><div class="line number3 index2 alt2"><code class="java keyword">import</code> <br /><code class="java plain">java.util.LinkedHashMap; </code></div><br /><div class="line number4 index3 alt1"><code class="java keyword">import</code> <br /><code class="java plain">java.util.Map; </code></div><br /><div class="line number5 index4 alt2"><code class="java keyword">public</code> <br /><code class="java keyword">class</code> <code class="java plain">TestLinkedHashMap { </code></div><br /><div class="line number6 index5 alt1"><code class="java spaces"> </code> </div><br /><div class="line number7 index6 alt2"><code class="java spaces">&nbsp; </code><code class="java keyword">public</code> <code class="java keyword">static</code> <br /><code class="java keyword">void</code> <code class="java plain">main(String <br />args[]) </code></div><br /><div class="line number8 index7 alt1"><code class="java spaces">&nbsp; </code><code class="java plain">{ </code></div><br /><div class="line number9 index8 alt2"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">System.out.println(</code><code class="java string">"*************************LinkedHashMap*************"</code><code class="java plain">); </code></div><br /><div class="line number10 index9 alt1"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">Map&lt;Integer,String&gt; map = </code><code class="java keyword">new</code> <code class="java plain">LinkedHashMap&lt;Integer,String&gt;(); </code></div><br /><div class="line number11 index10 alt2"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">map.put(</code><code class="java value">6</code><code class="java plain">, </code><code class="java string">"apple"</code><code class="java plain">); </code></div><br /><div class="line number12 index11 alt1"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">map.put(</code><code class="java value">3</code><code class="java plain">, </code><code class="java string">"banana"</code><code class="java plain">); </code></div><br /><div class="line number13 index12 alt2"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">map.put(</code><code class="java value">2</code><code class="java plain">,</code><code class="java string">"pear"</code><code class="java plain">); </code></div><br /><div class="line number14 index13 alt1"><code class="java spaces">&nbsp;&nbsp; </code> </div><br /><div class="line number15 index14 alt2"><code class="java spaces">&nbsp;&nbsp; </code><code class="java keyword">for</code> <code class="java plain">(Iterator it =&nbsp; map.keySet().iterator();it.hasNext();) <br /></code></div><br /><div class="line number16 index15 alt1"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">{ </code></div><br /><div class="line number17 index16 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp; </code><code class="java plain">Object key = it.next(); <br /></code></div><br /><div class="line number18 index17 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp; </code><code class="java plain">System.out.println( <br />key+</code><code class="java string">"="</code><code class="java plain">+ <br />map.get(key)); </code></div><br /><div class="line number19 index18 alt2"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">} </code></div><br /><div class="line number20 index19 alt1"><code class="java spaces">&nbsp;&nbsp; </code> </div><br /><div class="line number21 index20 alt2"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">System.out.println(</code><code class="java string">"*************************HashMap*************"</code><code class="java plain">); </code></div><br /><div class="line number22 index21 alt1"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">Map&lt;Integer,String&gt; <br />map1 = </code><code class="java keyword">new</code>&nbsp; <code class="java plain">HashMap&lt;Integer,String&gt;(); </code></div><br /><div class="line number23 index22 alt2"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">map1.put(</code><code class="java value">6</code><code class="java plain">, </code><code class="java string">"apple"</code><code class="java plain">); </code></div><br /><div class="line number24 index23 alt1"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">map1.put(</code><code class="java value">3</code><code class="java plain">, </code><code class="java string">"banana"</code><code class="java plain">); </code></div><br /><div class="line number25 index24 alt2"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">map1.put(</code><code class="java value">2</code><code class="java plain">,</code><code class="java string">"pear"</code><code class="java plain">); </code></div><br /><div class="line number26 index25 alt1"><code class="java spaces">&nbsp;&nbsp; </code> </div><br /><div class="line number27 index26 alt2"><code class="java spaces">&nbsp;&nbsp; </code><code class="java keyword">for</code> <code class="java plain">(Iterator it =  map1.keySet().iterator();it.hasNext();) 
</code></div><br /><div class="line number28 index27 alt1"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">{ </code></div><br /><div class="line number29 index28 alt2"><code class="java spaces">&nbsp;&nbsp;&nbsp; </code><code class="java plain">Object key = it.next(); <br /></code></div><br /><div class="line number30 index29 alt1"><code class="java spaces">&nbsp;&nbsp;&nbsp; </code><code class="java plain">System.out.println( <br />key+</code><code class="java string">"="</code><code class="java plain">+ <br />map1.get(key)); </code></div><br /><div class="line number31 index30 alt2"><code class="java spaces">&nbsp;&nbsp; </code><code class="java plain">} </code></div><br /><div class="line number32 index31 alt1"><code class="java spaces">&nbsp; </code><code class="java plain">} </code></div><br /><div class="line number33 index32 alt2"><code class="java plain">}</code></div></div></td></tr></tbody></table></div></div></div><br /><p> </p><br /><p>运行结果如下:</p><br /><p>*************************LinkedHashMap*************<br />6=apple<br />3=banana<br />2=pear<br />*************************HashMap**************************<br />2=pear<br />6=apple<br />3=banana</p><br /><p>分析:LinkedHashmap 的特点是put进去的对象位置未发生变化,而HashMap会发生变化.</p><br /><p>再普及下：</p><br /><div style="font: 13px/1.5 verdana, sans-serif; padding: 2px 10px 2px 15px; color: rgb(51, 51, 51); margin-top: 0px; font-size-adjust: none; font-stretch: normal;" class="postText"><br /><div><br /><p style="margin: 5px auto; line-height: normal; letter-spacing: 0.1em;"><strong><span style="font-family: 黑体; font-size: 14px;"><span style="font-family: 宋体;">java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap <br />Hashtable LinkedHashMap 和TreeMap</span>.</span></strong></p><br /><p style="margin: 5px auto; line-height: normal; letter-spacing: 0.1em;"><span style="font-size: 14px;">Map主要用于存储健值对，根据键得到值，因此不允许键重复(重复了覆盖了),但允许值重复。</span><br style="letter-spacing: 0.1em;" /><span style="font-size: 14px;">Hashmap <br />是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值，具有很快的访问速度，遍历时，取得数据的顺序是完全随机的。 <br />HashMap最多只允许一条记录的键为Null;允许多条记录的值为 <br />Null;HashMap不支持线程的同步，即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步，可以用 <br />Collections的synchronizedMap方法使HashMap具有同步的能力，或者使用ConcurrentHashMap。</span></p><br /><p style="margin: 5px auto; line-height: normal; letter-spacing: 0.1em;"><span style="font-size: 14px;">Hashtable与 <br />HashMap类似,它继承自Dictionary类，不同的是:它不允许记录的键或者值为空;它支持线程的同步，即任一时刻只有一个线程能写Hashtable,因此也导致了 <br />Hashtable在写入时会比较慢。</span></p><br /><p style="margin: 5px auto; line-height: normal; letter-spacing: 0.1em;"><span style="font-size: 14px;">LinkedHashMap <br />是HashMap的一个子类，保存了记录的插入顺序，在用Iterator遍历LinkedHashMap时，先得到的记录肯定是先插入的.也可以在构造时用带参数，按照应用次数排序。在遍历的时候会比HashMap慢，不过有种情况例外，当HashMap容量很大，实际数据较少时，遍历起来可能会比 <br />LinkedHashMap慢，因为LinkedHashMap的遍历速度只和实际数据有关，和容量无关，而HashMap的遍历速度和他的容量有关。</span></p><br /><p style="margin: 5px auto; line-height: normal; letter-spacing: 0.1em;"><span style="font-size: 14px;">TreeMap实现SortMap接口，能够把它保存的记录根据键排序,默认是按键值的升序排序，也可以指定排序的比较器，当用Iterator <br />遍历TreeMap时，得到的记录是排过序的。</span></p><br /><p style="margin: 5px auto; line-height: normal; letter-spacing: 0.1em;"><span style="font-size: 14px;">一般情况下，我们用的最多的是HashMap,在Map 中插入、删除和定位元素，HashMap <br />是最好的选择。但如果您要按自然顺序或自定义顺序遍历键，那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap <br />可以实现,它还可以按读取顺序来排列.</span><span style="font-size: 14px;"><br /></span></p><br /><p style="margin: 5px auto; line-height: normal; letter-spacing: 0.1em;"><span style="color: rgb(70, 65, 45); font-family: Tahoma; font-size: 14px;">HashMap是一个最常用的Map，它根据键的hashCode值存储数据，根据键可以直接获取它的值，具有很快的访问速度。HashMap最多只允许一条记录的键为NULL，允许多条记录的值为NULL。</span></p><br /><p style="margin: 5px auto; line-height: normal; letter-spacing: 0.1em;"><span style="color: rgb(70, 65, 45); font-family: Tahoma; font-size: 14px;">HashMap不支持线程同步，即任一时刻可以有多个线程同时写HashMap，可能会导致数据的不一致性。如果需要同步，可以用Collections的synchronizedMap方法使HashMap具有同步的能力。</span><span style="color: rgb(70, 65, 45); font-family: Tahoma; font-size: 14px;"><br /></span></p><br /><p style="margin: 5px auto; line-height: normal; letter-spacing: 0.1em;"><span style="color: rgb(70, 65, 45); font-family: Tahoma; font-size: 14px;">Hashtable与HashMap类似，不同的是：它不允许记录的键或者值为空；它支持线程的同步，即任一时刻只有一个线程能写Hashtable，因此也导致了Hashtable在写入时会比较慢。</span><span style="color: rgb(70, 65, 45); font-family: Tahoma; font-size: 14px;"><br /></span></p><br /><p style="margin: 5px auto; line-height: normal; letter-spacing: 0.1em;"><span style="color: rgb(70, 65, 45); font-family: Tahoma; font-size: 14px;">LinkedHashMap保存了记录的插入顺序，在用Iterator遍历LinkedHashMap时，先得到的记录肯定是先插入的。</span><span style="color: rgb(70, 65, 45); font-family: Tahoma; font-size: 14px;"><br /></span></p><br /><p style="margin: 5px auto; line-height: normal; letter-spacing: 0.1em;"><span style="color: rgb(70, 65, 45); font-family: Tahoma; font-size: 14px;">在遍历的时候会比HashMap慢TreeMap能够把它保存的记录根据键排序，默认是按升序排序，也可以指定排序的比较器。当用Iterator遍历TreeMap时，得到的记录是排过序的。</span></p></div></div></div><img src ="http://www.blogjava.net/japper/aggbug/387091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-09-05 14:12 <a href="http://www.blogjava.net/japper/archive/2012/09/05/387091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java synchronized详解 (转)</title><link>http://www.blogjava.net/japper/archive/2012/08/29/386537.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Wed, 29 Aug 2012 09:47:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/08/29/386537.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/386537.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/08/29/386537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/386537.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/386537.html</trackback:ping><description><![CDATA[<p>记下来，很重要。</p><p>Java语言的关键字，当它用来修饰一个方法或者一个代码块的时候，能够保证在同一时刻最多只有一个线程执行该段代码。 </p><p>&nbsp;&nbsp;&nbsp;&nbsp; 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时，一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 二、然而，当一个线程访问object的一个synchronized(this)同步代码块时，另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 三、尤其关键的是，当一个线程访问object的一个synchronized(this)同步代码块时，其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 四、第三个例子同样适用其它同步代码块。也就是说，当一个线程访问object的一个synchronized(this)同步代码块时，它就获得了这个object的对象锁。结果，其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 五、以上规则对其它对象锁同样适用.</p><p>举例说明：&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时，一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。</p><p>package ths;</p><p>public class Thread1 implements Runnable {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; public void run() {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; synchronized(this) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 5; i++) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Thread.currentThread().getName() + " synchronized loop " + i);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread1 t1 = new Thread1();&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread ta = new Thread(t1, "A");&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread tb = new Thread(t1, "B");&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ta.start();&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tb.start();&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />}</p><p>结果：&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; A synchronized loop 0&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; A synchronized loop 1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; A synchronized loop 2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; A synchronized loop 3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; A synchronized loop 4&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; B synchronized loop 0&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; B synchronized loop 1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; B synchronized loop 2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; B synchronized loop 3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; B synchronized loop 4</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 二、然而，当一个线程访问object的一个synchronized(this)同步代码块时，另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。</p><p>package ths;</p><p>public class Thread2 {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; public void m4t1() {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; synchronized(this) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 5;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while( i-- &gt; 0) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Thread.currentThread().getName() + " : " + i);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(500);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException ie) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; public void m4t2() {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 5;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while( i-- &gt; 0) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Thread.currentThread().getName() + " : " + i);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(500);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException ie) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final Thread2 myt2 = new Thread2();&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread t1 = new Thread(&nbsp; new Runnable() {&nbsp; public void run() {&nbsp; myt2.m4t1();&nbsp; }&nbsp; }, "t1"&nbsp; );&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread t2 = new Thread(&nbsp; new Runnable() {&nbsp; public void run() { myt2.m4t2();&nbsp;&nbsp; }&nbsp; }, "t2"&nbsp; );&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t1.start();&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t2.start();&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />}</p><p>结果：&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 4&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 4&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 0&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 0</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 三、尤其关键的是，当一个线程访问object的一个synchronized(this)同步代码块时，其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。</p><p>&nbsp;&nbsp;&nbsp;&nbsp; //修改Thread2.m4t2()方法：&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; public void m4t2() {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; synchronized(this) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 5;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while( i-- &gt; 0) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Thread.currentThread().getName() + " : " + i);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(500);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException ie) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>结果：</p><p>&nbsp;&nbsp;&nbsp;&nbsp; t1 : 4&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 0&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 4&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 0</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 四、第三个例子同样适用其它同步代码块。也就是说，当一个线程访问object的一个synchronized(this)同步代码块时，它就获得了这个object的对象锁。结果，其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。</p><p>&nbsp;&nbsp;&nbsp;&nbsp; //修改Thread2.m4t2()方法如下：</p><p>&nbsp;&nbsp;&nbsp;&nbsp; public synchronized void m4t2() {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 5;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while( i-- &gt; 0) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Thread.currentThread().getName() + " : " + i);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(500);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException ie) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>结果：&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 4&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : 0&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 4&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : 0</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 五、以上规则对其它对象锁同样适用:</p><p>package ths;</p><p>public class Thread3 {&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; class Inner {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void m4t1() {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 5;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(i-- &gt; 0) {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Thread.currentThread().getName() + " : Inner.m4t1()=" + i);&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(500);&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch(InterruptedException ie) {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void m4t2() {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 5;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(i-- &gt; 0) {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Thread.currentThread().getName() + " : Inner.m4t2()=" + i);&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(500);&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch(InterruptedException ie) {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; private void m4t1(Inner inner) {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; synchronized(inner) { //使用对象锁&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inner.m4t1();&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; private void m4t2(Inner inner) {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inner.m4t2();&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final Thread3 myt3 = new Thread3();&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final Inner inner = myt3.new Inner();&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread t1 = new Thread( new Runnable() {public void run() { myt3.m4t1(inner);} }, "t1");&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; Thread t2 = new Thread( new Runnable() {public void run() { myt3.m4t2(inner);} }, "t2");&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1.start();&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2.start();&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />}</p><p>结果：</p><p>尽管线程t1获得了对Inner的对象锁，但由于线程t2访问的是同一个Inner中的非同步部分。所以两个线程互不干扰。</p><p>&nbsp;&nbsp;&nbsp;&nbsp; t1 : Inner.m4t1()=4&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : Inner.m4t2()=4&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : Inner.m4t1()=3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : Inner.m4t2()=3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : Inner.m4t1()=2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : Inner.m4t2()=2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : Inner.m4t1()=1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : Inner.m4t2()=1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : Inner.m4t1()=0&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : Inner.m4t2()=0</p><p>现在在Inner.m4t2()前面加上synchronized：</p><p>&nbsp;&nbsp;&nbsp;&nbsp; private synchronized void m4t2() {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 5;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(i-- &gt; 0) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Thread.currentThread().getName() + " : Inner.m4t2()=" + i);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(500);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch(InterruptedException ie) {&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>结果：</p><p>尽管线程t1与t2访问了同一个Inner对象中两个毫不相关的部分,但因为t1先获得了对Inner的对象锁，所以t2对Inner.m4t2()的访问也被阻塞，因为m4t2()是Inner中的一个同步方法。</p><p>&nbsp;&nbsp;&nbsp;&nbsp; t1 : Inner.m4t1()=4&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : Inner.m4t1()=3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : Inner.m4t1()=2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : Inner.m4t1()=1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t1 : Inner.m4t1()=0&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : Inner.m4t2()=4&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : Inner.m4t2()=3&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : Inner.m4t2()=2&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : Inner.m4t2()=1&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; t2 : Inner.m4t2()=0</p><p>第二篇：</p><p>synchronized 关键字，它包括两种用法：synchronized 方法和 synchronized 块。&nbsp; <br />1. synchronized 方法：通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。如：&nbsp; <br />public synchronized void accessVal(int newVal);&nbsp; <br />synchronized 方法控制对类成员变量的访问：每个类实例对应一把锁，每个 synchronized 方法都必须获得调用该方法的类实例的锁方能</p><p>执行，否则所属线程阻塞，方法一旦执行，就独占该锁，直到从该方法返回时才将锁释放，此后被阻塞的线程方能获得该锁，重新进入可执行</p><p>状态。这种机制确保了同一时刻对于每一个类实例，其所有声明为 synchronized 的成员函数中至多只有一个处于可执行状态（因为至多只有</p><p>一个能够获得该类实例对应的锁），从而有效避免了类成员变量的访问冲突（只要所有可能访问类成员变量的方法均被声明为 synchronized）</p><p>。&nbsp; <br />在 Java 中，不光是类实例，每一个类也对应一把锁，这样我们也可将类的静态成员函数声明为 synchronized ，以控制其对类的静态成</p><p>员变量的访问。&nbsp; <br />synchronized 方法的缺陷：若将一个大的方法声明为synchronized 将会大大影响效率，典型地，若将线程类的方法 run() 声明为</p><p>synchronized ，由于在线程的整个生命期内它一直在运行，因此将导致它对本类任何 synchronized 方法的调用都永远不会成功。当然我们可</p><p>以通过将访问类成员变量的代码放到专门的方法中，将其声明为 synchronized ，并在主方法中调用来解决这一问题，但是 Java 为我们提供</p><p>了更好的解决办法，那就是 synchronized 块。&nbsp; <br />2. synchronized 块：通过 synchronized关键字来声明synchronized 块。语法如下：&nbsp; <br />synchronized(syncObject) {&nbsp; <br />//允许访问控制的代码&nbsp; <br />}&nbsp; <br />synchronized 块是这样一个代码块，其中的代码必须获得对象 syncObject （如前所述，可以是类实例或类）的锁方能执行，具体机</p><p>制同前所述。由于可以针对任意代码块，且可任意指定上锁的对象，故灵活性较高。&nbsp; <br />对synchronized(this)的一些理解&nbsp;&nbsp;&nbsp;&nbsp; <br />一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时，一个时间内只能有一个线程得到执行。另一个线</p><p>程必须等待当前线程执行完这个代码块以后才能执行该代码块。&nbsp; <br />二、然而，当一个线程访问object的一个synchronized(this)同步代码块时，另一个线程仍然可以访问该object中的非synchronized</p><p>(this)同步代码块。&nbsp; <br />三、尤其关键的是，当一个线程访问object的一个synchronized(this)同步代码块时，其他线程对object中所有其它synchronized(this)</p><p>同步代码块的访问将被阻塞。&nbsp; <br />四、第三个例子同样适用其它同步代码块。也就是说，当一个线程访问object的一个synchronized(this)同步代码块时，它就获得了这个</p><p>object的对象锁。结果，其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。&nbsp; <br />五、以上规则对其它对象锁同样适用</p><p><a href="http://hi.baidu.com/sunshibing/blog/item/5235b9b731d48ff430add14a.html">http://hi.baidu.com/sunshibing/blog/item/5235b9b731d48ff430add14a.html</a><br /><strong>java中synchronized用法</strong></p><p>打个比方：一个object就像一个大房子，大门永远打开。房子里有 很多房间（也就是方法）。</p><p>这些房间有上锁的（synchronized方法）， 和不上锁之分（普通方法）。房门口放着一把钥匙（key），这把钥匙可以打开所有上锁的房间。</p><p>另外我把所有想调用该对象方法的线程比喻成想进入这房子某个 房间的人。所有的东西就这么多了，下面我们看看这些东西之间如何作用的。</p><p>在此我们先来明确一下我们的前提条件。该对象至少有一个synchronized方法，否则这个key还有啥意义。当然也就不会有我们的这个主题了。</p><p>一个人想进入某间上了锁的房间，他来到房子门口，看见钥匙在那儿（说明暂时还没有其他人要使用上锁的 房间）。于是他走上去拿到了钥匙</p><p>，并且按照自己 的计划使用那些房间。注意一点，他每次使用完一次上锁的房间后会马上把钥匙还回去。即使他要连续使用两间上锁的房间，</p><p>中间他也要把钥匙还回去，再取回来。</p><p>因此，普通情况下钥匙的使用原则是：&#8220;随用随借，用完即还。&#8221;</p><p>这时其他人可以不受限制的使用那些不上锁的房间，一个人用一间可以，两个人用一间也可以，没限制。但是如果当某个人想要进入上锁的房</p><p>间，他就要跑到大门口去看看了。有钥匙当然拿了就走，没有的话，就只能等了。</p><p>要是很多人在等这把钥匙，等钥匙还回来以后，谁会优先得到钥匙？Not guaranteed。象前面例子里那个想连续使用两个上锁房间的家伙，他</p><p>中间还钥匙的时候如果还有其他人在等钥匙，那么没有任何保证这家伙能再次拿到。 （JAVA规范在很多地方都明确说明不保证，象</p><p>Thread.sleep()休息后多久会返回运行，相同优先权的线程那个首先被执行，当要访问对象的锁被 释放后处于等待池的多个线程哪个会优先得</p><p>到，等等。我想最终的决定权是在JVM，之所以不保证，就是因为JVM在做出上述决定的时候，绝不是简简单单根据 一个条件来做出判断，而是</p><p>根据很多条。而由于判断条件太多，如果说出来可能会影响JAVA的推广，也可能是因为知识产权保护的原因吧。SUN给了个不保证 就混过去了</p><p>。无可厚非。但我相信这些不确定，并非完全不确定。因为计算机这东西本身就是按指令运行的。即使看起来很随机的现象，其实都是有规律</p><p>可寻。学过 计算机的都知道，计算机里随机数的学名是伪随机数，是人运用一定的方法写出来的，看上去随机罢了。另外，或许是因为要想弄</p><p>的确定太费事，也没多大意义，所 以不确定就不确定了吧。）</p><p>再来看看同步代码块。和同步方法有小小的不同。</p><p>1.从尺寸上讲，同步代码块比同步方法小。你可以把同步代码块看成是没上锁房间里的一块用带锁的屏风隔开的空间。</p><p>2.同步代码块还可以人为的指定获得某个其它对象的key。就像是指定用哪一把钥匙才能开这个屏风的锁，你可以用本房的钥匙；你也可以指定</p><p>用另一个房子的钥匙才能开，这样的话，你要跑到另一栋房子那儿把那个钥匙拿来，并用那个房子的钥匙来打开这个房子的带锁的屏风。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 记住你获得的那另一栋房子的钥匙，并不影响其他人进入那栋房子没有锁的房间。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为什么要使用同步代码块呢？我想应该是这样的：首先对程序来讲同步的部分很影响运行效率，而一个方法通常是先创建一些局部变</p><p>量，再对这些变量做一些 操作，如运算，显示等等；而同步所覆盖的代码越多，对效率的影响就越严重。因此我们通常尽量缩小其影响范围。</p><p>如何做？同步代码块。我们只把一个方法中该同 步的地方同步，比如运算。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外，同步代码块可以指定钥匙这一特点有个额外的好处，是可以在一定时期内霸占某个对象的key。还记得前面说过普通情况下钥</p><p>匙的使用原则吗。现在不是普通情况了。你所取得的那把钥匙不是永远不还，而是在退出同步代码块时才还。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还用前面那个想连续用两个上锁房间的家伙打比方。怎样才能在用完一间以后，继续使用另一间呢。用同步代码块吧。先创建另外</p><p>一个线程，做一个同步代码 块，把那个代码块的锁指向这个房子的钥匙。然后启动那个线程。只要你能在进入那个代码块时抓到这房子的钥匙</p><p>，你就可以一直保留到退出那个代码块。也就是说 你甚至可以对本房内所有上锁的房间遍历，甚至再sleep(10*60*1000)，而房门口却还有</p><p>1000个线程在等这把钥匙呢。很过瘾吧。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在此对sleep()方法和钥匙的关联性讲一下。一个线程在拿到key后，且没有完成同步的内容时，如果被强制sleep()了，那key还一</p><p>直在 它那儿。直到它再次运行，做完所有同步内容，才会归还key。记住，那家伙只是干活干累了，去休息一下，他并没干完他要干的事。为</p><p>了避免别人进入那个房间 把里面搞的一团糟，即使在睡觉的时候他也要把那唯一的钥匙戴在身上。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最后，也许有人会问，为什么要一把钥匙通开，而不是一个钥匙一个门呢？我想这纯粹是因为复杂性问题。一个钥匙一个门当然更</p><p>安全，但是会牵扯好多问题。钥匙 的产生，保管，获得，归还等等。其复杂性有可能随同步方法的增加呈几何级数增加，严重影响效率。这也</p><p>算是一个权衡的问题吧。为了增加一点点安全性，导致效 率大大降低，是多么不可取啊。</p><p>synchronized的一个简单例子</p><p>public class TextThread {</p><p>public static void main(String[] args) {&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; TxtThread tt = new TxtThread();&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; new Thread(tt).start();&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; new Thread(tt).start();&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; new Thread(tt).start();&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; new Thread(tt).start();&nbsp;&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp;&nbsp;&nbsp; <br />}</p><p>class TxtThread implements Runnable {&nbsp;&nbsp;&nbsp; <br />int num = 100;&nbsp;&nbsp;&nbsp;&nbsp; <br />String str = new String();</p><p>public void run() {&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; synchronized (str) {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; while (num &gt; 0) {</p><p>&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(1);&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.getMessage();&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(Thread.currentThread().getName()&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + "this is " + num--);&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp;&nbsp;&nbsp; <br />}</p><p>上面的例子中为了制造一个时间差,也就是出错的机会,使用了Thread.sleep(10)</p><p>Java对多线程的支持与同步机制深受大家的喜爱，似乎看起来使用了synchronized关键字就可以轻松地解决多线程共享数据同步问题。到底如</p><p>何？&#8213;&#8213;还得对synchronized关键字的作用进行深入了解才可定论。</p><p>总的说来，synchronized关键字可以作为函数的修饰符，也可作为函数内的语句，也就是平时说的同步方法和同步语句块。如果再细的分类，</p><p>synchronized可作用于instance变量、object reference（对象引用）、static函数和class literals(类名称字面常量)身上。</p><p>在进一步阐述之前，我们需要明确几点：</p><p>A．无论synchronized关键字加在方法上还是对象上，它取得的锁都是对象，而不是把一段代码或函数当作锁&#8213;&#8213;而且同步方法很可能还会被其</p><p>他线程的对象访问。</p><p>B．每个对象只有一个锁（lock）与之相关联。</p><p>C．实现同步是要很大的系统开销作为代价的，甚至可能造成死锁，所以尽量避免无谓的同步控制。</p><p>接着来讨论synchronized用到不同地方对代码产生的影响：</p><p>假设P1、P2是同一个类的不同对象，这个类中定义了以下几种情况的同步块或同步方法，P1、P2就都可以调用它们。</p><p>1． 把synchronized当作函数修饰符时，示例代码如下：</p><p>Public synchronized void methodAAA()</p><p>{</p><p>//&#8230;.</p><p>}</p><p>这也就是同步方法，那这时synchronized锁定的是哪个对象呢？它锁定的是调用这个同步方法对象。也就是说，当一个对象P1在不同的线程中</p><p>执行这个同步方法时，它们之间会形成互斥，达到同步的效果。但是这个对象所属的Class所产生的另一对象P2却可以任意调用这个被加了</p><p>synchronized关键字的方法。</p><p>上边的示例代码等同于如下代码：</p><p>public void methodAAA()</p><p>{</p><p>synchronized (this)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // (1)</p><p>{</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&#8230;..</p><p>}</p><p>}</p><p>(1)处的this指的是什么呢？它指的就是调用这个方法的对象，如P1。可见同步方法实质是将synchronized作用于object reference。&#8213;&#8213;那个</p><p>拿到了P1对象锁的线程，才可以调用P1的同步方法，而对P2而言，P1这个锁与它毫不相干，程序也可能在这种情形下摆脱同步机制的控制，造</p><p>成数据混乱：（</p><p>2．同步块，示例代码如下：</p><p>public void method3(SomeObject so)</p><p>{</p><p>&nbsp;&nbsp;&nbsp; synchronized(so)</p><p>&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&#8230;..&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }</p><p>}</p><p>这时，锁就是so这个对象，谁拿到这个锁谁就可以运行它所控制的那段代码。当有一个明确的对象作为锁时，就可以这样写程序，但当没有明</p><p>确的对象作为锁，只是想让一段代码同步时，可以创建一个特殊的instance变量（它得是一个对象）来充当锁：</p><p>class Foo implements Runnable</p><p>{</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private byte[] lock = new byte[0]; // 特殊的instance变量</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Public void methodA()&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; synchronized(lock) { //&#8230; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&#8230;..</p><p>}</p><p>注：零长度的byte数组对象创建起来将比任何对象都经济&#8213;&#8213;查看编译后的字节码：生成零长度的byte[]对象只需3条操作码，而Object lock</p><p>= new Object()则需要7行操作码。</p><p>3．将synchronized作用于static 函数，示例代码如下：</p><p>Class Foo&nbsp;&nbsp;&nbsp; <br />{</p><p>&nbsp;&nbsp;&nbsp; public synchronized static void methodAAA()&nbsp;&nbsp; // 同步的static 函数&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&#8230;.&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; public void methodBBB()&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; synchronized(Foo.class)&nbsp;&nbsp; // class literal(类名称字面常量)</p><p>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />}</p><p>&nbsp;&nbsp; 代码中的methodBBB()方法是把class literal作为锁的情况，它和同步的static函数产生的效果是一样的，取得的锁很特别，是当前调用这</p><p>个方法的对象所属的类（Class，而不再是由这个Class产生的某个具体对象了）。</p><p>记得在《Effective Java》一书中看到过将 Foo.class和 P1.getClass()用于作同步锁还不一样，不能用P1.getClass()来达到锁这个Class的</p><p>目的。P1指的是由Foo类产生的对象。</p><p>可以推断：如果一个类中定义了一个synchronized的static函数A，也定义了一个synchronized 的instance函数B，那么这个类的同一对象Obj</p><p>在多线程中分别访问A和B两个方法时，不会构成同步，因为它们的锁都不一样。A方法的锁是Obj这个对象，而B的锁是Obj所属的那个Class。</p><p>小结如下：</p><p>搞清楚synchronized锁定的是哪个对象，就能帮助我们设计更安全的多线程程序。</p><p>还有一些技巧可以让我们对共享资源的同步访问更加安全：</p><p>1． 定义private 的instance变量+它的 get方法，而不要定义public/protected的instance变量。如果将变量定义为public，对象在外界可以</p><p>绕过同步方法的控制而直接取得它，并改动它。这也是JavaBean的标准实现方式之一。</p><p>2． 如果instance变量是一个对象，如数组或ArrayList什么的，那上述方法仍然不安全，因为当外界对象通过get方法拿到这个instance对象</p><p>的引用后，又将其指向另一个对象，那么这个private变量也就变了，岂不是很危险。 这个时候就需要将get方法也加上synchronized同步，并</p><p>且，只返回这个private对象的clone()&#8213;&#8213;这样，调用端得到的就是对象副本的引用了</p><img src ="http://www.blogjava.net/japper/aggbug/386537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-08-29 17:47 <a href="http://www.blogjava.net/japper/archive/2012/08/29/386537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse的一些配置及优化</title><link>http://www.blogjava.net/japper/archive/2012/07/20/383573.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Fri, 20 Jul 2012 02:25:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/07/20/383573.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/383573.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/07/20/383573.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/383573.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/383573.html</trackback:ping><description><![CDATA[MyEclipse的基础配置： <br /><br /><br />1. 先安装MyEclipse,安装MyEclipse7.5需要VPN代理，安装过程大概持续10-15分钟，使用VPN测试帐号即可 <br /><br />2. 进行MyEclipse的配置， <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从菜单栏中进入&#8220;Windows --&gt; Preferences&#8221; <br /><br />3. 先要进行JDK的配置， <br />&nbsp;&nbsp;&nbsp; 在左侧栏中选择&#8220;Java --&gt; Installed JREs&#8221;， <br />&nbsp;&nbsp;&nbsp; 按&#8220;Add&#8221;按钮进行添加 <br /><br />4. 在弹出的&#8220;Add JRE&#8221;画面中，选择JRE的目录， <br />&nbsp;&nbsp;&nbsp; 就是选择你所在的JDK的目录，我的为：C:\Program Files\Java\jre6 <br />&nbsp;&nbsp;&nbsp; 在JRE名称一栏中，填下想取的名称，我这里叫&#8220;HiJackson's JRE&#8221;， <br />&nbsp;&nbsp;&nbsp; 然后&#8220;OK&#8221;确定 <br /><br />5. 返回到设置框中，将刚刚配置的JRE选中 <br /><br />6. 将Tomcat Server设为可用，并设置Tomcat的安装目录 <br /><br />7. 在Tomcat的JDK中选择刚刚配置的JDK <br /><br />8. 配置完成了，三个地方可以启动它的服务，根据自己的喜好吧~~~ <br /><br />
<p><br /><br /><br />&nbsp;</p>
<div class="content-other-info">&nbsp;</div>
<h2 class="title content-title">优化MyEclipse：</h2>
<div id="content" class="content text-content clearfix">
<p>1、去除不需要加载的模块 <br /><br />一个系统20%的功能往往能够满足80%的需求，MyEclipse也不例外，我们在大多数时候只需要20%的系统功能，所以可以将一些不使用的模块禁止 加载启动。通过Windows - Preferences打开配置窗口，依次选择左侧的General - Startup and Shutdown，这个时候在右侧就显示出了Eclipse启动时加载的模块，可以根据自己的实际情况去除一些模块。 <br />windows&#8211;&gt;perferences&#8211;&gt;general&#8211;&gt;startup and shutdown <br /><br />关掉没用的启动项： <br /><br />WTP ：一个跟myeclipse差不多的东西，主要差别是 WTP 是免费的，如果使用myeclipse，这个可以取消 <br />Mylyn：组队任务管理工具，类似于 CVS ，以任务为单位管理项目进度，没用到的可以取消 <br />Derby：一种保存成 jar 形式的数据库，我没用到，取消 <br />一大排以 MyEclipse EASIE 打头的启动项：myeclipse 支持的服务器，只选自己用的，其他取消，比如我只选了tomcat6.x <br /><br />2、取消MyEclipse在启动时自动验证项目配置文件 <br /><br />默认情况下MyEclipse在启动的时候会自动验证每个项目的配置文件，这是一个非常耗时的过程， <br />可以在Preferences窗口依次选择 MyEclipse Enterprise Workbench - Validation，然后在右侧的Validator列表中只保留 Manual 项就可以了(Manual全部勾选，Bulid项只留下第一项)。 <br />如果需要验证的时候只需要选中文件，然后右键选择 MyEclipse - Run Validation就可以了。 <br /><br />windows&#8211;&gt;perferences&#8211;&gt;myeclipse&#8211;&gt;validation <br />把 除了manual 下面的全部点掉，build下只留 classpath dependency Validator <br /><br />手工验证方法： <br /><br />在要验证的文件上，单击鼠标右键&#8211;&gt;myeclipse&#8211;&gt;run validation <br /><br /><br />3、去掉拼写检查（如果你觉的有用可以不去） <br /><br />拼写检查会给我们带来不少的麻烦，我们的方法命名都会是单词的缩写，他也会提示有错，所以最好去掉，没有多大的用处： <br />windows&#8211;&gt;perferences&#8211;&gt;general&#8211;&gt;validation-&gt;editors-&gt;Text Editors-&gt;spelling <br /><br />myeclipse 打开 jsp 的默认编辑器不好，会同时打开预览 <br />windows&#8211;&gt;perferences&#8211;&gt;general&#8211;&gt;editors-&gt;file associations, <br /><br />把默认改成 MyEclipse JSP Editor（） <br />原默认的jsp编辑器是 MyEclipse Visual JSP Designer，顾名思义，此编译器是jsp可视化编辑器，对于初学者有很多的帮助， <br />但修改此项的默认编辑器其实可以提高启动速度） <br /><br />4、关闭自动更新 <br /><br />如果是myeclipse7.5： <br /><br />（1）关掉maven自动更新： <br /><br />window-preferences-MyEclipse Enterprise Workbench-Maven4MyEclipse-Maven, <br />关闭所有Download和Update开头的选项，共四项（去掉前面的勾） <br /><br />（2）关闭更新调度：window &#8211;&gt; preferences &#8211;&gt; General &#8211;&gt; Startup and Shutdown &#8211;&gt; Automatic Updates Scheduler（去掉前面的勾） <br /><br />（3）window &#8211;&gt; preferences &#8211;&gt;Myeclipse Dashboard,关闭Show&#8230;&#8230;on start <br /><br />5、加大JVM的非堆内存 <br /><br />打开 myeclipse.ini <br />-startup <br />../Common\plugins\org.eclipse.equinox.launcher_1.0.101.R34x_v20081125.jar <br />--launcher.library <br />../Common\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731 <br />-clean <br />-configuration <br />configuration <br />-vm <br />C:\Users\lenovo\AppData\Local\Genuitec\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\bin\client\jvm.dll <br />-vmargs <br />-Xmx384m <br />-XX:MaxPermSize=384m <br />-XX:ReservedCodeCacheSize=96m <br /><br />以上是我的myeclipse.ini，需要修改是-Xmx，-XX:MaxPermSize，-XX:ReservedCodeCacheSize， <br />将这三项的值调大，但并不是越大越好，曾经在相同的条件下做过测试（内存2GB），-Xmx，-XX:MaxPermSize的值为384m时比512m时要快（视具体的计算机而定）， <br />-Xmx，-XX:MaxPermSize的值设为同样大小且两者之和不能超出你的计算机本身的内存大小 <br /><br />6、window-preferences-MyEclipse Enterprise Workbench-Maven4MyEclipse-Maven，将Maven JDK改为电脑上安装的JDK，即不使用myeclipse提高的JDK <br />登记add按钮，选择你的电脑上的JDK即可（注意：不是JRE，我的值为：Java6.014） <br /><br />7、window-preferences-MyEclipse Enterprise Workbench-Matisse4Myeclipse/Swing,将Design-time information(dt.jar) location 改用电脑安装的JDK的dt.jar <br />（即不使用myeclipse提供的dt.jar，我的值为：C:\Java6.014\lib\dt.jar） <br /></p></div>
<p>经过以上的优化，myeclipse的启动时间可以减少2/3，Tomcat的启动速度可以减少1/2(视具体情况而定)， <br /><br />特别6，7两项的优化效果最明显， <br /><br />如果只进行前5项，优化的效果有限，短期内确实可以提高启动速度，但是大概半个月后又会变的很慢（具体原因不明） <br />另外，使用myeclipse一段时间后，就会产生很多项目，即使这些项目是处于关闭状态，myecliose在启动时也会加载这些项目，这个过程会花费很多时间，所以，建议将不用的项目都delete掉，用的时候再import </p>
<p>在用[MyEclipse] 写代码很容易卡死机，尤其是在对JSP文件的﹤%%﹥之间写代码的时候，只要一弹出智能提示就立刻卡死，程序失去响应，我以为是MyEclipse版本的问题，结果换了6.0版-﹥6.5版-﹥7.0版全都一样，难道是我机子的问题？可是还原系统后用还是一样的结果。</p>
<p>百度一下你就知道，但是百度了N下才找到了一些门路，搜索也讲究技巧，换了N个[关键字] 组合才搜出来。说是MyEclipse在智能提示的时候自动访问网络上sun公司的最新API文档，只要关闭掉网络连接就可以了。我试了试断开网络然后在用MyEclipse写代码，结果还真的搞定了。可是，我总不能因为个这就不上网了吧，继续接着百度，找到了两全其美的解决方法。</p>
<p>在自己创建的工程名上右键，选择Properties--﹥在打开的窗口中点击Java Build Path--﹥单击Libraries选项卡，找到如图中标记2所示的地方--﹥选择右边的Remove更改成如标记1所示的样子--﹥点击OK。</p>
<p><br /></p><img src ="http://www.blogjava.net/japper/aggbug/383573.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-07-20 10:25 <a href="http://www.blogjava.net/japper/archive/2012/07/20/383573.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用jxl导出大数据量EXCEL时内存溢出的解决办法</title><link>http://www.blogjava.net/japper/archive/2012/07/16/383208.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Mon, 16 Jul 2012 03:48:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/07/16/383208.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/383208.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/07/16/383208.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/383208.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/383208.html</trackback:ping><description><![CDATA[<div>1、通过jx1最新版本的采用临时文件写入EXCEL功能，设定临时文件的位置，可以有效的避免内存溢出：
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wbSetting.setUseTemporaryFileDuringWrite(true);&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wbSetting.setTemporaryFileDuringWriteDirectory(new&nbsp;File(excelPath));//临时文件夹的位置<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div><br /><br />2、EXCEL获取的list集合先读取数据总行数，再通过ROWNUM进行控制，设定每次读取多少行数据，比如一个List设定为50000；
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WorkbookSettings&nbsp;wbSetting&nbsp;=&nbsp;new&nbsp;WorkbookSettings();&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wbSetting.setUseTemporaryFileDuringWrite(true);&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wbSetting.setTemporaryFileDuringWriteDirectory(new&nbsp;File(excelPath));//临时文件夹的位置<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;workbook&nbsp;=&nbsp;Workbook.createWorkbook(new&nbsp;File(fullPath),wbSetting);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;returnCount=0;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(null!=pager)<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnCount&nbsp;=&nbsp;BrasDatabase.getReturnCount(pager.getStartTime(),<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pager.getEndTime(),&nbsp;pager);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(returnCount&nbsp;&gt;&nbsp;0)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pager.setPageSize(50000);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pager.setTotalRows(returnCount);//&nbsp;获取总行数<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pager.setNewTotalPages(pager.getTotalRows());&nbsp;//&nbsp;总页数<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">=&nbsp;pager</span><span style="color: #ff0000">.getTotalPages();&nbsp;i++)&nbsp;{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pager.setCurrentPage(i);&nbsp;//&nbsp;当前页面d<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;BrasAuth</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;list&nbsp;=&nbsp;BrasDatabase<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getBrasAuthResultByIpToExcelList(pager<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getStartTime(),&nbsp;pager.getEndTime(),&nbsp;pager);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.createExcel(list,excelFilePath);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.clear();<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div><br /><br /><br />3、在写入EXCEL的时候，将读取的LIST分割，每50000条数据生成一个EXCEL的sheet（一个sheet最多能存储60000多行数据），再写入，写入的时候，如果设置了采用临时文件写入的话，jx1会自动采用生成临时文件的方式写入EXCEL：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=1;i</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">=list</span><span style="color: #ff0000">.size();i++)<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i%50000</span><span style="color: #0000ff">==0)<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sheetName</span><span style="color: #0000ff">=format.format(new&nbsp;</span><span style="color: #ff0000">Date());<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toExcel(list.subList(reNum,&nbsp;i),sheetName);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reNum</span><span style="color: #0000ff">=i;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">}<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div></div><img src ="http://www.blogjava.net/japper/aggbug/383208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-07-16 11:48 <a href="http://www.blogjava.net/japper/archive/2012/07/16/383208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个简单的分页展示系统优化总结</title><link>http://www.blogjava.net/japper/archive/2012/07/16/383207.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Mon, 16 Jul 2012 03:30:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/07/16/383207.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/383207.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/07/16/383207.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/383207.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/383207.html</trackback:ping><description><![CDATA[<div>由于开发经验较少，数据量较大（千万级，日有40万条数据左右），导致这个分页jsp页面做的效率非常低，通过一系列的优化后，效果明显得到了提高，记录一下笔记：<br />1、分页获取的list对象集合由于没有预料到数据量的大小，是直接一次性读取然后展示到前台的，导致查询展示效率非常低：<br />更改SQL语句,改为按照当前需要展示的数据行数，通过SQL的ROWNUM来进行控制查询的数据量大小，（插入数据时，打开一个数据库连接即一次性插入100条数据（可以配置的模式））： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />SELECT&nbsp;BRAS_ADDRESS,&nbsp;APPLYTIMES,&nbsp;ALLFAILTIMES,SUCCESSRATE,&nbsp;RN&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />FROM&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />(SELECT&nbsp;BRAS_ADDRESS,&nbsp;APPLYTIMES,&nbsp;ALLFAILTIMES,SUCCESSRATE,&nbsp;ROWNUM&nbsp;AS&nbsp;RN&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />FROM&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />(SELECT&nbsp;BRAS_ADDRESS,&nbsp;APPLYTIMES,&nbsp;ALLFAILTIMES,</span><span style="color: #000000">1</span><span style="color: #000000">-</span><span style="color: #000000">ALLFAILTIMES</span><span style="color: #000000">/</span><span style="color: #000000">DECODE(APPLYTIMES,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">,APPLYTIMES)&nbsp;AS&nbsp;SUCCESSRATE&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />FROM&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />(SELECT&nbsp;BRAS_ADDRESS,&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />SUM(DECODE(AUTNCOUNTTYPE,</span><span style="color: #000000">'</span><span style="color: #000000">REQ_CHALLENGE</span><span style="color: #000000">'</span><span style="color: #000000">,APPLYTIMES,</span><span style="color: #000000">0</span><span style="color: #000000">))&nbsp;AS&nbsp;APPLYTIMES,&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />SUM(DECODE(AUTNCOUNTTYPE,</span><span style="color: #000000">'</span><span style="color: #000000">ACK_CHALLENGE</span><span style="color: #000000">'</span><span style="color: #000000">,APPLYTIMES,</span><span style="color: #000000">'</span><span style="color: #000000">ACK_AUTH</span><span style="color: #000000">'</span><span style="color: #000000">,APPLYTIMES,</span><span style="color: #000000">'</span><span style="color: #000000">REQ_LOGOUT</span><span style="color: #000000">'</span><span style="color: #000000">,APPLYTIMES,</span><span style="color: #000000">0</span><span style="color: #000000">))&nbsp;AS&nbsp;ALLFAILTIMES&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />FROM&nbsp;T_BRAS_XXXX&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />WHERE&nbsp;READTIME&nbsp;between&nbsp;TO_DATE(</span><span style="color: #000000">'</span><span style="color: #000000">2012-06-01&nbsp;00:00:00</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">yyyy-MM-dd&nbsp;HH24:mi:ss</span><span style="color: #000000">'</span><span style="color: #000000">)&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />and&nbsp;TO_DATE(</span><span style="color: #000000">'</span><span style="color: #000000">2012-06-12&nbsp;23:59:59</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">yyyy-MM-dd&nbsp;HH24:mi:ss</span><span style="color: #000000">'</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />GROUP&nbsp;BY&nbsp;BRAS_ADDRESS&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />ORDER&nbsp;BY&nbsp;SUCCESSRATE<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />)&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />WHERE&nbsp;&nbsp;ROWNUM&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">180</span><span style="color: #000000">&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />WHERE&nbsp;RN&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">165</span><span style="color: #000000">&nbsp;</span></div><br />2、建立索引，建立索引的字段不能使用函数避免索引失效；<br />3、建立分区表，将间隔5天的数据放在一个表中：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">----------------------</span><span style="color: #000000">删除原表，新建分区表<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">--</span><span style="color: #000000">删除表<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />drop&nbsp;table&nbsp;T_BRAS_XXXX;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />commit;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">--</span><span style="color: #000000">创建分区表：利用Oracle11g&nbsp;INTERVAL进行分区的方法<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />create&nbsp;table&nbsp;T_BRAS_XXXX<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />(<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />BRAS_XXXX_ID&nbsp;integer&nbsp;NOT&nbsp;NULL&nbsp;PRIMARY&nbsp;KEY,<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />BRAS_XXXX&nbsp;VARCHAR2(</span><span style="color: #000000">64</span><span style="color: #000000">),<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />AUTNCOUNTTYPE&nbsp;VARCHAR2(</span><span style="color: #000000">50</span><span style="color: #000000">),<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />SUCCESSTIMES&nbsp;NUMBER,<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />APPLYTIMES&nbsp;NUMBER,<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />INTERVALTIME&nbsp;NUMBER,<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />UPDATETIME&nbsp;DATE&nbsp;&nbsp;DEFAULT&nbsp;SYSDATE,<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />READTIME&nbsp;DATE<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />PARTITION&nbsp;BY&nbsp;RANGE&nbsp;(READTIME)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />INTERVAL&nbsp;(NUMTODSINTERVAL(</span><span style="color: #000000">5</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">day</span><span style="color: #000000">'</span><span style="color: #000000">))<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />(<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;PARTITION&nbsp;T_BRAS_XXXX_PART01&nbsp;VALUES&nbsp;LESS&nbsp;THAN&nbsp;(TO_DATE(</span><span style="color: #000000">'</span><span style="color: #000000">2012-07-01&nbsp;00:00:00</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">yyyy-MM-dd&nbsp;HH24:mi:ss</span><span style="color: #000000">'</span><span style="color: #000000">))<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">--</span><span style="color: #000000">保留原来创建的BRAS_XXXX_ID自增序列<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">--</span><span style="color: #000000">创建索引<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />create&nbsp;index&nbsp;idx_t_bras_XXXX&nbsp;on&nbsp;t_bras_XXXX(readtime,bras_address);<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />commit;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">--</span><span style="color: #000000">查看分区是否成功：<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />select&nbsp;table_name,partition_name&nbsp;from&nbsp;user_tab_partitions&nbsp;where&nbsp;table_name</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">T_BRAS_XXXX</span><span style="color: #000000">'</span><span style="color: #000000">;</span></div><br /></div><img src ="http://www.blogjava.net/japper/aggbug/383207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-07-16 11:30 <a href="http://www.blogjava.net/japper/archive/2012/07/16/383207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>测试JAVA中SELECT COUNT(*) FROM XXX得到的ResultSet行数</title><link>http://www.blogjava.net/japper/archive/2012/06/07/380202.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Thu, 07 Jun 2012 03:24:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/06/07/380202.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/380202.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/06/07/380202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/380202.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/380202.html</trackback:ping><description><![CDATA[<div>初学的知识，怕忘记了，记录下： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img id="Codehighlighter1_1_41_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1_41_Open_Text.style.display='none'; Codehighlighter1_1_41_Closed_Image.style.display='inline'; Codehighlighter1_1_41_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_1_41_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1_41_Closed_Text.style.display='none'; Codehighlighter1_1_41_Open_Image.style.display='inline'; Codehighlighter1_1_41_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1_41_Closed_Text">/**&nbsp;*/</span><span id="Codehighlighter1_1_41_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;测试SELECT&nbsp;COUNT(*)返回int类型的数据<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&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">int</span><span style="color: #000000">&nbsp;testRturnNumber()<br /><img id="Codehighlighter1_88_765_Open_Image" onclick="this.style.display='none'; Codehighlighter1_88_765_Open_Text.style.display='none'; Codehighlighter1_88_765_Closed_Image.style.display='inline'; Codehighlighter1_88_765_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_88_765_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_88_765_Closed_Text.style.display='none'; Codehighlighter1_88_765_Open_Image.style.display='inline'; Codehighlighter1_88_765_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_88_765_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_88_765_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;number</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;number1</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DBUtils.getConn();<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement&nbsp;stmt</span><span style="color: #000000">=</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br /><img id="Codehighlighter1_205_520_Open_Image" onclick="this.style.display='none'; Codehighlighter1_205_520_Open_Text.style.display='none'; Codehighlighter1_205_520_Closed_Image.style.display='inline'; Codehighlighter1_205_520_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_205_520_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_205_520_Closed_Text.style.display='none'; Codehighlighter1_205_520_Open_Image.style.display='inline'; Codehighlighter1_205_520_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_205_520_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_205_520_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;conn.createStatement();<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;strSQL</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">select&nbsp;count(*)as&nbsp;num&nbsp;from&nbsp;t_bras_authinfo</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet&nbsp;rs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;stmt.executeQuery(strSQL);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">null</span><span style="color: #000000">!=</span><span style="color: #000000">rs)<br /><img id="Codehighlighter1_385_516_Open_Image" onclick="this.style.display='none'; Codehighlighter1_385_516_Open_Text.style.display='none'; Codehighlighter1_385_516_Closed_Image.style.display='inline'; Codehighlighter1_385_516_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_385_516_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_385_516_Closed_Text.style.display='none'; Codehighlighter1_385_516_Open_Image.style.display='inline'; Codehighlighter1_385_516_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_385_516_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_385_516_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(rs.next())<br /><img id="Codehighlighter1_416_509_Open_Image" onclick="this.style.display='none'; Codehighlighter1_416_509_Open_Text.style.display='none'; Codehighlighter1_416_509_Closed_Image.style.display='inline'; Codehighlighter1_416_509_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_416_509_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_416_509_Closed_Text.style.display='none'; Codehighlighter1_416_509_Open_Image.style.display='inline'; Codehighlighter1_416_509_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_416_509_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_416_509_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number</span><span style="color: #000000">=</span><span style="color: #000000">rs.getInt(</span><span style="color: #000000">"</span><span style="color: #000000">num</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 /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number1</span><span style="color: #000000">=</span><span style="color: #000000">rs.getInt(</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">通过索引返回行数</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">(Exception&nbsp;e)<br /><img id="Codehighlighter1_551_685_Open_Image" onclick="this.style.display='none'; Codehighlighter1_551_685_Open_Text.style.display='none'; Codehighlighter1_551_685_Closed_Image.style.display='inline'; Codehighlighter1_551_685_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_551_685_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_551_685_Closed_Text.style.display='none'; Codehighlighter1_551_685_Open_Image.style.display='inline'; Codehighlighter1_551_685_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_551_685_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_551_685_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger4sdk<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.debug(</span><span style="color: #000000">"</span><span style="color: #000000">[delLastMonthData]&nbsp;delete&nbsp;t_bras_authinfo&nbsp;faile&nbsp;:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">e.getMessage());&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;number;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">finally</span><span style="color: #000000"><br /><img id="Codehighlighter1_699_739_Open_Image" onclick="this.style.display='none'; Codehighlighter1_699_739_Open_Text.style.display='none'; Codehighlighter1_699_739_Closed_Image.style.display='inline'; Codehighlighter1_699_739_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_699_739_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_699_739_Closed_Text.style.display='none'; Codehighlighter1_699_739_Open_Image.style.display='inline'; Codehighlighter1_699_739_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_699_739_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_699_739_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBUtils.close(conn,&nbsp;stmt,&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">) ;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;number;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div><br />在主方法中执行：<br />&nbsp;&nbsp;&nbsp;BrasDatabase bd=new BrasDatabase();<br />&nbsp;&nbsp;&nbsp;int returnNum=bd.testRturnNumber();<br />&nbsp;&nbsp;&nbsp;System.out.println("返回总行数："+returnNum);<br /><br />以上两种方式都可以正常返回行数。<br /></div><img src ="http://www.blogjava.net/japper/aggbug/380202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-06-07 11:24 <a href="http://www.blogjava.net/japper/archive/2012/06/07/380202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>来点HTML基础-HTML表单(Forms)属性及用法</title><link>http://www.blogjava.net/japper/archive/2012/06/07/380194.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Thu, 07 Jun 2012 01:29:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/06/07/380194.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/380194.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/06/07/380194.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/380194.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/380194.html</trackback:ping><description><![CDATA[<p>HTML表单(Form)是HTML的一个重要部分，主要用于采集和提交用户输入的信息。</p>
<p>举个简单的例子，一个让用户输入姓名的HTML表单(Form)。示例代码如下：</p>
<p>&lt;form action="<a href="http://www.blabla.cn/asdocs/html_tutorials/yourname.asp">http://www.blabla.cn/asdocs/html_tutorials/yourname.asp</a>" method="get"&gt;</p>
<p>请输入你的姓名：</p>
<p>&lt;input type="text" name="yourname"&gt;</p>
<p>&lt;input type="submit" value="提交"&gt;</p>
<p>&lt;/form&gt;</p>
<p>学习HTML表单(Form)最关键要掌握的有三个要点：</p>
<p>表单控件(Form Controls) <br />Action <br />Method<br />先说表单控件(Form Controls)，通过HTML表单的各种控件，用户可以输入文字信息，或者从选项中选择，以及做提交的操作。比如上面的例句里，input type= "text"就是一个表单控件，表示一个单行输入框。</p>
<p>用户填入表单的信息总是需要程序来进行处理，表单里的action就指明了处理表单信息的文件。比如上面例句里的<a href="http://www.linkzj.cn/asdocs/html_tutorials/yourname.asp">http://www.linkzj.cn/asdocs/html_tutorials/yourname.asp</a>。</p>
<p>至于method，表示了发送表单信息的方式。method有两个值：get和post。get的方式是将表单控件的name/value信息经过编码之后，通过URL发送(你可以在地址栏里看到)。而post则将表单的内容通过http发送，你在地址栏看不到表单的提交信息。那什么时候用get，什么时候用post呢？一般是这样来判断的，如果只是为取得和显示数据，用get；一旦涉及数据的保存和更新，那么建议用post。</p>
<p>HTML表单(Form)常用控件(Controls)<br />HTML表单(Form)常用控件有：</p>
<p><strong>input type="text" 单行文本输入框 <br />input type="submit" 将表单(Form)里的信息提交给表单里action所指向的文件 <br />input type="checkbox" 复选框 <br />input type="radio" 单选框 <br />select 下拉框 <br />textArea 多行文本输入框 <br />input type="password" 密码输入框(输入的文字用*表示) <br />表单控件(Form Control)：单行文本输入框(input type="text")<br />单行文本输入框允许用户输入一些简短的单行信息，比如用户姓名</strong>。例句如下：</p>
<p>&lt;input type="text" name="yourname"&gt;</p>
<p>表单控件(Form Control)：<br /><strong>复选框(input type="checkbox")<br /></strong>复选框允许用户在一组选项里，选择多个。示例代码：</p>
<p>&lt;input type="checkbox" name="fruit" value ="apple"&gt;苹果&lt;br&gt;</p>
<p>&lt;input type="checkbox" name="fruit" value ="orange"&gt;桔子&lt;br&gt;</p>
<p>&lt;input type="checkbox" name="fruit" value ="mango"&gt;芒果&lt;br&gt;</p>
<p>用checked表示缺省已选的选项。</p>
<p>&lt;input type="checkbox" name="fruit" value ="orange" checked&gt;桔子&lt;br&gt;</p>
<p>表单控件(Form Control)：单选框(input type="radio")<br />使用单选框，让用户在一组选项里只能选择一个。示例代码：</p>
<p>&lt;input type="radio" name="fruit" value = "Apple"&gt;苹果&lt;br&gt;</p>
<p>&lt;input type="radio" name="fruit" value = "Orange"&gt;桔子&lt;br&gt;</p>
<p>&lt;input type="radio" name="fruit" value = "Mango"&gt;芒果&lt;br&gt;</p>
<p>用checked表示缺省已选的选项。</p>
<p>&lt;input type="radio" name="fruit" value = "Orange" checked&gt;桔子&lt;br&gt;</p>
<p>表单控件(Form Control)：下拉框(select)<br />下拉框(Select)既可以用做单选，也可以用做复选。单选例句如下：</p>
<p>&lt;select name="fruit" &gt;</p>
<p>&lt;option value="apple"&gt;苹果</p>
<p>&lt;option value="orange"&gt;桔子</p>
<p>&lt;option value="mango"&gt;芒果</p>
<p>&lt;/select&gt;</p>
<p>如果要变成复选，加muiltiple即可。用户用Ctrl来实现多选。例句：</p>
<p>&lt;select name="fruit" multiple&gt;</p>
<p>用户还可以用size属性来改变下拉框(Select)的大小。</p>
<p>表单控件(Form Control)：多行输入框(textarea)<br />多行输入框(textarea)主要用于输入较长的文本信息。例句如下：</p>
<p>&lt;textarea name="yoursuggest" cols ="50" rows = "3"&gt;&lt;/textarea&gt;</p>
<p>其中cols表示textarea的宽度，rows表示textarea的高度。</p>
<p>表单控件(Form Control)：密码输入框(input type="password")<br />密码输入框(input type="password")主要用于一些保密信息的输入，比如密码。因为用户输入的时候，显示的不是输入的内容，而是黑点符号。。例句如下：</p>
<p>&lt;input type="password" name="yourpw"&gt;</p>
<p>表单控件(Form Control)：提交(input type="submit")<br />通过提交(input type=submit)可以将表单(Form)里的信息提交给表单里action所指向的文件。例句如下：</p>
<p>&lt;input type="submit" value="提交"&gt;</p>
<p>表单控件(Form Control)：图片提交(input type="image")<br />input type=image 相当于 input type=submit，不同的是，input type=image 以一个图片作为表单的提交按钮，其中 src 属性表示图片的路径。</p>
<p>&lt;input type="image" src ="<a href="http://www.blabla.cn/images/icons/go.gif">http://www.blabla.cn/images/icons/go.gif</a>"&nbsp; alt = "提交" NAME="imgsubmit"&gt;</p> <img src ="http://www.blogjava.net/japper/aggbug/380194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-06-07 09:29 <a href="http://www.blogjava.net/japper/archive/2012/06/07/380194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GET和POST两种提交表单的方式说明</title><link>http://www.blogjava.net/japper/archive/2012/06/06/380158.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Wed, 06 Jun 2012 09:09:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/06/06/380158.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/380158.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/06/06/380158.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/380158.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/380158.html</trackback:ping><description><![CDATA[<p>1.Get方式 <br />这种方式是最简单的参数传递方式。例如:<br /><a href="http://www.javaweb.cc/get.do?a=3&amp;b=5&amp;c=7">http://www.javaweb.cc/get.do?a=3&amp;b=5&amp;c=7</a></p>
<p>这个url中，a、b和c是url参数，具体的说是参数名，与之用&#8220;=&#8221;隔开的是对应的参数值。也就是说参数a的值为3、参数b的值为5、参数c的值为7。get.do是请求地址，紧跟这个地址的参数a需要用&#8220;?&#8221;作为分隔符，其余参数用&#8220;&amp;&#8221;做分隔符。</p>
<p>这种get请求发起后，服务器端可以通过request.getParameter()方法来获得参数值。如要获得参数a的值可以通过request.getParameter("a");</p>
<p><br />2.Post方式<br />相比get方式，post方式更为隐蔽。例如：<a href="http://www.javaweb.cc/post.do">http://www.javaweb.cc/post.do</a> <br />在这个url中，你看不到任何参数，真正的参数隐藏在Http请求的数据体中。如果了解网络监听的话，就会对这一点深有体会。 <br />我们举一个简单的例子：通过表单做登录操作。 <br />我们简化一个登录表单：</p>
<p>&lt;form action="login.do" method="post"&gt;<br />&lt;ul&gt;<br />&lt;li&gt;&lt;label for="username"&gt;用户名&lt;/label&gt;&lt;input id="username" name="username" type="text" /&gt;&lt;/li&gt;<br />&lt;li&gt;&lt;label for="password"&gt;密码&lt;/label&gt;&lt;input id="password" type="password" /&gt;&lt;/li&gt;<br />&lt;li&gt;&lt;label&gt;&lt;input type="submit" value="登录" /&gt; &lt;input<br />type="reset" value="重置" /&gt;&lt;/label&gt;&lt;/li&gt;<br />&lt;/ul&gt;<br />&lt;/form&gt;<br />表单中有2个字段，用户名（username）和密码（password） <br />注意form标签中的method参数值是post！</p>
<p>即便是表单，在服务器端仍然可以通过request.getParameter()方法来获得参数值。 <br />Post方式，其实是将表单字段和经过编码的字段值经过组合以数据体的方式做了参数传递。</p>
<p>经过一番阐述，相信大家对两种网络参数传递方式都有所了解了。 <br />Get方式比较简单，通过构建一个简单HttpURLConnection就可以获得，我们暂且不说。 <br />我们主要来描述一下如何通过java代码构建一个表单提交。 <br />仔细研究表单提交时所对应的http数据体，发现其表单字段是以如下方式构建的：</p>
<p>arg0=urlencode(value0)&amp;arg1=urlencode(value1)<br />当然，尤其要注意字段名，参数名只不能使用中文这类字符。 <br />3、通过httpclient来模拟POST提交表单：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Random;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.ArrayList;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.List;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.http.HttpEntity;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.http.HttpResponse;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.http.NameValuePair;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.http.client.entity.UrlEncodedFormEntity;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.http.client.methods.HttpGet;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.http.client.methods.HttpPost;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.http.cookie.Cookie;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.http.impl.client.DefaultHttpClient;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.http.message.BasicNameValuePair;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.http.protocol.HTTP;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.http.util.EntityUtils;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br /><img id="Codehighlighter1_564_629_Open_Image" onclick="this.style.display='none'; Codehighlighter1_564_629_Open_Text.style.display='none'; Codehighlighter1_564_629_Closed_Image.style.display='inline'; Codehighlighter1_564_629_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_564_629_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_564_629_Closed_Text.style.display='none'; Codehighlighter1_564_629_Open_Image.style.display='inline'; Codehighlighter1_564_629_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_564_629_Closed_Text">/**&nbsp;*/</span><span id="Codehighlighter1_564_629_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;*&nbsp;Example&nbsp;how&nbsp;to&nbsp;use&nbsp;multipart/form&nbsp;encoded&nbsp;POST&nbsp;request.<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_668_2889_Open_Image" onclick="this.style.display='none'; Codehighlighter1_668_2889_Open_Text.style.display='none'; Codehighlighter1_668_2889_Closed_Image.style.display='inline'; Codehighlighter1_668_2889_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_668_2889_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_668_2889_Closed_Text.style.display='none'; Codehighlighter1_668_2889_Open_Image.style.display='inline'; Codehighlighter1_668_2889_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ClientMultipartFormPost&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_668_2889_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_668_2889_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&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;ExecuClient(String&nbsp;userName,&nbsp;String&nbsp;wlanuserip2,<br /><img id="Codehighlighter1_780_2888_Open_Image" onclick="this.style.display='none'; Codehighlighter1_780_2888_Open_Text.style.display='none'; Codehighlighter1_780_2888_Closed_Image.style.display='inline'; Codehighlighter1_780_2888_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_780_2888_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_780_2888_Closed_Text.style.display='none'; Codehighlighter1_780_2888_Open_Image.style.display='inline'; Codehighlighter1_780_2888_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;wlanacip2)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_780_2888_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_780_2888_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultHttpClient&nbsp;httpclient&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DefaultHttpClient();<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;a1</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://172.21.16.38:8080/bpss/jsp/do_login.jsp</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img id="Codehighlighter1_908_2721_Open_Image" onclick="this.style.display='none'; Codehighlighter1_908_2721_Open_Text.style.display='none'; Codehighlighter1_908_2721_Closed_Image.style.display='inline'; Codehighlighter1_908_2721_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_908_2721_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_908_2721_Closed_Text.style.display='none'; Codehighlighter1_908_2721_Open_Image.style.display='inline'; Codehighlighter1_908_2721_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_908_2721_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_908_2721_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpGet&nbsp;httpget&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HttpGet(a1);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpResponse&nbsp;response&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;httpclient.execute(httpget);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpEntity&nbsp;entity&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;response.getEntity();<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&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">Login&nbsp;form&nbsp;get:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;response.getStatusLine());<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EntityUtils.consume(entity);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">这里需要生成并传递一个COOKIE过去</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&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">Initial&nbsp;set&nbsp;of&nbsp;cookies:</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">Cookie</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;cookies&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;httpclient.getCookieStore().getCookies();<br /><img id="Codehighlighter1_1356_1414_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1356_1414_Open_Text.style.display='none'; Codehighlighter1_1356_1414_Closed_Image.style.display='inline'; Codehighlighter1_1356_1414_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1356_1414_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1356_1414_Closed_Text.style.display='none'; Codehighlighter1_1356_1414_Open_Image.style.display='inline'; Codehighlighter1_1356_1414_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(cookies.isEmpty())&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1356_1414_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1356_1414_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&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">None</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img id="Codehighlighter1_1421_1586_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1421_1586_Open_Text.style.display='none'; Codehighlighter1_1421_1586_Closed_Image.style.display='inline'; Codehighlighter1_1421_1586_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1421_1586_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1421_1586_Closed_Text.style.display='none'; Codehighlighter1_1421_1586_Open_Image.style.display='inline'; Codehighlighter1_1421_1586_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1421_1586_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1421_1586_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_1480_1572_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1480_1572_Open_Text.style.display='none'; Codehighlighter1_1480_1572_Closed_Image.style.display='inline'; Codehighlighter1_1480_1572_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1480_1572_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1480_1572_Closed_Text.style.display='none'; Codehighlighter1_1480_1572_Open_Image.style.display='inline'; Codehighlighter1_1480_1572_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;cookies.size();&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1480_1572_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1480_1572_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">-&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;cookies.get(i).toString());<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpPost&nbsp;httppost&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HttpPost(a1);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">NameValuePair</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;nvps&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList</span><span style="color: #000000">&lt;</span><span style="color: #000000">NameValuePair</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BasicNameValuePair(</span><span style="color: #000000">"</span><span style="color: #000000">local</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">zh_CN</span><span style="color: #000000">"</span><span style="color: #000000">));<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BasicNameValuePair(</span><span style="color: #000000">"</span><span style="color: #000000">USER</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;userName));<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BasicNameValuePair(</span><span style="color: #000000">"</span><span style="color: #000000">PWD</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">123456</span><span style="color: #000000">"</span><span style="color: #000000">));<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BasicNameValuePair(</span><span style="color: #000000">"</span><span style="color: #000000">pwdtype</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">1</span><span style="color: #000000">"</span><span style="color: #000000">));<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BasicNameValuePair(</span><span style="color: #000000">"</span><span style="color: #000000">actiontype</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">LOGIN</span><span style="color: #000000">"</span><span style="color: #000000">));<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nvps.add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BasicNameValuePair(</span><span style="color: #000000">"</span><span style="color: #000000">logonsessid</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">""</span><span style="color: #000000">));<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httppost.setEntity(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;UrlEncodedFormEntity(nvps,&nbsp;HTTP.UTF_8));<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;httpclient.execute(httppost);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entity&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;response.getEntity();<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&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">测试地址:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;a1);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&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">Login&nbsp;form&nbsp;get:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;response.getStatusLine());<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EntityUtils.consume(entity);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">读出COOKIE信息</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&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">Post&nbsp;logon&nbsp;cookies:</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookies&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;httpclient.getCookieStore().getCookies();<br /><img id="Codehighlighter1_2486_2544_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2486_2544_Open_Text.style.display='none'; Codehighlighter1_2486_2544_Closed_Image.style.display='inline'; Codehighlighter1_2486_2544_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_2486_2544_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2486_2544_Closed_Text.style.display='none'; Codehighlighter1_2486_2544_Open_Image.style.display='inline'; Codehighlighter1_2486_2544_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(cookies.isEmpty())&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2486_2544_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2486_2544_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&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">None</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img id="Codehighlighter1_2551_2716_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2551_2716_Open_Text.style.display='none'; Codehighlighter1_2551_2716_Closed_Image.style.display='inline'; Codehighlighter1_2551_2716_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_2551_2716_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2551_2716_Closed_Text.style.display='none'; Codehighlighter1_2551_2716_Open_Image.style.display='inline'; Codehighlighter1_2551_2716_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2551_2716_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2551_2716_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_2610_2702_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2610_2702_Open_Text.style.display='none'; Codehighlighter1_2610_2702_Closed_Image.style.display='inline'; Codehighlighter1_2610_2702_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_2610_2702_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2610_2702_Closed_Text.style.display='none'; Codehighlighter1_2610_2702_Open_Image.style.display='inline'; Codehighlighter1_2610_2702_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;cookies.size();&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2610_2702_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2610_2702_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">-&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;cookies.get(i).toString());<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img id="Codehighlighter1_2731_2885_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2731_2885_Open_Text.style.display='none'; Codehighlighter1_2731_2885_Closed_Image.style.display='inline'; Codehighlighter1_2731_2885_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_2731_2885_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2731_2885_Closed_Text.style.display='none'; Codehighlighter1_2731_2885_Open_Image.style.display='inline'; Codehighlighter1_2731_2885_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">finally</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2731_2885_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2731_2885_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_2740_2804_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2740_2804_Open_Text.style.display='none'; Codehighlighter1_2740_2804_Closed_Image.style.display='inline'; Codehighlighter1_2740_2804_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_2740_2804_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2740_2804_Closed_Text.style.display='none'; Codehighlighter1_2740_2804_Open_Image.style.display='inline'; Codehighlighter1_2740_2804_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2740_2804_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2740_2804_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpclient.getConnectionManager().shutdown();</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;总是关闭连接</span><span style="color: #008000"><br /><img id="Codehighlighter1_2831_2881_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2831_2881_Open_Text.style.display='none'; Codehighlighter1_2831_2881_Closed_Image.style.display='inline'; Codehighlighter1_2831_2881_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_2831_2881_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2831_2881_Closed_Text.style.display='none'; Codehighlighter1_2831_2881_Open_Image.style.display='inline'; Codehighlighter1_2831_2881_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;ignore)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2831_2881_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2831_2881_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(ignore.getMessage());<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<p></span><br /></p><img src ="http://www.blogjava.net/japper/aggbug/380158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-06-06 17:09 <a href="http://www.blogjava.net/japper/archive/2012/06/06/380158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>表单提交的几种方式</title><link>http://www.blogjava.net/japper/archive/2012/06/06/380103.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Wed, 06 Jun 2012 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/06/06/380103.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/380103.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/06/06/380103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/380103.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/380103.html</trackback:ping><description><![CDATA[　　1、&lt;!--<strong>通用提交按钮</strong>--&gt;<br />　　&lt;input type="submit" value="提交"&gt;<br />　　2、&lt;!--<strong>自定义提交按钮</strong>--&gt;<br />　　&lt;button type="Submit"&gt;提交&lt;/button&gt;<br />　　3、&lt;!--<strong>图像按钮</strong>--&gt;<br />　　&lt;input type="image" src = "btn.png"&gt;<br />说明：用户提交按钮或图像按钮时，就会提交表单。使用&lt;input&gt;或&lt;button&gt;都可以定义提交按钮，只要将其特性的值设置为&#8220;submit&#8221;即可，而图像按钮则是通过&lt;input&gt;的type特性值设置为&#8221;image&#8221;来定义的。因此，只要我们单击一下代码生成的按钮，就可以提交表单。<br /><br />&nbsp;&nbsp;&nbsp; 4、<strong>阻止表单提交</strong> 
<p>只要在表单中存在上面列出的任何一种按钮，那么相应表单控件拥有焦点的情况下，按回车键就可以提交表单。如果表单里没有提交按钮，按回车键不会提交表单。</p>
<p>　　以这种方式提交表单时，浏览器会在将请求发送给服务器之前触发submit事件。这样，我们就有机会验证表单数据，并据以决定是否允许表单提交。<span style="color: red">阻止这个事件的默认行为就可以取消表单提交。</span>例如，下面代码会阻止表单提交：</p>
<p>var EventUtil = {<br />&nbsp;&nbsp;&nbsp; addHandler: function (element, type, handler) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (element.addEventListener) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; element.addEventListener(type, handler, false);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if (element.attachEvent) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; element.attachEvent("on" + type, handler);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; element["on" + type] = handler;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; },<br />&nbsp;&nbsp;&nbsp; getEvent: function (event) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return event ? event : window.event;<br />&nbsp;&nbsp;&nbsp; },<br />&nbsp;&nbsp;&nbsp; preventDefault: function (event) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (event.preventDefault) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event.preventDefault();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event.returnValue = false;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }</p>
<p>}；</p>
<p>var form = document.getElementById("myForm");<br />EventUtil.addHandler(form, "submit", function () {<br />&nbsp;&nbsp;&nbsp; //取得事件对象<br />&nbsp;&nbsp;&nbsp; event = EventUtil.getEvent(event);<br />&nbsp;&nbsp;&nbsp; //阻止默认事件<br />&nbsp;&nbsp;&nbsp; EventUtil.preventDefault(event);<br />});　　<br />调用preventDefault()方法阻止了表单提交。一般来说，在表单数据无效而不能发送给服务器时，可以使用这一技术。<br /><br />5、<strong>在JavaScript中，以编程方式调用submit()方法也可以提交表单。<br />&nbsp;&nbsp;&nbsp;&nbsp; </strong>这种方式无需表单包含提交按钮，任何时候都可以正常提交表单。来看一个例子：</p>
<p>　　var form = document.getElementById("myForm");<br />　　//提交表单<br />　　form.submit();　　<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在以调用submit()方法的形式提交表单时，不会触发submit事件，因此要记得在调用此方法之前先验证表单数字据。</p>
<p>　　提交表单时可能出现的最大问题，就是<strong>重复提交表单</strong>。在第一次提交表单后，如果长时间没有反映，用户可能会变得不耐烦。这时候，他们也许会反复单击提交按钮。结果往往很麻烦（因为服务器要处理重复请求），或者造成错误（如果是下了订单，那么可能会多定好几份）。<br />解决这一问题的办法有两个：<br /><strong>&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong><em>在第一次提交表单后就禁用提交按钮；<br /></em>&nbsp;&nbsp;&nbsp;&nbsp; <em>利用onsubmit事件处理程序取消后续的表单提交操作。</em></strong></p>
<p>&nbsp;</p><img src ="http://www.blogjava.net/japper/aggbug/380103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-06-06 10:16 <a href="http://www.blogjava.net/japper/archive/2012/06/06/380103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java的System.getProperty()方法可以获取的值</title><link>http://www.blogjava.net/japper/archive/2012/06/05/380044.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Tue, 05 Jun 2012 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/06/05/380044.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/380044.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/06/05/380044.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/380044.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/380044.html</trackback:ping><description><![CDATA[<table style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; margin-left: 36pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid" border="1" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.version</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">运行时环境版本</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.vendor</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">运行时环境供应商</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.vendor.url</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">供应商的 URL</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.home</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">安装目录</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.vm.specification.version</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">虚拟机规范版本</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.vm.specification.vendor</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">虚拟机规范供应商</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.vm.specification.name</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">虚拟机规范名称</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.vm.version</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">虚拟机实现版本</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.vm.vendor</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">虚拟机实现供应商</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.vm.name</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">虚拟机实现名称</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.specification.version</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">运行时环境规范版本</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.specification.vendor</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">运行时环境规范供应商</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.specification.name</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">运行时环境规范名称</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.class.version</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">类格式版本号</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.class.path</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">Java </span><span style="font-family: 宋体; font-size: 12pt">类路径</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.library.path</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">加载库时搜索的路径列表</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.io.tmpdir</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">默认的临时文件路径</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.compiler</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">要使用的 JIT 编译器的名称</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">java.ext.dirs</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">一个或多个扩展目录的路径</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">os.name</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">操作系统的名称</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">os.arch</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">操作系统的架构</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">os.version</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">操作系统的版本</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">file.separator</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">文件分隔符（在 UNIX 系统中是&#8220;/&#8221;）</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">path.separator</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">路径分隔符（在 UNIX 系统中是&#8220;:&#8221;）</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">line.separator</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">行分隔符（在 UNIX 系统中是&#8220;/n&#8221;）</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">user.name</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">用户的账户名称</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">user.home</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; width: 346px; padding-right: 0.75pt; height: 73px; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">用户的主目录</span></p></td></tr>
<tr>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">user.dir</span></p></td>
<td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0.75pt; padding-left: 0.75pt; padding-right: 0.75pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0.75pt">
<p style="text-align: left" align="left"><span style="font-family: 宋体; font-size: 12pt">用户的当前工作目录</span></p></td></tr></tbody></table><font face="Verdana"><br /><br />
<p><span style="color: red">获取的代码示例：</span></p><br />01.public class SystemProperty {&nbsp; <br />02.&nbsp;&nbsp;&nbsp; public static void main(String args[]) {&nbsp;&nbsp;&nbsp;&nbsp; <br />03.&nbsp;&nbsp;&nbsp; System.out.println("java_vendor:" + System.getProperty("java.vendor"));&nbsp;&nbsp;&nbsp;&nbsp; <br />04.&nbsp;&nbsp;&nbsp; System.out.println("java_vendor_url:"&nbsp;&nbsp;&nbsp;&nbsp; <br />05.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("java.vendor.url"));&nbsp;&nbsp;&nbsp;&nbsp; <br />06.&nbsp;&nbsp;&nbsp; System.out.println("java_home:" + System.getProperty("java.home"));&nbsp;&nbsp;&nbsp;&nbsp; <br />07.&nbsp;&nbsp;&nbsp; System.out.println("java_class_version:"&nbsp;&nbsp;&nbsp;&nbsp; <br />08.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("java.class.version"));&nbsp;&nbsp;&nbsp;&nbsp; <br />09.&nbsp;&nbsp;&nbsp; System.out.println("java_class_path:"&nbsp;&nbsp;&nbsp;&nbsp; <br />10.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("java.class.path"));&nbsp;&nbsp;&nbsp;&nbsp; <br />11.&nbsp;&nbsp;&nbsp; System.out.println("os_name:" + System.getProperty("os.name"));&nbsp;&nbsp;&nbsp;&nbsp; <br />12.&nbsp;&nbsp;&nbsp; System.out.println("os_arch:" + System.getProperty("os.arch"));&nbsp;&nbsp;&nbsp;&nbsp; <br />13.&nbsp;&nbsp;&nbsp; System.out.println("os_version:" + System.getProperty("os.version"));&nbsp;&nbsp;&nbsp;&nbsp; <br />14.&nbsp;&nbsp;&nbsp; System.out.println("user_name:" + System.getProperty("user.name"));&nbsp;&nbsp;&nbsp;&nbsp; <br />15.&nbsp;&nbsp;&nbsp; System.out.println("user_home:" + System.getProperty("user.home"));&nbsp;&nbsp;&nbsp;&nbsp; <br />16.&nbsp;&nbsp;&nbsp; System.out.println("user_dir:" + System.getProperty("user.dir"));&nbsp;&nbsp;&nbsp;&nbsp; <br />17.&nbsp;&nbsp;&nbsp; System.out.println("java_vm_specification_version:"&nbsp;&nbsp;&nbsp;&nbsp; <br />18.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("java.vm.specification.version"));&nbsp;&nbsp;&nbsp;&nbsp; <br />19.&nbsp;&nbsp;&nbsp; System.out.println("java_vm_specification_vendor:"&nbsp;&nbsp;&nbsp;&nbsp; <br />20.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("java.vm.specification.vendor"));&nbsp;&nbsp;&nbsp;&nbsp; <br />21.&nbsp;&nbsp;&nbsp; System.out.println("java_vm_specification_name:"&nbsp;&nbsp;&nbsp;&nbsp; <br />22.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("java.vm.specification.name"));&nbsp;&nbsp;&nbsp;&nbsp; <br />23.&nbsp;&nbsp;&nbsp; System.out.println("java_vm_version:"&nbsp;&nbsp;&nbsp;&nbsp; <br />24.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("java.vm.version"));&nbsp;&nbsp;&nbsp;&nbsp; <br />25.&nbsp;&nbsp;&nbsp; System.out.println("java_vm_vendor:"&nbsp;&nbsp;&nbsp;&nbsp; <br />26.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("java.vm.vendor"));&nbsp;&nbsp;&nbsp;&nbsp; <br />27.&nbsp;&nbsp;&nbsp; System.out&nbsp;&nbsp;&nbsp;&nbsp; <br />28.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .println("java_vm_name:" + System.getProperty("java.vm.name"));&nbsp;&nbsp;&nbsp;&nbsp; <br />29.&nbsp;&nbsp;&nbsp; System.out.println("java_ext_dirs:"&nbsp;&nbsp;&nbsp;&nbsp; <br />30.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("java.ext.dirs"));&nbsp;&nbsp;&nbsp;&nbsp; <br />31.&nbsp;&nbsp;&nbsp; System.out.println("file_separator:"&nbsp;&nbsp;&nbsp;&nbsp; <br />32.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("file.separator"));&nbsp;&nbsp;&nbsp;&nbsp; <br />33.&nbsp;&nbsp;&nbsp; System.out.println("path_separator:"&nbsp;&nbsp;&nbsp;&nbsp; <br />34.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("path.separator"));&nbsp;&nbsp;&nbsp;&nbsp; <br />35.&nbsp;&nbsp;&nbsp; System.out.println("line_separator:"&nbsp;&nbsp;&nbsp;&nbsp; <br />36.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + System.getProperty("line.separator"));&nbsp;&nbsp;&nbsp;&nbsp; <br />37.}&nbsp;&nbsp;&nbsp;&nbsp; </font><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/japper/aggbug/380044.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-06-05 17:27 <a href="http://www.blogjava.net/japper/archive/2012/06/05/380044.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>checkStyle配置说明、范例和结果分析</title><link>http://www.blogjava.net/japper/archive/2012/05/24/379054.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Thu, 24 May 2012 09:50:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/05/24/379054.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/379054.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/05/24/379054.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/379054.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/379054.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;&nbsp;1&lt;?xml&nbsp;version="1.0"?&gt;&nbsp;&nbsp;2&lt;!DOCTYPE&nbsp;module&nbsp;PUBLIC&nbsp;&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/japper/archive/2012/05/24/379054.html'>阅读全文</a><img src ="http://www.blogjava.net/japper/aggbug/379054.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-05-24 17:50 <a href="http://www.blogjava.net/japper/archive/2012/05/24/379054.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Myeclips打开大数据量页面时出现页面错误的解决办法</title><link>http://www.blogjava.net/japper/archive/2012/05/24/379003.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Thu, 24 May 2012 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/05/24/379003.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/379003.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/05/24/379003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/379003.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/379003.html</trackback:ping><description><![CDATA[以前能够正常运行的程序今天突然出现页面错误，错误日志大概如下： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">Caused&nbsp;by:&nbsp;org.springframework.jdbc.CannotGetJdbcConnectionException:&nbsp;Could&nbsp;not&nbsp;get&nbsp;JDBC&nbsp;Connection;&nbsp;nested&nbsp;exception&nbsp;is&nbsp;org.apache.tomcat.dbcp.dbcp.SQLNestedException:&nbsp;Cannot&nbsp;get&nbsp;a&nbsp;connection,&nbsp;pool&nbsp;error&nbsp;Timeout&nbsp;waiting&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;idle&nbsp;object<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:</span><span style="color: #000000">82</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:</span><span style="color: #000000">280</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.blogjava.net/Images/dot.gif" />&nbsp;</span><span style="color: #000000">143</span><span style="color: #000000">&nbsp;more<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Caused&nbsp;by:&nbsp;org.apache.tomcat.dbcp.dbcp.SQLNestedException:&nbsp;Cannot&nbsp;get&nbsp;a&nbsp;connection,&nbsp;pool&nbsp;error&nbsp;Timeout&nbsp;waiting&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;idle&nbsp;object<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:</span><span style="color: #000000">104</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:</span><span style="color: #000000">880</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:</span><span style="color: #000000">113</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:</span><span style="color: #000000">79</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.blogjava.net/Images/dot.gif" />&nbsp;</span><span style="color: #000000">144</span><span style="color: #000000">&nbsp;more<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />Caused&nbsp;by:&nbsp;java.util.NoSuchElementException:&nbsp;Timeout&nbsp;waiting&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;idle&nbsp;object<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:</span><span style="color: #000000">958</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:</span><span style="color: #000000">96</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.blogjava.net/Images/dot.gif" />&nbsp;</span><span style="color: #000000">147</span><span style="color: #000000">&nbsp;more<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">2012</span><span style="color: #000000">-</span><span style="color: #000000">05</span><span style="color: #000000">-</span><span style="color: #000000">24</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">09</span><span style="color: #000000">:</span><span style="color: #000000">51</span><span style="color: #000000">:</span><span style="color: #000000">22</span><span style="color: #000000">,</span><span style="color: #000000">359</span><span style="color: #000000">&nbsp;ERROR&nbsp;com.huawei.wsop.core.ExceptionAdvice&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;com.huawei.wsop.account.model.CustomerInfo@760c9f&nbsp;执行&nbsp;getCustomer&nbsp;时有异常抛出<img alt="" src="http://www.blogjava.net/Images/dot.gif" />.org.springframework.jdbc.UncategorizedSQLException:&nbsp;Hibernate&nbsp;operation:&nbsp;Cannot&nbsp;open&nbsp;connection;&nbsp;uncategorized&nbsp;SQLException&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;SQL&nbsp;[</span><span style="color: #000000">???</span><span style="color: #000000">];&nbsp;SQL&nbsp;state&nbsp;[</span><span style="color: #0000ff">null</span><span style="color: #000000">];&nbsp;error&nbsp;code&nbsp;[</span><span style="color: #000000">0</span><span style="color: #000000">];&nbsp;Cannot&nbsp;get&nbsp;a&nbsp;connection,&nbsp;pool&nbsp;error&nbsp;Timeout&nbsp;waiting&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;idle&nbsp;object;&nbsp;nested&nbsp;exception&nbsp;is&nbsp;org.apache.tomcat.dbcp.dbcp.SQLNestedException:&nbsp;Cannot&nbsp;get&nbsp;a&nbsp;connection,&nbsp;pool&nbsp;error&nbsp;Timeout&nbsp;waiting&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;idle&nbsp;object<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:</span><span style="color: #000000">83</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:</span><span style="color: #000000">80</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:</span><span style="color: #000000">80</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:</span><span style="color: #000000">424</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:</span><span style="color: #000000">410</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:</span><span style="color: #000000">424</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:</span><span style="color: #000000">343</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;com.huawei.wsop.account.dao.daoImpl.CustomerDaoImpl.getCustomer(CustomerDaoImpl.java:</span><span style="color: #000000">80</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;sun.reflect.NativeMethodAccessorImpl.invoke0(Native&nbsp;Method)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:</span><span style="color: #000000">39</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:</span><span style="color: #000000">25</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;java.lang.reflect.Method.invoke(Method.java:</span><span style="color: #000000">597</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:</span><span style="color: #000000">307</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:</span><span style="color: #000000">182</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:</span><span style="color: #000000">149</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor.invoke(ThrowsAdviceInterceptor.java:</span><span style="color: #000000">126</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:</span><span style="color: #000000">171</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:</span><span style="color: #000000">89</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />at&nbsp;org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:</span><span style="color: #000000">171</span><span style="color: #000000">)</span></div><br /><br /><strong>该页面共有5W多条数据，通过如下方法解决了：&nbsp;<br /></strong>在Eclipse中选择 <br />window-&gt;preferences-&gt;myeclipse-&gt;servers-&gt;tomcat-&gt;jdk <br />里面有个Optional java vm arguments <br />在这里设置 <br />-Xms64m -Xmx500m <br />xms标识最小内存&nbsp; xmx标识最大，根据你服务器的情况自行设置即可. <img src ="http://www.blogjava.net/japper/aggbug/379003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-05-24 10:36 <a href="http://www.blogjava.net/japper/archive/2012/05/24/379003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>org.apache.commons.lang.StringUtils类</title><link>http://www.blogjava.net/japper/archive/2012/05/23/378946.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Wed, 23 May 2012 08:01:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/05/23/378946.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/378946.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/05/23/378946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/378946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/378946.html</trackback:ping><description><![CDATA[(转)StringUtils 方法的操作对象是 java.lang.String 类型的对象，是 JDK 提供的 String 类型操作方法的补充，并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 NullPointerException ，而是做了相应处理，例如，如果输入为 null 则返回也是 null 等，具体可以查看源代码)。 <br />除了构造器，StringUtils 中一共有130多个方法，并且都是 static 的，所以我们可以这样调用 StringUtils.xxx() <br />下面分别对一些常用方法做简要介绍： <br />1. public static boolean isEmpty(String str) <br />判断某字符串是否为空，为空的标准是 str==null 或 str.length()==0 <br />下面是 StringUtils 判断是否为空的示例： <br /><br />StringUtils.isEmpty(null) = true <br />StringUtils.isEmpty("") = true <br />StringUtils.isEmpty(" ") = false //注意在 StringUtils 中空格作非空处理 <br />StringUtils.isEmpty(" ") = false <br />StringUtils.isEmpty("bob") = false <br />StringUtils.isEmpty(" bob ") = false <br /><br />2. public static boolean isNotEmpty(String str) <br />判断某字符串是否非空，等于 !isEmpty(String str) <br />下面是示例： <br /><br />StringUtils.isNotEmpty(null) = false <br />StringUtils.isNotEmpty("") = false <br />StringUtils.isNotEmpty(" ") = true <br />StringUtils.isNotEmpty(" ") = true <br />StringUtils.isNotEmpty("bob") = true <br />StringUtils.isNotEmpty(" bob ") = true <br />3. public static boolean isBlank(String str) <br />判断某字符串是否为空或长度为0或由空白符(whitespace) 构成 <br />下面是示例： <br />StringUtils.isBlank(null) = true <br />StringUtils.isBlank("") = true <br />StringUtils.isBlank(" ") = true <br />StringUtils.isBlank(" ") = true <br />StringUtils.isBlank("\t \n \f \r") = true //对于制表符、换行符、换页符和回车符 <br /><br />StringUtils.isBlank() //均识为空白符 <br />StringUtils.isBlank("\b") = false //"\b"为单词边界符 <br />StringUtils.isBlank("bob") = false <br />StringUtils.isBlank(" bob ") = false <br />4. public static boolean isNotBlank(String str) <br />判断某字符串是否不为空且长度不为0且不由空白符(whitespace) 构成，等于 !isBlank(String str) <br />下面是示例： <br /><br />StringUtils.isNotBlank(null) = false <br />StringUtils.isNotBlank("") = false <br />StringUtils.isNotBlank(" ") = false <br />StringUtils.isNotBlank(" ") = false <br />StringUtils.isNotBlank("\t \n \f \r") = false <br />StringUtils.isNotBlank("\b") = true <br />StringUtils.isNotBlank("bob") = true <br />StringUtils.isNotBlank(" bob ") = true <br />5. public static String trim(String str) <br />去掉字符串两端的控制符(control characters, char &lt;= 32) , 如果输入为 null 则返回null <br />下面是示例： <br />StringUtils.trim(null) = null <br />StringUtils.trim("") = "" <br />StringUtils.trim(" ") = "" <br />StringUtils.trim(" \b \t \n \f \r ") = "" <br />StringUtils.trim(" \n\tss \b") = "ss" <br />StringUtils.trim(" d d dd ") = "d d dd" <br />StringUtils.trim("dd ") = "dd" <br />StringUtils.trim(" dd ") = "dd" <br />6. public static String trimToNull(String str) <br />去掉字符串两端的控制符(control characters, char &lt;= 32) ,如果变为 null 或""，则返回 null <br />下面是示例： <br />StringUtils.trimToNull(null) = null <br />StringUtils.trimToNull("") = null <br />StringUtils.trimToNull(" ") = null <br />StringUtils.trimToNull(" \b \t \n \f \r ") = null <br />StringUtils.trimToNull(" \n\tss \b") = "ss" <br />StringUtils.trimToNull(" d d dd ") = "d d dd" <br />StringUtils.trimToNull("dd ") = "dd" <br />StringUtils.trimToNull(" dd ") = "dd" <br />7. public static String trimToEmpty(String str) <br />去掉字符串两端的控制符(control characters, char &lt;= 32) ,如果变为 null 或 "" ，则返回 "" <br />下面是示例： <br />StringUtils.trimToEmpty(null) = "" <br />StringUtils.trimToEmpty("") = "" <br />StringUtils.trimToEmpty(" ") = "" <br />StringUtils.trimToEmpty(" \b \t \n \f \r ") = "" <br />StringUtils.trimToEmpty(" \n\tss \b") = "ss" <br />StringUtils.trimToEmpty(" d d dd ") = "d d dd" <br />StringUtils.trimToEmpty("dd ") = "dd" <br />StringUtils.trimToEmpty(" dd ") = "dd" <br />8. public static String strip(String str) <br />去掉字符串两端的空白符(whitespace) ，如果输入为 null 则返回 null <br />下面是示例(注意和 trim() 的区别)： <br />StringUtils.strip(null) = null <br />StringUtils.strip("") = "" <br />StringUtils.strip(" ") = "" <br />StringUtils.strip(" \b \t \n \f \r ") = "\b" <br />StringUtils.strip(" \n\tss \b") = "ss \b" <br />StringUtils.strip(" d d dd ") = "d d dd" <br />StringUtils.strip("dd ") = "dd" <br />StringUtils.strip(" dd ") = "dd" <br />9. public static String stripToNull(String str) <br />去掉字符串两端的空白符(whitespace) ，如果变为 null 或""，则返回 null <br />下面是示例(注意和 trimToNull() 的区别)： <br />StringUtils.stripToNull(null) = null <br />StringUtils.stripToNull("") = null <br />StringUtils.stripToNull(" ") = null <br />StringUtils.stripToNull(" \b \t \n \f \r ") = "\b" <br />StringUtils.stripToNull(" \n\tss \b") = "ss \b" <br />StringUtils.stripToNull(" d d dd ") = "d d dd" <br />StringUtils.stripToNull("dd ") = "dd" <br />StringUtils.stripToNull(" dd ") = "dd" <br />10. public static String stripToEmpty(String str) <br />去掉字符串两端的空白符(whitespace) ，如果变为 null 或"" ，则返回"" <br />下面是示例(注意和 trimToEmpty() 的区别)： <br />StringUtils.stripToNull(null) = "" <br />StringUtils.stripToNull("") = "" <br />StringUtils.stripToNull(" ") = "" <br />StringUtils.stripToNull(" \b \t \n \f \r ") = "\b" <br />StringUtils.stripToNull(" \n\tss \b") = "ss \b" <br />StringUtils.stripToNull(" d d dd ") = "d d dd" <br />StringUtils.stripToNull("dd ") = "dd" <br />StringUtils.stripToNull(" dd ") = "dd" <br /><br />以下方法只介绍其功能，不再举例： <br />11. public static String strip(String str, String stripChars) <br />去掉 str 两端的在 stripChars 中的字符。 <br />如果 str 为 null 或等于"" ，则返回它本身； <br />如果 stripChars 为 null 或"" ，则返回 strip(String str) 。 <br />12. public static String stripStart(String str, String stripChars) <br />和11相似，去掉 str 前端的在 stripChars 中的字符。 <br />13. public static String stripEnd(String str, String stripChars) <br />和11相似，去掉 str 末端的在 stripChars 中的字符。 <br />14. public static String[] stripAll(String[] strs) <br />对字符串数组中的每个字符串进行 strip(String str) ，然后返回。 <br />如果 strs 为 null 或 strs 长度为0，则返回 strs 本身 <br />15. public static String[] stripAll(String[] strs, String stripChars) <br />对字符串数组中的每个字符串进行 strip(String str, String stripChars) ，然后返回。 <br />如果 strs 为 null 或 strs 长度为0，则返回 strs 本身 <br />16. public static boolean equals(String str1, String str2) <br />比较两个字符串是否相等，如果两个均为空则也认为相等。 <br />17. public static boolean equalsIgnoreCase(String str1, String str2) <br />比较两个字符串是否相等，不区分大小写，如果两个均为空则也认为相等。 <br />18. public static int indexOf(String str, char searchChar) <br />返回字符 searchChar 在字符串 str 中第一次出现的位置。 <br />如果 searchChar 没有在 str 中出现则返回-1， <br />如果 str 为 null 或 "" ，则也返回-1 <br />19. public static int indexOf(String str, char searchChar, int startPos) <br />返回字符 searchChar 从 startPos 开始在字符串 str 中第一次出现的位置。 <br />如果从 startPos 开始 searchChar 没有在 str 中出现则返回-1， <br />如果 str 为 null 或 "" ，则也返回-1 <br />20. public static int indexOf(String str, String searchStr) <br />返回字符串 searchStr 在字符串 str 中第一次出现的位置。 <br />如果 str 为 null 或 searchStr 为 null 则返回-1， <br />如果 searchStr 为 "" ,且 str 为不为 null ，则返回0， <br />如果 searchStr 不在 str 中，则返回-1 <br />21. public static int ordinalIndexOf(String str, String searchStr, int ordinal) <br />返回字符串 searchStr 在字符串 str 中第 ordinal 次出现的位置。 <br />如果 str=null 或 searchStr=null 或 ordinal&lt;=0 则返回-1 <br />举例(*代表任意字符串)： <br />StringUtils.ordinalIndexOf(null, *, *) = -1 <br />StringUtils.ordinalIndexOf(*, null, *) = -1 <br />StringUtils.ordinalIndexOf("", "", *) = 0 <br />StringUtils.ordinalIndexOf("aabaabaa", "a", 1) = 0 <br />StringUtils.ordinalIndexOf("aabaabaa", "a", 2) = 1 <br />StringUtils.ordinalIndexOf("aabaabaa", "b", 1) = 2 <br />StringUtils.ordinalIndexOf("aabaabaa", "b", 2) = 5 <br />StringUtils.ordinalIndexOf("aabaabaa", "ab", 1) = 1 <br />StringUtils.ordinalIndexOf("aabaabaa", "ab", 2) = 4 <br />StringUtils.ordinalIndexOf("aabaabaa", "bc", 1) = -1 <br />StringUtils.ordinalIndexOf("aabaabaa", "", 1) = 0 <br />StringUtils.ordinalIndexOf("aabaabaa", "", 2) = 0 <br />22. public static int indexOf(String str, String searchStr, int startPos) <br />返回字符串 searchStr 从 startPos 开始在字符串 str 中第一次出现的位置。 <br />举例(*代表任意字符串)： <br />StringUtils.indexOf(null, *, *) = -1 <br />StringUtils.indexOf(*, null, *) = -1 <br />StringUtils.indexOf("", "", 0) = 0 <br />StringUtils.indexOf("aabaabaa", "a", 0) = 0 <br />StringUtils.indexOf("aabaabaa", "b", 0) = 2 <br />StringUtils.indexOf("aabaabaa", "ab", 0) = 1 <br />StringUtils.indexOf("aabaabaa", "b", 3) = 5 <br />StringUtils.indexOf("aabaabaa", "b", 9) = -1 <br />StringUtils.indexOf("aabaabaa", "b", -1) = 2 <br />StringUtils.indexOf("aabaabaa", "", 2) = 2 <br />StringUtils.indexOf("abc", "", 9) = 3 <br />23. public static int lastIndexOf(String str, char searchChar) <br />基本原理同18 <br />24. public static int lastIndexOf(String str, char searchChar, int startPos) <br />基本原理同19 <br />25. public static int lastIndexOf(String str, String searchStr) <br />基本原理同20 <br />26. public static int lastIndexOf(String str, String searchStr, int startPos) <br />基本原理同22 <br />另附： <br />String 的 split(String regex) 方法的用法 <br />如果我们需要把某个字符串拆分为字符串数组，则通常用 split(String regex) 来实现。 <br />例如： <br />Java代码 复制代码 <br /><br />1. String str = "aa,bb,cc,dd"; <br />2. String[] strArray = str.split(","); <br />3. System.out.println(strArray.length); <br />4. for (int i = 0; i &lt; strArray.length; i++) { <br />5. System.out.println(strArray[i]); <br />6. } <br /><br />String str = "aa,bb,cc,dd"; String[] strArray = str.split(","); System.out.println(strArray.length); for (int i = 0; i &lt; strArray.length; i++) { System.out.println(strArray[i]); } <br /><br /><br /><br />结果为： <br />4 <br />aa <br />bb <br />cc <br />dd <br />如果， <br />String str = "aa.bb.cc.dd"; <br />String[] strArray = str.split("."); <br />则结果为：0 <br />为什么结果不是我们所想的呢，原因是参数 String regex 是正则表达式 (regular expression) 而不是普通字符串，而 "." 在正则表达式中有特殊含义，表示匹配所有单个字符。如果要那样拆分，我们必须给 "." 进行转义，String[] strArray = str.split(".") 修改为 String[] strArray = str.split("\\.") 即可。 <br /><br /><br /><br /><span style="color: red; font-size: 24pt">另外收藏几个实用的方法：</span><br />
<p><span style="font-family: Arial; font-size: 13px">org.apache.commons.lang.StringUtils中提供许多有用的字符串操作方法，了解这些方法，我们可以避免许多不必要的重复工作。下面介绍其中比较有用的几个方法：<br /><br /></span><strong><span style="font-family: Arial; font-size: 13px">检查空字符串：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">01</span><span style="color: #000000">.StringUtils.isBlank(String&nbsp;str);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">02</span><span style="color: #000000">.StringUtils.isNotBlank(String&nbsp;str);&nbsp;&nbsp;</span></div>
<p><br /></span></strong><br /></p>
<p><span style="font-family: Arial"><span style="font-size: 13px"><strong>缩写字符串：</strong> </p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">String&nbsp;test&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;This&nbsp;is&nbsp;a&nbsp;test&nbsp;of&nbsp;the&nbsp;abbreviation.&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">02</span><span style="color: #000000">.System.out.println(&nbsp;StringUtils.abbreviate(&nbsp;test,&nbsp;&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">&nbsp;&nbsp;)&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">03</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">04</span><span style="color: #000000">.[Console输出]&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">05</span><span style="color: #000000">.This&nbsp;is&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
<p><br /></span></span></p><br /><br /><span style="font-family: Arial; font-size: 13px"><strong>查找嵌套字符串：
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">01</span><span style="color: #000000">.&nbsp;String&nbsp;htmlContent&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&lt;html&gt;/n&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">02</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&lt;head&gt;/n&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">03</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Test&nbsp;Page&lt;/title&gt;/n&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">04</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&lt;/head&gt;/n&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">05</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&lt;body&gt;/n&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">06</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;This&nbsp;is&nbsp;a&nbsp;TEST!&lt;/p&gt;/n&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">07</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&lt;/body&gt;/n&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">08</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&lt;/html&gt;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">09</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">10</span><span style="color: #000000">.&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;Extract&nbsp;the&nbsp;title&nbsp;from&nbsp;this&nbsp;XHTML&nbsp;content&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">11</span><span style="color: #000000">.&nbsp;String&nbsp;title&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;StringUtils.substringBetween(htmlContent,&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&lt;title&gt;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;,&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&lt;/title&gt;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">12</span><span style="color: #000000">.System.out.println(&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Title:&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;title&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">13</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">14</span><span style="color: #000000">.[Console输出]&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">15</span><span style="color: #000000">.Title:&nbsp;Test&nbsp;Page&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div><br /></strong></span><br /><br /><span style="font-family: Arial; font-size: 13px"><strong>验证字符串：<br /></strong></span>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">01</span><span style="color: #000000">.&nbsp;String&nbsp;test1&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;ORANGE&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">02</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">03</span><span style="color: #000000">.String&nbsp;test2&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;ICE9&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">04</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">05</span><span style="color: #000000">.String&nbsp;test3&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;ICE&nbsp;CREAM&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">06</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">07</span><span style="color: #000000">.String&nbsp;test4&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;820B&nbsp;Judson&nbsp;Avenue&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">08</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">09</span><span style="color: #000000">.</span><span style="color: #008000">//</span><span style="color: #008000">判断字母&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">10</span><span style="color: #000000">.&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;&nbsp;t1val&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;StringUtils.isAlpha(&nbsp;test1&nbsp;);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;returns&nbsp;true&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">11</span><span style="color: #000000">.&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">判断是不是字母数字&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">12</span><span style="color: #000000">.&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;&nbsp;t2val&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;StringUtils.isAlphanumeric(&nbsp;test2&nbsp;);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;returns&nbsp;true&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">13</span><span style="color: #000000">.&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">字母空格&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">14</span><span style="color: #000000">.&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;&nbsp;t3val&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;StringUtils.isAlphaSpace(&nbsp;test3&nbsp;);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;returns&nbsp;true&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">15</span><span style="color: #000000">.&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">字母数字空格&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">16</span><span style="color: #000000">.&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;&nbsp;t4val&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">17</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">18</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;StringUtils.isAlphanumericSpace(&nbsp;test4&nbsp;);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;returns&nbsp;true&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div><br /><br /><span style="font-family: Arial; font-size: 13px"><strong>计算字符串出现频率：</strong></span> <br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">01</span><span style="color: #000000">.&nbsp;File&nbsp;manuscriptFile&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;&nbsp;File(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;manuscript.txt&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">02</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">03</span><span style="color: #000000">.Reader&nbsp;reader&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;&nbsp;FileReader(&nbsp;manuscriptFile&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">04</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">05</span><span style="color: #000000">.StringWriter&nbsp;stringWriter&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;&nbsp;StringWriter(&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">06</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img id="Codehighlighter1_231_265_Open_Image" onclick="this.style.display='none'; Codehighlighter1_231_265_Open_Text.style.display='none'; Codehighlighter1_231_265_Closed_Image.style.display='inline'; Codehighlighter1_231_265_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_231_265_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_231_265_Closed_Text.style.display='none'; Codehighlighter1_231_265_Open_Image.style.display='inline'; Codehighlighter1_231_265_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #000000">07</span><span style="color: #000000">.&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(&nbsp;reader.ready(&nbsp;)&nbsp;)&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_231_265_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_231_265_Open_Text"><span style="color: #000000">{&nbsp;writer.write(&nbsp;reader.read(&nbsp;)&nbsp;);&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">08</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">09</span><span style="color: #000000">.String&nbsp;manuscript&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;stringWriter.toString(&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">10</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">11</span><span style="color: #000000">.&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;Convert&nbsp;string&nbsp;to&nbsp;lowercase&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">12</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">13</span><span style="color: #000000">.manuscript&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;StringUtils.lowerCase(manuscript);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">14</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">15</span><span style="color: #000000">.&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;count&nbsp;the&nbsp;occurrences&nbsp;of&nbsp;"futility"&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">16</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">17</span><span style="color: #000000">.&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;&nbsp;numFutility&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;StringUtils.countMatches(&nbsp;manuscript,&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;futility&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;);&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div><br /><br /><br /><span style="font-family: Arial; font-size: 13px"><strong>比较不同字符串：
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">01</span><span style="color: #000000">.&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;&nbsp;dist&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;StringUtils.getLevenshteinDistance(&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Word&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;,&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;World&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">02</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">03</span><span style="color: #000000">.String&nbsp;diff&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;StringUtils.difference(&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Word&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;,&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;World&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">04</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">05</span><span style="color: #000000">.&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;&nbsp;index&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;StringUtils.indexOfDifference(&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Word&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;,&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;World&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">06</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">07</span><span style="color: #000000">.System.out.println(&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Edit&nbsp;Distance:&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;dist&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">08</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">09</span><span style="color: #000000">.System.out.println(&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Difference:&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;diff&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">10</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">11</span><span style="color: #000000">.System.out.println(&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;Diff&nbsp;Index:&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;index&nbsp;);&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">12</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">13</span><span style="color: #000000">.[Console输出]&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">14</span><span style="color: #000000">.Edit&nbsp;Distance:&nbsp;&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">15</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">16</span><span style="color: #000000">.Difference:&nbsp;ld&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">17</span><span style="color: #000000">.&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">18</span><span style="color: #000000">.Diff&nbsp;Index:&nbsp;&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div><br /></strong></span><img src ="http://www.blogjava.net/japper/aggbug/378946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-05-23 16:01 <a href="http://www.blogjava.net/japper/archive/2012/05/23/378946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IO 文本操作记录</title><link>http://www.blogjava.net/japper/archive/2012/05/21/378668.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Mon, 21 May 2012 03:43:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/05/21/378668.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/378668.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/05/21/378668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/378668.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/378668.html</trackback:ping><description><![CDATA[<p>1、判断文本目录或者文件是否存在，如不存在，可以进行创建dir1.mkdir();删除file.delete(); &nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span>&nbsp;<span style="color: #000000">File&nbsp;dir&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000"> File(TXTPATH); //</span> <span style="color: #000000">TXTPATH</span> 可以是一个目录或者一个文件的路径。<span style="color: #000000"><br /></span><span style="color: #008080">2</span>&nbsp;<span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">dir.exists())&nbsp;{<br /></span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /></span><span style="color: #008080">4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(logger4onln.isInfoEnabled())&nbsp;{<br /></span><span style="color: #008080">5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger4onln<br /></span><span style="color: #008080">6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.info(</span><span style="color: #000000">"</span><span style="color: #000000">[readtxtfile]&nbsp;the&nbsp;file&nbsp;directory&nbsp;isn't&nbsp;exist.&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br /></span><span style="color: #008080">9</span>&nbsp;<span style="color: #000000"> &nbsp; &nbsp; &nbsp; &nbsp;}</span> <span style="color: #008080"><br /></span></div>
<p>&nbsp;2、 <span>获取该目录下的文件名</span>&nbsp;</p>
<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">String[]&nbsp;filename&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;dir.list();</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;获取该目录下的文件名，形成一个数组</span><span style="color: #008000"><br /></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&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;filename.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;<br />{<br /></span><span style="color: #008000">//</span><span style="color: #008000">do something&nbsp;可以通过遍历每个文件名，进行处理</span><span style="color: #008000"><br /></span><span style="color: #000000">}<br /></span></div>
<p>3、这里顺便记录一个获取日期的方法：</p>
<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span>&nbsp;<span style="color: #000000">Calendar&nbsp;calendarYest&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Calendar.getInstance();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;前一天的日期时间</span> <span style="color: #000000"><br /></span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000">calendarYest.add(Calendar.DATE,&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">); &nbsp;</span> <span style="color: #008000">//将当前时间的日&nbsp;减一天。</span> <span style="color: #000000">通过//calendarYest.setTimeZone(</span><span style="color: #0000ff">new</span><span style="color: #000000"> Date().getTime())</span> 来设置一个自定义时间。<span style="color: #000000"><br /></span><span style="color: #008080">3</span>&nbsp;<span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;month&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000"> calendarYest.get(Calendar.MONTH);&nbsp;</span> <span style="color: #008000">//获取月份</span> </div>
<p>4、通过正则表达式判断文件名格式是否正确</p>
<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">Pattern&nbsp;pattern&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Pattern.compile(</span><span style="color: #000000">""</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;KEY_FILE_NAME<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">\\d{10}</span><span style="color: #000000">"</span><span style="color: #000000">);</span> <span style="color: #008000">//这里的key_file_name是一种文本命名的固定格式</span> <span style="color: #000000"><br />Matcher&nbsp;matcher&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;pattern.matcher(fileName);<br /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(matcher.find())&nbsp;<br />{<br /></span><span style="color: #008000">//</span><span style="color: #008000">do&nbsp;something.</span><span style="color: #008000"><br /></span><span style="color: #000000">｝</span></div>
<p>5、一个移动文本的方法</p>
<p>&nbsp;</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;移动文本方法<br /></span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&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">boolean</span><span style="color: #000000">&nbsp;removeTo(String&nbsp;from,&nbsp;String&nbsp;to,&nbsp;String&nbsp;fileName)&nbsp;{<br /></span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;file&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(from,&nbsp;fileName);<br /></span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(file.isFile())&nbsp;{<br /></span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.renameTo(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(to,&nbsp;file.getName()));<br /></span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;移动失败</span><span style="color: #008000"><br /></span><span style="color: #008080">11</span>&nbsp;<span style="color: #008000"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<p>&nbsp;6、案例：需要每小时生成一个文本记录，以小时为单位，超过一小时生成另外一个文本</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleDateFormat&nbsp;format</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SimpleDateFormat(rsb.getString(</span><span style="color: #000000">"</span><span style="color: #000000">BRASAUTH.DATAFORMAT</span><span style="color: #000000">"</span><span style="color: #000000">));<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">SimpleDateFormat&nbsp;format2=new&nbsp;SimpleDateFormat("hhmm");</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;filename</span><span style="color: #000000">=</span><span style="color: #000000">rsb.getString(</span><span style="color: #000000">"</span><span style="color: #000000">BRASAUTH.FILENAME</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;path</span><span style="color: #000000">=</span><span style="color: #000000">rsb.getString(</span><span style="color: #000000">"</span><span style="color: #000000">BRASAUTH.TXTPATH</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;dir&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(path);<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">dir.exists())<br /><img id="Codehighlighter1_310_346_Open_Image" onclick="this.style.display='none'; Codehighlighter1_310_346_Open_Text.style.display='none'; Codehighlighter1_310_346_Closed_Image.style.display='inline'; Codehighlighter1_310_346_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_310_346_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_310_346_Closed_Text.style.display='none'; Codehighlighter1_310_346_Open_Image.style.display='inline'; Codehighlighter1_310_346_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_310_346_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_310_346_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">如果目录不存在</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dir.mkdir();<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_351_389_Open_Image" onclick="this.style.display='none'; Codehighlighter1_351_389_Open_Text.style.display='none'; Codehighlighter1_351_389_Closed_Image.style.display='inline'; Codehighlighter1_351_389_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_351_389_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_351_389_Closed_Text.style.display='none'; Codehighlighter1_351_389_Open_Image.style.display='inline'; Codehighlighter1_351_389_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_351_389_Closed_Text">/**/</span><span id="Codehighlighter1_351_389_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">判断文本，如已经经过一个小时，则另新建一个文本<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fullPath</span><span style="color: #000000">=</span><span style="color: #000000">path</span><span style="color: #000000">+</span><span style="color: #000000">filename</span><span style="color: #000000">+</span><span style="color: #000000">format.format(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date())</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">.txt</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;outStr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(fullPath),</span><span style="color: #0000ff">true</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedOutputStream&nbsp;buff&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedOutputStream(outStr);&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff.write(authInfo.getBytes());<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<p><br /><br />&nbsp;</p>
<p>&nbsp;</p><img src ="http://www.blogjava.net/japper/aggbug/378668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-05-21 11:43 <a href="http://www.blogjava.net/japper/archive/2012/05/21/378668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse快捷键(转)</title><link>http://www.blogjava.net/japper/archive/2012/05/21/378663.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Mon, 21 May 2012 02:58:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/05/21/378663.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/378663.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/05/21/378663.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/378663.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/378663.html</trackback:ping><description><![CDATA[常用快捷键:<br />
Ctrl+1 快速修复<br />
Ctrl+D: 删除当前行<br />
Ctrl+Alt+&#8595; 复制当前行到下一行(复制增加)<br />
Ctrl+Alt+&#8593; 复制当前行到上一行(复制增加)<br />
Alt+&#8595; 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)<br />
Alt+&#8593; 当前行和上面一行交互位置(同上)<br />
Alt+&#8592; 前一个编辑的页面<br />
Alt+&#8594; 下一个编辑的页面(当然是针对上面那条来说了)<br />
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性<br />
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)<br />
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)<br />
Ctrl+Q 定位到最后编辑的地方<br />
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)<br />
Ctrl+M 最大化当前的Edit或View (再按则反之)<br />
Ctrl+/ 注释当前行,再按则取消注释<br />
Ctrl+O 快速显示 OutLine<br />
Ctrl+T 快速显示当前类的继承结构<br />
Ctrl+W 关闭当前Editer<br />
Ctrl+K 参照选中的Word快速定位到下一个<br />
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)<br />
Ctrl+/(小键盘) 折叠当前类中的所有代码<br />
Ctrl+&#215;(小键盘) 展开当前类中的所有代码<br />
Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)<br />
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)<br />
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)<br />
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)<br />
Ctrl+Shift+F4 关闭所有打开的Editer<br />
Ctrl+Shift+X 把当前选中的文本全部变味小写<br />
Ctrl+Shift+Y 把当前选中的文本全部变为小写<br />
Ctrl+Shift+F 格式化当前代码<br />
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)<br />
Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)<br />
Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)<br />
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)<br />
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)<br />
Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)<br />
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)<br />
Alt+Shift+V 移动函数和变量(不怎么常用)<br />
Alt+Shift+Z 重构的后悔药(Undo)<br />
编辑<br />
全局 查找并替换 Ctrl+F<br />
文本编辑器 查找上一个 Ctrl+Shift+K<br />
文本编辑器 查找下一个 Ctrl+K<br />
全局 撤销 Ctrl+Z<br />
全局 复制 Ctrl+C<br />
全局 恢复上一个选择 Alt+Shift+&#8595;<br />
全局 剪切 Ctrl+X<br />
全局 快速修正 Ctrl1+1<br />
全局 内容辅助 Alt+/<br />
全局 全部选中 Ctrl+A<br />
全局 删除 Delete<br />
全局 上下文信息 Alt+?<br />
Alt+Shift+?<br />
Ctrl+Shift+Space<br />
java编辑器 显示工具提示描述 F2<br />
java编辑器 选择封装元素 Alt+Shift+&#8593;<br />
java编辑器 选择上一个元素 Alt+Shift+&#8592;<br />
java编辑器 选择下一个元素 Alt+Shift+&#8594;<br />
文本编辑器 增量查找 Ctrl+J<br />
文本编辑器 增量逆向查找 Ctrl+Shift+J<br />
全局 粘贴 Ctrl+V<br />
全局 重做 Ctrl+Y<br />
查看<br />
全局 放大 Ctrl+=<br />
全局 缩小 Ctrl+-<br />
窗口<br />
全局 激活编辑器 F12<br />
全局 切换编辑器 Ctrl+Shift+W<br />
全局 上一个编辑器 Ctrl+Shift+F6<br />
全局 上一个视图 Ctrl+Shift+F7<br />
全局 上一个透视图 Ctrl+Shift+F8<br />
全局 下一个编辑器 Ctrl+F6<br />
全局 下一个视图 Ctrl+F7<br />
全局 下一个透视图 Ctrl+F8<br />
文本编辑器 显示标尺上下文菜单 Ctrl+W<br />
全局 显示视图菜单 Ctrl+F10<br />
全局 显示系统菜单 Alt+-<br />
导航<br />
java编辑器 打开结构 Ctrl+F3<br />
全局 打开类型 Ctrl+Shift+T<br />
全局 打开类型层次结构 F4<br />
全局 打开声明 F3<br />
全局 打开外部javadoc Shift+F2<br />
全局 打开资源 Ctrl+Shift+R<br />
全局 后退历史记录 Alt+&#8592;<br />
全局 前进历史记录 Alt+&#8594;<br />
全局 上一个 Ctrl+,<br />
全局 下一个 Ctrl+.<br />
java编辑器 显示大纲 Ctrl+O<br />
全局 在层次结构中打开类型 Ctrl+Shift+H<br />
全局 转至匹配的括号 Ctrl+Shift+P<br />
全局 转至上一个编辑位置 Ctrl+Q<br />
java编辑器 转至上一个成员 Ctrl+Shift+&#8593;<br />
java编辑器 转至下一个成员 Ctrl+Shift+&#8595;<br />
文本编辑器 转至行 Ctrl+L<br />
搜索<br />
全局 出现在文件中 Ctrl+Shift+U<br />
全局 打开搜索对话框 Ctrl+H<br />
全局 工作区中的声明 Ctrl+G<br />
全局 工作区中的引用 Ctrl+Shift+G<br />
文本编辑<br />
文本编辑器 改写切换 Insert<br />
文本编辑器 上滚行 Ctrl+&#8593;<br />
文本编辑器 下滚行 Ctrl+&#8595;<br />
文件<br />
全局 保存 Ctrl+X<br />
Ctrl+S<br />
全局 打印 Ctrl+P<br />
全局 关闭 Ctrl+F4<br />
全局 全部保存 Ctrl+Shift+S<br />
全局 全部关闭 Ctrl+Shift+F4<br />
全局 属性 Alt+Enter<br />
全局 新建 Ctrl+N<br />
项目<br />
全局 全部构建 Ctrl+B<br />
源代码<br />
java编辑器 格式化 Ctrl+Shift+F<br />
java编辑器 取消注释 Ctrl+\<br />
java编辑器 注释 Ctrl+/<br />
java编辑器 添加导入 Ctrl+Shift+M<br />
java编辑器 组织导入 Ctrl+Shift+O<br />
java编辑器 使用try/catch块来包围 未设置，太常用了，所以在这里列出,建议自己设置。也可以使用Ctrl+1自动修正。<br />
运行<br />
作用域 功能 快捷键<br />
全局 单步返回 F7<br />
全局 单步跳过 F6<br />
全局 单步跳入 F5<br />
全局 单步跳入选择 Ctrl+F5<br />
全局 调试上次启动 F11<br />
全局 继续 F8<br />
全局 使用过滤器单步执行 Shift+F5<br />
全局 添加/去除断点 Ctrl+Shift+B<br />
全局 显示 Ctrl+D<br />
全局 运行上次启动 Ctrl+F11<br />
全局 运行至行 Ctrl+R<br />
全局 执行 Ctrl+U<br />
重构<br />
作用域 功能 快捷键<br />
全局 撤销重构 Alt+Shift+Z<br />
全局 抽取方法 Alt+Shift+M<br />
全局 抽取局部变量 Alt+Shift+L<br />
全局 内联 Alt+Shift+I<br />
全局 移动 Alt+Shift+V<br />
全局 重命名 Alt+Shift+R<br />
全局 重做 Alt+Shift+Y
<img src ="http://www.blogjava.net/japper/aggbug/378663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-05-21 10:58 <a href="http://www.blogjava.net/japper/archive/2012/05/21/378663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 应用程序读取jar包外自定义配置文件及log4j日志配置文件</title><link>http://www.blogjava.net/japper/archive/2012/05/17/378438.html</link><dc:creator>japper</dc:creator><author>japper</author><pubDate>Thu, 17 May 2012 11:10:00 GMT</pubDate><guid>http://www.blogjava.net/japper/archive/2012/05/17/378438.html</guid><wfw:comment>http://www.blogjava.net/japper/comments/378438.html</wfw:comment><comments>http://www.blogjava.net/japper/archive/2012/05/17/378438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/japper/comments/commentRss/378438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/japper/services/trackbacks/378438.html</trackback:ping><description><![CDATA[<blockquote style="margin-right: 0px" dir="ltr">
<p>今天忙了一下午，终于把这个读取方法写到了，当然引用网络上的一个方法；其实同事也写了一个读取方法，但是感觉过于复杂。<br />总结一个：主要分几个步骤<br />1、因为是读取外部目录的配置文件，因此不适用该方式：<br />ResourceBundle rsb1 = ResourceBundle.getBundle("D:/WORK/XXXX/XXXXCount.properties");默认读取与该类同路径的配置文件；<br />private static String proFileFoLog4j=Logger.getLogger(XXXXAuth.class)；默认读取jar包中的log4j日志配置文件；<br /><br />2、解决方法1：<br />1）、重新加载Properties文件：<br />&nbsp;&nbsp;Properties pro = new Properties();<br />&nbsp;&nbsp;String path=getConf(proFileName);//获取当前类所在的路径，该方法请看下面。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;pro.load(new FileInputStream(path));<br />&nbsp;&nbsp;} catch (FileNotFoundException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;} catch (IOException e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />2）、编写一个获取当前类路径的方法，这里直接使用了网友已经写好的代码，直接运行，不用修改，省事！当然还有其它的获取路径的方法：<br />&nbsp;// 其他方法的定义 //<br />&nbsp;/**<br />&nbsp; * *getAppPath需要一个当前程序使用的Java类的class属性参数，它可以 返回打包过的<br />&nbsp; * *Java可执行文件（jar，war）所处的系统目录名或非打包Java程 序所处的目录<br />&nbsp; * <br />&nbsp; * @param cls为Class类型<br />&nbsp; <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#42;&#64;&#114;&#101;&#116;&#117;&#114;&#110;">*@return</a> 返回值为该类所在的 Java程序运行的目录<br />&nbsp; */<br />&nbsp;public static String getAppPath(Class cls) {<br />&nbsp;&nbsp;ClassLoader loader = cls.getClassLoader();<br />&nbsp;&nbsp;String clsName = cls.getName() + ".class";<br />&nbsp;&nbsp;Package pack = cls.getPackage();<br />&nbsp;&nbsp;String path = "";<br />&nbsp;&nbsp;if (pack != null) <br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;String packName = pack.getName();<br />&nbsp;&nbsp;&nbsp;clsName = clsName.substring(packName.length() + 1);<br />&nbsp;&nbsp;&nbsp;if (packName.indexOf(".") &lt; 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;path = packName + "/";<br />&nbsp;&nbsp;&nbsp;else {<br />&nbsp;&nbsp;&nbsp;&nbsp;int start = 0, end = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;end = packName.indexOf(".");<br />&nbsp;&nbsp;&nbsp;&nbsp;while (end != -1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path = path + packName.substring(start, end) + "/";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start = end + 1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end = packName.indexOf(".", start);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;path = path + packName.substring(start) + "/";<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;java.net.URL url = loader.getResource(path + clsName);<br />&nbsp;&nbsp;String realPath = url.getPath();<br />&nbsp;&nbsp;int pos = realPath.indexOf("file:");<br />&nbsp;&nbsp;if (pos &gt; -1)<br />&nbsp;&nbsp;&nbsp;realPath = realPath.substring(pos + 5);<br />&nbsp;&nbsp;pos = realPath.indexOf(path + clsName);<br />&nbsp;&nbsp;realPath = realPath.substring(0, pos - 5);<br />&nbsp;&nbsp;if (realPath.endsWith("!"))<br />&nbsp;&nbsp;&nbsp;realPath = realPath.substring(0, realPath.lastIndexOf("/"));<br />&nbsp;&nbsp;return realPath;<br />&nbsp;}// getAppPath定义 结束<br /><br />3）获取完整的配置文件路径名称：&nbsp;String path=getConf.getAppPath(XXXXAuth.class)+proFileName;被第一步pro.load(new FileInputStream(path));调用即可获取配置文件。<br />4）通过getProperties(proFileFoRead).get("XXXXAUTH.ISENABLE").toString();获取配置文件信息即可。<br /><br />2、解决方法2：<br />关于log4j引用外部文件夹的log4j.properties文件，有一种最简单的方法：直接在main函数中加入如下一句：<br />PropertyConfigurator.configure(getConf(proFileFoLog4j)); //设置log4j配置文件的路径<br />其中getConf()方法调用了上面的获取完整路径的方法，即可。<br /><br /><br /><br /><br /></p></blockquote><img src ="http://www.blogjava.net/japper/aggbug/378438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/japper/" target="_blank">japper</a> 2012-05-17 19:10 <a href="http://www.blogjava.net/japper/archive/2012/05/17/378438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>