﻿<?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-&lt;font align="center" size="11" color="red"&gt;天行健，君子以自强不息&lt;/font&gt;</title><link>http://www.blogjava.net/yill/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 11:17:52 GMT</lastBuildDate><pubDate>Sat, 18 Apr 2026 11:17:52 GMT</pubDate><ttl>60</ttl><item><title>【转载】JSP乱码解决方案</title><link>http://www.blogjava.net/yill/archive/2009/08/10/290591.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Mon, 10 Aug 2009 14:18:00 GMT</pubDate><guid>http://www.blogjava.net/yill/archive/2009/08/10/290591.html</guid><wfw:comment>http://www.blogjava.net/yill/comments/290591.html</wfw:comment><comments>http://www.blogjava.net/yill/archive/2009/08/10/290591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yill/comments/commentRss/290591.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yill/services/trackbacks/290591.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"><span style="color: #000000">/**<br />
&nbsp;*&nbsp;21:24&nbsp;2006-10-12<br />
&nbsp;*&nbsp;@author&nbsp;blackbat&nbsp;<br />
&nbsp;*&nbsp;@title&nbsp;jsp中文乱码终极解决方法<br />
&nbsp;*/</span> </div>
<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"><span style="color: #000000">let's&nbsp;go。<br />
<font style="background-color: #7fffd4">一&nbsp;找出问题的根源</font><br />
&nbsp;&nbsp;&nbsp;乱码可能出现的地方：1&nbsp;jsp页面中&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;2&nbsp;jsp页面之间相互传参的参数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;与数据库中数据的存取<br />
&nbsp;&nbsp;&nbsp;基本归纳为以上几种。<br />
<br />
<font style="background-color: #7fffd4">二&nbsp;寻找解决方案<br />
</font>&nbsp;&nbsp;&nbsp;1&nbsp;出现在jsp页面中，是由于没有设置jsp页面的中文字符编码。<br />
&nbsp;&nbsp;&nbsp;2&nbsp;出现在jsp页面之间相互传参，是由于参数没有设置正确的字符编码。<br />
&nbsp;&nbsp;&nbsp;3&nbsp;以上2个问题解决了，那么存到数据库中，自然就不存在乱码。除非你对存入到数据库里的数据再次进行编码。</span> </div>
<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"><span style="color: #000000"><font style="background-color: #7fffd4">三解决方法：</font> <br />
1的解决方法&nbsp;<br />
</span><span style="background-color: #ffff00; color: #000000">&lt;%</span> <span style="background-color: #f5f5f5; color: #000000">@&nbsp;page&nbsp;contentType</span> <span style="background-color: #f5f5f5; color: #000000">=</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #f5f5f5; color: #000000">text/html;charset=gb2312</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #f5f5f5; color: #000000">&nbsp;</span> <span style="background-color: #ffff00; color: #000000">%&gt;</span> <span style="color: #000000"><br />
加上这句解决jsp页面中的中文乱码显示,tomcat编译完后向客户端输出的html文件不是采<br />
<br />
用中文编码，所以会导致乱码产生。<br />
<br />
2的解决方法<br />
2.1&nbsp;</span> <span style="background-color: #ffff00; color: #000000">&lt;%</span> <span style="background-color: #f5f5f5; color: #000000">request.setCharacterEncoding(</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #f5f5f5; color: #000000">gb2312</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #f5f5f5; color: #000000">);</span> <span style="background-color: #ffff00; color: #000000">%&gt;</span> <span style="color: #000000"><br />
加上这句解决jsp页面中的中文参数传递乱码。<br />
因为浏览器默认使用的编码是&#8220;UTF-8&#8221;发送请求参数。<br />
我们把它改为"gb2312"就ok了。<br />
<br />
2.2&nbsp;String(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");<br />
这句的意思是，把传来的参数全部编码转换成gb2312，这样做的缺点是每次传来一个参数<br />
<br />
都要这样写，很麻烦。<br />
<br />
同样可通过设置server.xml配置文件来实现。<br />
</span><span style="color: #0000ff">&lt;</span> <span style="color: #800000">Connector<br />
</span><span style="color: #ff0000">port</span> <span style="color: #0000ff">="8080"</span> <span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxHttpHeaderSize</span> <span style="color: #0000ff">="8192"</span> <span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxThreads</span> <span style="color: #0000ff">="150"</span> <span style="color: #ff0000">&nbsp;minSpareThreads</span> <span style="color: #0000ff">="25"</span> <span style="color: #ff0000">&nbsp;maxSpareThreads</span> <span style="color: #0000ff">="75"</span> <span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableLookups</span> <span style="color: #0000ff">="false"</span> <span style="color: #ff0000">&nbsp;redirectPort</span> <span style="color: #0000ff">="8443"</span> <span style="color: #ff0000">&nbsp;acceptCount</span> <span style="color: #0000ff">="100"</span> <span style="color: #ff0000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connectionTimeout</span> <span style="color: #0000ff">="20000"</span> <span style="color: #ff0000">&nbsp;disableUploadTimeout</span> <span style="color: #0000ff">="true"</span> <span style="color: #ff0000">&nbsp; <font style="background-color: #7fffd4">URIEncoding</font></span> <span style="color: #0000ff"><font style="background-color: #7fffd4">="gb2312"</font> </span><span style="color: #0000ff">/&gt;</span> <span style="color: #000000"><br />
但是这样就应用到整个webapp中去了。<br />
<br />
另：</span> <span style="background-color: #ffff00; color: #000000">&lt;%</span> <span style="background-color: #f5f5f5; color: #000000">@page&nbsp;pageEncoding</span> <span style="background-color: #f5f5f5; color: #000000">=</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #f5f5f5; color: #000000">gb2312</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #ffff00; color: #000000">%&gt;</span> <span style="color: #000000"><br />
此句是为了让jsp编译器能正确地解码含有中文字符的jsp页面。<br />
<br />
其它方法还可以修改web.xml文件，配置一个过滤器。其原理都一样，只是换种方式而已。<br />
有的书上专门写了一个函数来解决乱码，实际上对比一下就知道那种解决方法的好与坏。<br />
回过头来一看，解决乱码也不过如此。<br />
ok，实际就加上这3句搞定问题。<br />
</span><font style="background-color: #7fffd4"><font color="#7fffd4"><span style="background-color: #ffff00; color: #000000">&lt;%</span> <span style="background-color: #f5f5f5; color: #000000">@page&nbsp;pageEncoding</span> <span style="background-color: #f5f5f5; color: #000000">=</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #f5f5f5; color: #000000">gb2312</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #ffff00; color: #000000">%&gt;</span> </font></font><span style="color: #000000"><br />
</span><font style="background-color: #7fffd4"><font color="#7fffd4"><span style="background-color: #ffff00; color: #000000">&lt;%</span> <span style="background-color: #f5f5f5; color: #000000">@&nbsp;page&nbsp;contentType</span> <span style="background-color: #f5f5f5; color: #000000">=</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #f5f5f5; color: #000000">text/html;charset=gb2312</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #f5f5f5; color: #000000">&nbsp;</span> <span style="background-color: #ffff00; color: #000000">%&gt;</span> </font></font><span style="color: #000000"><br />
</span><font style="background-color: #7fffd4"><font color="#7fffd4"><span style="background-color: #ffff00; color: #000000">&lt;%</span> <span style="background-color: #f5f5f5; color: #000000">request.setCharacterEncoding(</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #f5f5f5; color: #000000">gb2312</span> <span style="background-color: #f5f5f5; color: #000000">"</span> <span style="background-color: #f5f5f5; color: #000000">);</span> <span style="background-color: #ffff00; color: #000000">%&gt;</span> </font></font><span style="color: #000000"><br />
请大家有什么想法，以及有什么不对的地方请各位说明，写在留言上，大家一起讨论。</span> </div>
<br />
转载自：<font style="background-color: #f4f4f4"><a href="http://www.blogjava.net/blackbat/archive/2008/04/27/74865.html "><font style="background-color: #f4f4f4">http://www.blogjava.net/blackbat/archive/2008/04/27/74865.html</font></a></font> 
 <img src ="http://www.blogjava.net/yill/aggbug/290591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yill/" target="_blank">yill</a> 2009-08-10 22:18 <a href="http://www.blogjava.net/yill/archive/2009/08/10/290591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java虚拟机参数</title><link>http://www.blogjava.net/yill/archive/2008/04/24/195741.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Thu, 24 Apr 2008 14:25:00 GMT</pubDate><guid>http://www.blogjava.net/yill/archive/2008/04/24/195741.html</guid><wfw:comment>http://www.blogjava.net/yill/comments/195741.html</wfw:comment><comments>http://www.blogjava.net/yill/archive/2008/04/24/195741.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yill/comments/commentRss/195741.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yill/services/trackbacks/195741.html</trackback:ping><description><![CDATA[This document provides information on typical command-line options and environment variables that can affect the performance characteristics of the Java HotSpot Virtual Machine. Unless otherwise noted, all information in this document pertains to both the Java HotSpot Client VM and the Java HotSpot Server VM.<br />
<br />
Categories of Java HotSpot VM Options&nbsp;<br />
<br />
Standard options recognized by the Java HotSpot VM are described on the Java Application Launcher reference pages for Windows, Solaris and Linux. This document deals exclusively with non-standard options recognized by the Java HotSpot VM:<br />
<br />
&nbsp;&nbsp;&nbsp; * Options that begin with -X are non-standard (not guaranteed to be supported on all VM implementations), and are subject to change without notice in subsequent releases of the JDK.<br />
&nbsp;&nbsp;&nbsp; * Options that are specified with -XX are not stable and are not recommended for casual use. These options are subject to change without notice.<br />
<br />
Default values are listed for Java SE 6 for Solaris Sparc with -server. Some options may vary per architecture/OS/JVM version. Platforms with a differing default value are listed in the description.<br />
<br />
&nbsp;&nbsp;&nbsp; * Boolean options are turned on with -XX:+&lt;option&gt; and turned off with -XX:-&lt;option&gt;.<br />
&nbsp;&nbsp;&nbsp; * Numeric options are set with -XX:&lt;option&gt;=&lt;number&gt;. Numbers can include 'm' or 'M' for megabytes, 'k' or 'K' for kilobytes, and 'g' or 'G' for gigabytes (for example, 32k is the same as 32768).<br />
&nbsp;&nbsp;&nbsp; * String options are set with -XX:&lt;option&gt;=&lt;string&gt;, are usually used to specify a file, a path, or a list of commands<br />
<br />
Flags marked as manageable are dynamically writeable through the JDK management interface (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole. In Monitoring and Managing Java SE 6 Platform Applications, Figure 3 shows an example. The manageable flags can also be set through jinfo -flag.<br />
<br />
The options below are loosely grouped into three categories.<br />
<br />
&nbsp;&nbsp;&nbsp; * Behavioral options change the basic behavior of the VM.<br />
&nbsp;&nbsp;&nbsp; * Performance tuning options are knobs which can be used to tune VM performance.<br />
&nbsp;&nbsp;&nbsp; * Debugging options generally enable tracing, printing, or output of VM information.<br />
<br />
&nbsp;Behavioral Options<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">Option&nbsp;and&nbsp;Default&nbsp;Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">AllowUserSignalHandlers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;not&nbsp;complain&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;the&nbsp;application&nbsp;installs&nbsp;signal&nbsp;handlers.&nbsp;(Relevant&nbsp;to&nbsp;Solaris&nbsp;and&nbsp;Linux&nbsp;only.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:AltStackSize</span><span style="color: #000000;">=</span><span style="color: #000000;">16384</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alternate&nbsp;signal&nbsp;stack&nbsp;size&nbsp;(in&nbsp;Kbytes).&nbsp;(Relevant&nbsp;to&nbsp;Solaris&nbsp;only,&nbsp;removed&nbsp;from&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">DisableExplicitGC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;calls&nbsp;to&nbsp;System.gc(),&nbsp;JVM&nbsp;still&nbsp;performs&nbsp;garbage&nbsp;collection&nbsp;when&nbsp;necessary.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">FailOverToOldVerifier&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fail&nbsp;over&nbsp;to&nbsp;old&nbsp;verifier&nbsp;when&nbsp;the&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;type&nbsp;checker&nbsp;fails.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">HandlePromotionFailure&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;youngest&nbsp;generation&nbsp;collection&nbsp;does&nbsp;not&nbsp;require&nbsp;a&nbsp;guarantee&nbsp;of&nbsp;full&nbsp;promotion&nbsp;of&nbsp;all&nbsp;live&nbsp;objects.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">11</span><span style="color: #000000;">)&nbsp;[</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;and&nbsp;earlier:&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">.]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">MaxFDLimit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bump&nbsp;the&nbsp;number&nbsp;of&nbsp;file&nbsp;descriptors&nbsp;to&nbsp;max.&nbsp;(Relevant&nbsp;&nbsp;to&nbsp;Solaris&nbsp;only.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:PreBlockSpin</span><span style="color: #000000;">=</span><span style="color: #000000;">10</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Spin&nbsp;count&nbsp;variable&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;use&nbsp;with&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseSpinning.&nbsp;Controls&nbsp;the&nbsp;maximum&nbsp;spin&nbsp;iterations&nbsp;allowed&nbsp;before&nbsp;entering&nbsp;operating&nbsp;system&nbsp;thread&nbsp;synchronization&nbsp;code.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">RelaxAccessControlCheck&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Relax&nbsp;the&nbsp;access&nbsp;control&nbsp;checks&nbsp;in&nbsp;the&nbsp;verifier.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">ScavengeBeforeFullGC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;young&nbsp;generation&nbsp;GC&nbsp;prior&nbsp;to&nbsp;a&nbsp;full&nbsp;GC.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseAltSigs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;alternate&nbsp;signals&nbsp;instead&nbsp;of&nbsp;SIGUSR1&nbsp;and&nbsp;SIGUSR2&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;VM&nbsp;internal&nbsp;signals.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">9</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">.&nbsp;Relevant&nbsp;to&nbsp;Solaris&nbsp;only.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseBoundThreads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bind&nbsp;user&nbsp;level&nbsp;threads&nbsp;to&nbsp;kernel&nbsp;threads.&nbsp;(Relevant&nbsp;to&nbsp;Solaris&nbsp;only.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseConcMarkSweepGC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;concurrent&nbsp;mark</span><span style="color: #000000;">-</span><span style="color: #000000;">sweep&nbsp;collection&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;the&nbsp;old&nbsp;generation.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseGCOverheadLimit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;a&nbsp;policy&nbsp;that&nbsp;limits&nbsp;the&nbsp;proportion&nbsp;of&nbsp;the&nbsp;VM</span><span style="color: #000000;">'</span><span style="color: #000000;">s&nbsp;time&nbsp;that&nbsp;is&nbsp;spent&nbsp;in&nbsp;GC&nbsp;before&nbsp;an&nbsp;OutOfMemory&nbsp;error&nbsp;is&nbsp;thrown.&nbsp;(Introduced&nbsp;in&nbsp;6.)</span><span style="color: #000000;"><br />
</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseLWPSynchronization&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;LWP</span><span style="color: #000000;">-</span><span style="color: #000000;">based&nbsp;instead&nbsp;of&nbsp;thread&nbsp;based&nbsp;synchronization.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">.&nbsp;Relevant&nbsp;to&nbsp;Solaris&nbsp;only.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseParallelGC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;parallel&nbsp;garbage&nbsp;collection&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;scavenges.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseParallelOldGC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;parallel&nbsp;garbage&nbsp;collection&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;the&nbsp;full&nbsp;collections.&nbsp;Enabling&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">&nbsp;option&nbsp;automatically&nbsp;sets&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseParallelGC.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseSerialGC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;serial&nbsp;garbage&nbsp;collection.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseSpinning&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;naive&nbsp;spinning&nbsp;on&nbsp;Java&nbsp;monitor&nbsp;before&nbsp;entering&nbsp;operating&nbsp;system&nbsp;thread&nbsp;synchronizaton&nbsp;code.&nbsp;(Relevant&nbsp;to&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;and&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;only.)&nbsp;[</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;multi</span><span style="color: #000000;">-</span><span style="color: #000000;">processor&nbsp;Windows&nbsp;platforms:&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseTLAB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;thread</span><span style="color: #000000;">-</span><span style="color: #000000;">local&nbsp;object&nbsp;allocation&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;known&nbsp;as&nbsp;UseTLE&nbsp;prior&nbsp;to&nbsp;that.)&nbsp;[</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;and&nbsp;earlier,&nbsp;x86&nbsp;or&nbsp;with&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">client:&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseSplitVerifier&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;the&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;type&nbsp;checker&nbsp;with&nbsp;StackMapTable&nbsp;attributes.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">.)[</span><span style="color: #000000;">5.0</span><span style="color: #000000;">:&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseThreadPriorities&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;</span><span style="color: #0000ff;">native</span><span style="color: #000000;">&nbsp;thread&nbsp;priorities.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseVMInterruptibleIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread&nbsp;interrupt&nbsp;before&nbsp;or&nbsp;with&nbsp;EINTR&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;I</span><span style="color: #000000;">/</span><span style="color: #000000;">O&nbsp;operations&nbsp;results&nbsp;in&nbsp;OS_INTRPT.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.&nbsp;Relevant&nbsp;to&nbsp;Solaris&nbsp;only.)</span></div>
<br />
Performance Options<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">Option&nbsp;and&nbsp;Default&nbsp;Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">AggressiveOpts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Turn&nbsp;on&nbsp;point&nbsp;performance&nbsp;compiler&nbsp;optimizations&nbsp;that&nbsp;are&nbsp;expected&nbsp;to&nbsp;be&nbsp;</span><span style="color: #0000ff;">default</span><span style="color: #000000;">&nbsp;in&nbsp;upcoming&nbsp;releases.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:CompileThreshold</span><span style="color: #000000;">=</span><span style="color: #000000;">10000</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Number&nbsp;of&nbsp;method&nbsp;invocations</span><span style="color: #000000;">/</span><span style="color: #000000;">branches&nbsp;before&nbsp;compiling&nbsp;[</span><span style="color: #000000;">-</span><span style="color: #000000;">client:&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">500</span><span style="color: #000000;">]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:LargePageSizeInBytes</span><span style="color: #000000;">=</span><span style="color: #000000;">4m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets&nbsp;the&nbsp;large&nbsp;page&nbsp;size&nbsp;used&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;the&nbsp;Java&nbsp;heap.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.)&nbsp;[amd64:&nbsp;2m.]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:MaxHeapFreeRatio</span><span style="color: #000000;">=</span><span style="color: #000000;">70</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximum&nbsp;percentage&nbsp;of&nbsp;heap&nbsp;free&nbsp;after&nbsp;GC&nbsp;to&nbsp;avoid&nbsp;shrinking.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:MaxNewSize</span><span style="color: #000000;">=</span><span style="color: #000000;">size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximum&nbsp;size&nbsp;of&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;generation&nbsp;(in&nbsp;bytes).&nbsp;Since&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">,&nbsp;MaxNewSize&nbsp;is&nbsp;computed&nbsp;as&nbsp;a&nbsp;function&nbsp;of&nbsp;NewRatio.&nbsp;[</span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;Sparc:&nbsp;32m;&nbsp;</span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;x86:&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">.5m.]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:MaxPermSize</span><span style="color: #000000;">=</span><span style="color: #000000;">64m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Size&nbsp;of&nbsp;the&nbsp;Permanent&nbsp;Generation.&nbsp;&nbsp;[</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;and&nbsp;newer:&nbsp;</span><span style="color: #000000;">64</span><span style="color: #000000;">&nbsp;bit&nbsp;VMs&nbsp;are&nbsp;scaled&nbsp;</span><span style="color: #000000;">30</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;larger;&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">&nbsp;amd64:&nbsp;96m;&nbsp;</span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">client:&nbsp;32m.]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:MinHeapFreeRatio</span><span style="color: #000000;">=</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Minimum&nbsp;percentage&nbsp;of&nbsp;heap&nbsp;free&nbsp;after&nbsp;GC&nbsp;to&nbsp;avoid&nbsp;expansion.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:NewRatio</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ratio&nbsp;of&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">/</span><span style="color: #000000;">old&nbsp;generation&nbsp;sizes.&nbsp;[Sparc&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">client:&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">;&nbsp;x86&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">server:&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">;&nbsp;x86&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">client:&nbsp;</span><span style="color: #000000;">12</span><span style="color: #000000;">.]</span><span style="color: #000000;">-</span><span style="color: #000000;">client:&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">1.3</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">+</span><span style="color: #000000;">),&nbsp;x86:&nbsp;</span><span style="color: #000000;">12</span><span style="color: #000000;">]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:NewSize</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">.125m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default&nbsp;size&nbsp;of&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;generation&nbsp;(in&nbsp;bytes)&nbsp;[</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;and&nbsp;newer:&nbsp;</span><span style="color: #000000;">64</span><span style="color: #000000;">&nbsp;bit&nbsp;VMs&nbsp;are&nbsp;scaled&nbsp;</span><span style="color: #000000;">30</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;larger;&nbsp;x86:&nbsp;1m;&nbsp;x86,&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;and&nbsp;older:&nbsp;640k]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:ReservedCodeCacheSize</span><span style="color: #000000;">=</span><span style="color: #000000;">32m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reserved&nbsp;code&nbsp;cache&nbsp;size&nbsp;(in&nbsp;bytes)&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;maximum&nbsp;code&nbsp;cache&nbsp;size.&nbsp;[Solaris&nbsp;</span><span style="color: #000000;">64</span><span style="color: #000000;">-</span><span style="color: #000000;">bit,&nbsp;amd64,&nbsp;and&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">server&nbsp;x86:&nbsp;48m;&nbsp;in&nbsp;</span><span style="color: #000000;">1.5</span><span style="color: #000000;">.0_06&nbsp;and&nbsp;earlier,&nbsp;Solaris&nbsp;</span><span style="color: #000000;">64</span><span style="color: #000000;">-</span><span style="color: #000000;">bit&nbsp;and&nbsp;and64:&nbsp;1024m.]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:SurvivorRatio</span><span style="color: #000000;">=</span><span style="color: #000000;">8</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ratio&nbsp;of&nbsp;eden</span><span style="color: #000000;">/</span><span style="color: #000000;">survivor&nbsp;space&nbsp;size&nbsp;[Solaris&nbsp;amd64:&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">;&nbsp;Sparc&nbsp;in&nbsp;</span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">:&nbsp;</span><span style="color: #000000;">25</span><span style="color: #000000;">;&nbsp;other&nbsp;Solaris&nbsp;platforms&nbsp;in&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;and&nbsp;earlier:&nbsp;</span><span style="color: #000000;">32</span><span style="color: #000000;">]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:TargetSurvivorRatio</span><span style="color: #000000;">=</span><span style="color: #000000;">50</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Desired&nbsp;percentage&nbsp;of&nbsp;survivor&nbsp;space&nbsp;used&nbsp;after&nbsp;scavenge.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:ThreadStackSize</span><span style="color: #000000;">=</span><span style="color: #000000;">512</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread&nbsp;Stack&nbsp;Size&nbsp;(in&nbsp;Kbytes).&nbsp;(</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;means&nbsp;use&nbsp;</span><span style="color: #0000ff;">default</span><span style="color: #000000;">&nbsp;stack&nbsp;size)&nbsp;[Sparc:&nbsp;</span><span style="color: #000000;">512</span><span style="color: #000000;">;&nbsp;Solaris&nbsp;x86:&nbsp;</span><span style="color: #000000;">320</span><span style="color: #000000;">&nbsp;(was&nbsp;</span><span style="color: #000000;">256</span><span style="color: #000000;">&nbsp;prior&nbsp;in&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;and&nbsp;earlier);&nbsp;Sparc&nbsp;</span><span style="color: #000000;">64</span><span style="color: #000000;">&nbsp;bit:&nbsp;</span><span style="color: #000000;">1024</span><span style="color: #000000;">;&nbsp;Linux&nbsp;amd64:&nbsp;</span><span style="color: #000000;">1024</span><span style="color: #000000;">&nbsp;(was&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;in&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;and&nbsp;earlier);&nbsp;all&nbsp;others&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">.]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseBiasedLocking&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;biased&nbsp;locking.&nbsp;For&nbsp;more&nbsp;details,&nbsp;see&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">&nbsp;tuning&nbsp;example.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.)&nbsp;[</span><span style="color: #000000;">5.0</span><span style="color: #000000;">:&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">]<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseFastAccessorMethods&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;optimized&nbsp;versions&nbsp;of&nbsp;Get</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Primitive</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">Field.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseISM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;Intimate&nbsp;Shared&nbsp;Memory.&nbsp;[Not&nbsp;accepted&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;non</span><span style="color: #000000;">-</span><span style="color: #000000;">Solaris&nbsp;platforms.]&nbsp;For&nbsp;details,&nbsp;see&nbsp;Intimate&nbsp;Shared&nbsp;Memory.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseLargePages&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;large&nbsp;page&nbsp;memory.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">.)&nbsp;For&nbsp;details,&nbsp;see&nbsp;Java&nbsp;Support&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;Large&nbsp;Memory&nbsp;Pages.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseMPSS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;Multiple&nbsp;Page&nbsp;Size&nbsp;Support&nbsp;w</span><span style="color: #000000;">/</span><span style="color: #000000;">4mb&nbsp;pages&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;the&nbsp;heap.&nbsp;Do&nbsp;not&nbsp;use&nbsp;with&nbsp;ISM&nbsp;as&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">&nbsp;replaces&nbsp;the&nbsp;need&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;ISM.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;Relevant&nbsp;to&nbsp;Solaris&nbsp;</span><span style="color: #000000;">9</span><span style="color: #000000;">&nbsp;and&nbsp;newer.)&nbsp;[</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;and&nbsp;earlier:&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">]</span></div>
<br />
Debugging Options<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">Option&nbsp;and&nbsp;Default&nbsp;Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">CITime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prints&nbsp;time&nbsp;spent&nbsp;in&nbsp;JIT&nbsp;Compiler.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:ErrorFile</span><span style="color: #000000;">=</span><span style="color: #000000;">.</span><span style="color: #000000;">/</span><span style="color: #000000;">hs_err_pid</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">pid</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">.log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;an&nbsp;error&nbsp;occurs,&nbsp;save&nbsp;the&nbsp;error&nbsp;data&nbsp;to&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">&nbsp;file.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">ExtendedDTraceProbes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;performance</span><span style="color: #000000;">-</span><span style="color: #000000;">impacting&nbsp;dtrace&nbsp;probes.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.&nbsp;Relevant&nbsp;to&nbsp;Solaris&nbsp;only.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:HeapDumpPath</span><span style="color: #000000;">=</span><span style="color: #000000;">.</span><span style="color: #000000;">/</span><span style="color: #000000;">java_pid</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">pid</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">.hprof&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Path&nbsp;to&nbsp;directory&nbsp;or&nbsp;filename&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;heap&nbsp;dump.&nbsp;Manageable.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">12</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">7</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">HeapDumpOnOutOfMemoryError&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dump&nbsp;heap&nbsp;to&nbsp;file&nbsp;when&nbsp;java.lang.OutOfMemoryError&nbsp;is&nbsp;thrown.&nbsp;Manageable.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">12</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">7</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:OnError</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;cmd&nbsp;args&gt;;&lt;cmd&nbsp;args&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Run&nbsp;user</span><span style="color: #000000;">-</span><span style="color: #000000;">defined&nbsp;commands&nbsp;on&nbsp;fatal&nbsp;error.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;update&nbsp;</span><span style="color: #000000;">9</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:OnOutOfMemoryError</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;cmd&nbsp;args&gt;;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cmd&nbsp;args</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Run&nbsp;user-defined&nbsp;commands&nbsp;when&nbsp;an&nbsp;OutOfMemoryError&nbsp;is&nbsp;first&nbsp;thrown.&nbsp;(Introduced&nbsp;in&nbsp;1.4.2&nbsp;update&nbsp;12,&nbsp;6)</span><span style="color: #000000;"><br />
</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintClassHistogram&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print&nbsp;a&nbsp;histogram&nbsp;of&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;instances&nbsp;on&nbsp;Ctrl</span><span style="color: #000000;">-</span><span style="color: #000000;">Break.&nbsp;Manageable.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">.)&nbsp;The&nbsp;jmap&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">histo&nbsp;command&nbsp;provides&nbsp;equivalent&nbsp;functionality.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintConcurrentLocks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print&nbsp;java.util.concurrent&nbsp;locks&nbsp;in&nbsp;Ctrl</span><span style="color: #000000;">-</span><span style="color: #000000;">Break&nbsp;thread&nbsp;dump.&nbsp;Manageable.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.)&nbsp;The&nbsp;jstack&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">l&nbsp;command&nbsp;provides&nbsp;equivalent&nbsp;functionality.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintCommandLineFlags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print&nbsp;flags&nbsp;that&nbsp;appeared&nbsp;on&nbsp;the&nbsp;command&nbsp;line.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">5.0</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintCompilation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print&nbsp;message&nbsp;when&nbsp;a&nbsp;method&nbsp;is&nbsp;compiled.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintGC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print&nbsp;messages&nbsp;at&nbsp;garbage&nbsp;collection.&nbsp;Manageable.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintGCDetails&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print&nbsp;more&nbsp;details&nbsp;at&nbsp;garbage&nbsp;collection.&nbsp;Manageable.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintGCTimeStamps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print&nbsp;timestamps&nbsp;at&nbsp;garbage&nbsp;collection.&nbsp;Manageable&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintTenuringDistribution&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print&nbsp;tenuring&nbsp;age&nbsp;information.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">TraceClassLoading&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trace&nbsp;loading&nbsp;of&nbsp;classes.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">TraceClassLoadingPreorder&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trace&nbsp;all&nbsp;classes&nbsp;loaded&nbsp;in&nbsp;order&nbsp;referenced&nbsp;(not&nbsp;loaded).&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">TraceClassResolution&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trace&nbsp;constant&nbsp;pool&nbsp;resolutions.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">.)<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">TraceClassUnloading&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trace&nbsp;unloading&nbsp;of&nbsp;classes.<br />
<br />
</span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">TraceLoaderConstraints&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trace&nbsp;recording&nbsp;of&nbsp;loader&nbsp;constraints.&nbsp;(Introduced&nbsp;in&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.)</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/yill/aggbug/195741.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yill/" target="_blank">yill</a> 2008-04-24 22:25 <a href="http://www.blogjava.net/yill/archive/2008/04/24/195741.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate 一对多查询的记录重复问题</title><link>http://www.blogjava.net/yill/archive/2008/04/22/194655.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Mon, 21 Apr 2008 16:14:00 GMT</pubDate><guid>http://www.blogjava.net/yill/archive/2008/04/22/194655.html</guid><wfw:comment>http://www.blogjava.net/yill/comments/194655.html</wfw:comment><comments>http://www.blogjava.net/yill/archive/2008/04/22/194655.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yill/comments/commentRss/194655.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yill/services/trackbacks/194655.html</trackback:ping><description><![CDATA[由于Hibernate的强大，我们对数据库的操作也省心了不少，但是hibernate自动生成的一系列sql，也许并不是如我们所想象的那样，所以，我们又多了一些本来不要操心的事情。比如在一对多的查询中，就有可能存在查询记录重复的问题。<br />
<br />
有如下两个对象：文章和关键字。它们之间的关系，很明显，是一对多的关系，一个文章可以有很多的关键字。<br />
<br />
假设有文章atricleA、articleB，articleA有关键字keyword1、keyword2，articleB有关键字keyword3、keyword4。<br />
我们现在想查询含有关键字keyword1或者keyword3的所有文章列表，正确的结果应该是articleA和articleB两条记录。然而，如果使用hibernate不当，有可能你得到的是articleA、articleA、articleB、articleB四条记录，其中两条是重复的。<br />
<br />
这是怎么发生的呢？<br />
如果我们这样使用hibernate来实现这个查询：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">StringBuffer&nbsp;queryString&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringBuffer();<br />
queryString.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">from&nbsp;ArticleData&nbsp;where&nbsp;keyword=?&nbsp;or&nbsp;keyword=?</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<br />
String[]&nbsp;param&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;String[]{</span><span style="color: #000000;">"</span><span style="color: #000000;">keyword1</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">keyword3</span><span style="color: #000000;">"</span><span style="color: #000000;">};<br />
<br />
Query&nbsp;query&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;session.createQuery(queryString&nbsp;);<br />
<br />
query.list();<br />
</span></div>
<br />
看看hibernate给我们生成的sql语句：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">select</span><span style="color: #000000;">&nbsp;article_table_.</span><span style="color: #808080;">*</span><span style="color: #000000;"> </span><span style="color: #0000ff;"><br />
from</span><span style="color: #000000;">&nbsp;articletable&nbsp;article_table_,keywordtable&nbsp;keyword_table1_&nbsp;,keywordtable&nbsp;keyword_table2_ <br />
</span><span style="color: #0000ff;">where</span><span style="color: #000000;">&nbsp;article_table_.id</span><span style="color: #808080;">=</span><span style="color: #000000;">keyword_table1_.articleid&nbsp;</span><span style="color: #808080;">and</span><span style="color: #000000;">&nbsp;article_table_.id</span><span style="color: #808080;">=</span><span style="color: #000000;">keyword_table2_.articleid </span><span style="color: #808080;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and</span><span style="color: #000000;">&nbsp;(keyword_table1_.name</span><span style="color: #808080;">=</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">keyword1</span><span style="color: #ff0000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">or</span><span style="color: #000000;">&nbsp;keyword_table2_.name</span><span style="color: #808080;">=</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">keyword3</span><span style="color: #ff0000;">'</span><span style="color: #000000;">)</span></div>
根据这个sql，我们可以得出，满足where约束的有如下几个组合：<br />
articleA&nbsp;&nbsp; keyword1&nbsp; keyword1<br />
articleA&nbsp;&nbsp; keyword1&nbsp; keyword2<br />
aritcleB&nbsp;&nbsp; keyword3&nbsp; keyword3<br />
articleB&nbsp;&nbsp; keyword3&nbsp; keyword4<br />
正是我们之前所说得到的错误结果。<br />
<br />
仔细分析这个sql，其实问题就出在hibernate生成sql的时候，对同一个表keywordtable查询了两次（在from中出现两次），因此就有了组合的可能性，可以想见，如果再多几个需要查询的关键字，同一个记录重复的次数会更多。<br />
<br />
其实，要正确的破解这个问题，我们可以自己写sql语句，使用hibernate同样支持的原生sql查询，不使用hibernate的hql查询。<br />
<br />
hibernate在给我们带来很多便利性的同时，也给我们多多少少带来了一些麻烦，而这些问题的定位成本可能也会很高。要使用好工具，就要知道工具的优缺点，尤其是缺点要有足够的风险控制。<br />
<br />
革命尚未成功，同志仍需努力！<br />
<br />
<img src ="http://www.blogjava.net/yill/aggbug/194655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yill/" target="_blank">yill</a> 2008-04-22 00:14 <a href="http://www.blogjava.net/yill/archive/2008/04/22/194655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 简介</title><link>http://www.blogjava.net/yill/archive/2008/03/31/189882.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Mon, 31 Mar 2008 14:17:00 GMT</pubDate><guid>http://www.blogjava.net/yill/archive/2008/03/31/189882.html</guid><wfw:comment>http://www.blogjava.net/yill/comments/189882.html</wfw:comment><comments>http://www.blogjava.net/yill/archive/2008/03/31/189882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yill/comments/commentRss/189882.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yill/services/trackbacks/189882.html</trackback:ping><description><![CDATA[<p>&nbsp; Tomcat 是一个基于组件的服务器，它的构成组件是可配置的，其中最外层的组件是 Catalina Servlet 容器，其他的组件都是按照一定的格式要求配置在这个顶层容器中。</p>
<p>Tomcat的各个组件在$CATALINA_HOME/conf/server.xml文件中配置，其基本结构如下：</p>
<pre><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Server</span><span style="color: #0000ff;">&gt;</span>				<br />
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Service</span><span style="color: #0000ff;">&gt;</span>				<br />
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Connector</span> <span style="color: #0000ff;">/&gt;</span>		<br />
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Engine</span><span style="color: #0000ff;">&gt;</span>			<br />
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Host</span><span style="color: #0000ff;">&gt;</span>			<br />
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Context</span> <span style="color: #0000ff;">/&gt;</span>	<br />
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Host</span><span style="color: #0000ff;">&gt;</span>       <br />
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Engine</span><span style="color: #0000ff;">&gt;</span>       <br />
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Service</span><span style="color: #0000ff;">&gt;</span>          <br />
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Server</span><span style="color: #0000ff;">&gt;</span>              <br />
</pre>
<p>&nbsp;<a href="http://www.blogjava.net/images/blogjava_net/yill/WindowsLiveWriter/c18736a5106a_1272E/%E7%BB%98%E5%9B%BE9_2.jpg"><img style="border: 0px none ;" alt="绘图9" src="http://www.blogjava.net/images/blogjava_net/yill/WindowsLiveWriter/c18736a5106a_1272E/%E7%BB%98%E5%9B%BE9_thumb.jpg" border="0" height="108" width="244" /></a> </p>
<p>web.xml文件基本格式：(大小写敏感、元素次序敏感)</p>
<pre><span style="color: #0000ff;">&lt;?</span>xml version="1.0" encoding="ISO-8859-1"<span style="color: #0000ff;">?&gt;</span>
<span style="color: #0000ff;">&lt;</span>!DOCTYPE web-app PUBLIC "-//Sun Mivorsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">web</span>-<span style="color: #ff0000;">app</span> <span style="color: #ff0000;">xmlns</span>=<span style="color: #0000ff;">"http://java.sun.com/xml/ns/j2ee"</span>
<span style="color: #ff0000;">xmlns</span>:<span style="color: #ff0000;">xsi</span>=<span style="color: #0000ff;">"http://www.w3.org/2001/XMLSchema-instance"</span>
<span style="color: #ff0000;">xsi</span>:<span style="color: #ff0000;">schemaLocation</span>=<span style="color: #0000ff;">"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span>
<span style="color: #ff0000;">version</span>=<span style="color: #0000ff;">"2.4"</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">icon</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">small</span>-<span style="color: #ff0000;">icon</span><span style="color: #0000ff;">&gt;</span>/images/app_small.gif<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">small</span>-icon<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">large</span>-<span style="color: #ff0000;">icon</span><span style="color: #0000ff;">&gt;</span>/images/app_large.gif<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">large</span>-icon<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">icon</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">display</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>Application name<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">display</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>Description<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">distribute</span> <span style="color: #0000ff;">/&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">context</span>-<span style="color: #ff0000;">param</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>contextParameter<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">value</span><span style="color: #0000ff;">&gt;</span>test<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param</span>-value<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>It is a test parameter.<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">context</span>-param<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>Set Character Encoding<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">class</span><span style="color: #0000ff;">&gt;</span>filters.SetCharacterEncodingFilter<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span>-class<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">init</span>-<span style="color: #ff0000;">param</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>encoding<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">value</span><span style="color: #0000ff;">&gt;</span>EUC JP<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param</span>-value<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">init</span>-param<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>Set Character Encoding<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url</span>-<span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">&gt;</span>/*<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url</span>-pattern<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span>-mapping<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">listener</span>-<span style="color: #ff0000;">class</span><span style="color: #0000ff;">&gt;</span>listeners.SessionListener<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">listener</span>-class<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>snoop<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet</span>-<span style="color: #ff0000;">class</span><span style="color: #0000ff;">&gt;</span>SnoopServlet<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet</span>-class<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">init</span>-<span style="color: #ff0000;">param</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>foo<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">value</span><span style="color: #0000ff;">&gt;</span>bar<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param</span>-value<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">init</span>-param<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">run</span>-<span style="color: #ff0000;">as</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>Security role for anonymous access<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">role</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>tomcat<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">role</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">run</span>-as<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">load</span>-<span style="color: #ff0000;">on</span>-<span style="color: #ff0000;">startup</span><span style="color: #0000ff;">&gt;</span>1<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">load</span>-on-statup<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>JspServlet<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">jsp</span>-<span style="color: #ff0000;">file</span><span style="color: #0000ff;">&gt;</span>/test.jsp<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">jsp</span>-file<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">init</span>-<span style="color: #ff0000;">param</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>firstName<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">value</span><span style="color: #0000ff;">&gt;</span>tomcat<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param</span>-value<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">init</span>-param<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">load</span>-<span style="color: #ff0000;">on</span>-<span style="color: #ff0000;">startup</span><span style="color: #0000ff;">&gt;</span>2<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">load</span>-on-startup<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>snoop<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url</span>-<span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">&gt;</span>/snoop<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet</span>-mapping<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">session</span>-<span style="color: #ff0000;">config</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">session</span>-<span style="color: #ff0000;">timeout</span><span style="color: #0000ff;">&gt;</span>120<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">session</span>-timeout<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">session</span>-config<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mime</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">extension</span><span style="color: #0000ff;">&gt;</span>htm<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">extension</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mime</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">&gt;</span>text/html<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mime</span>-type<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mime</span>-mapping<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">welcome</span>-<span style="color: #ff0000;">file</span>-<span style="color: #ff0000;">list</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">welcome</span>-<span style="color: #ff0000;">file</span><span style="color: #0000ff;">&gt;</span>index.jsp<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">welcome</span>-file<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">welcome</span>-<span style="color: #ff0000;">file</span><span style="color: #0000ff;">&gt;</span>index.html<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">welcome</span>-file<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">welcome</span>-file-list<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">error</span>-<span style="color: #ff0000;">page</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">error</span>-<span style="color: #ff0000;">code</span><span style="color: #0000ff;">&gt;</span>404<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">error</span>-code<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">location</span><span style="color: #0000ff;">&gt;</span>/404.jsp<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">location</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">error</span>-page<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">error</span>-<span style="color: #ff0000;">page</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">exception</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">&gt;</span>packagename.classname<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">exception</span>-type<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">location</span><span style="color: #0000ff;">&gt;</span>exception.jsp<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">location</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">error</span>-page<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">taglib</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">taglib</span>-<span style="color: #ff0000;">url</span><span style="color: #0000ff;">&gt;</span>http://jakarta.apache.org/tomcat/debug-taglib<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">taglib</span>-uri<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">taglib</span>-<span style="color: #ff0000;">location</span><span style="color: #0000ff;">&gt;</span>/WEB-INF/jsp/debug-taglib.tld<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">taglib</span>-location<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">taglib</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">resource</span>-<span style="color: #ff0000;">env</span>-<span style="color: #ff0000;">ref</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">resource</span>-<span style="color: #ff0000;">env</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>jms/StockQueue<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">resource</span>-env-ref-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">resource</span>-env-ref<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">resource</span>-<span style="color: #ff0000;">ref</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">res</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>mail/Session<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">res</span>-ref-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">res</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">&gt;</span>javax.mail.Sesssion<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">res</span>-type<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">res</span>-<span style="color: #ff0000;">auth</span><span style="color: #0000ff;">&gt;</span>Container<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">res</span>-auth<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">resource</span>-<span style="color: #ff0000;">ref</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">security</span>-<span style="color: #ff0000;">constraint</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">display</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>Example Security Constraint<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">display</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">web</span>-<span style="color: #ff0000;">resource</span>-<span style="color: #ff0000;">collection</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">web</span>-<span style="color: #ff0000;">resource</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>Protected Area<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">web</span>-resource-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url</span>-<span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">&gt;</span>/jsp/security/proctected/*<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url</span>-pattern<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">http</span>-<span style="color: #ff0000;">method</span><span style="color: #0000ff;">&gt;</span>DELETE<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">http</span>-method<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">http</span>-<span style="color: #ff0000;">method</span><span style="color: #0000ff;">&gt;</span>GET<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">http</span>-method<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">http</span>-<span style="color: #ff0000;">method</span><span style="color: #0000ff;">&gt;</span>POST<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">http</span>-method<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">http</span>-<span style="color: #ff0000;">method</span><span style="color: #0000ff;">&gt;</span>PUT<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">http</span>-method<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">web</span>-resource-collection<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">auth</span>-<span style="color: #ff0000;">constraint</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">role</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>tomcat<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">role</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">role</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>role1<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">role</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">auth</span>-constraint<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">security</span>-constraint<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">login</span>-<span style="color: #ff0000;">config</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">auth</span>-<span style="color: #ff0000;">method</span><span style="color: #0000ff;">&gt;</span>FORM<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">auth</span>-method<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">realm</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>Example Form-Based Authentication Area<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">realm</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">form</span>-<span style="color: #ff0000;">login</span>-<span style="color: #ff0000;">config</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">form</span>-<span style="color: #ff0000;">login</span>-<span style="color: #ff0000;">page</span><span style="color: #0000ff;">&gt;</span>/jsp/security/protected/login.jsp<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">form</span>-login-page<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">form</span>-<span style="color: #ff0000;">error</span>-<span style="color: #ff0000;">page</span><span style="color: #0000ff;">&gt;</span>/jsp/security/protected/error.jsp<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">form</span>-error-page<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">form</span>-login-config<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">login</span>-config<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">security</span>-<span style="color: #ff0000;">role</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">role</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>tomcat<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">role</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">security</span>-role<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">env</span>-<span style="color: #ff0000;">entry</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">env</span>-<span style="color: #ff0000;">entry</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>minExemptions<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">env</span>-entry-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">env</span>-<span style="color: #ff0000;">entry</span>-<span style="color: #ff0000;">value</span><span style="color: #0000ff;">&gt;</span>1<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">env</span>-entry-value<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">env</span>-<span style="color: #ff0000;">entry</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">&gt;</span>java.lang.Integer<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">env</span>-entry-type<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">env</span>-entry<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">ref</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>Example EJB Reference<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>ejb/Account<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ejb</span>-ref-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">&gt;</span>Entity<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ejb</span>-ref-type<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">home</span><span style="color: #0000ff;">&gt;</span>com.mycompany.mypackage.AccountHome<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">home</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">remote</span><span style="color: #0000ff;">&gt;</span>com.mycompany.mypackage.AccountRemote<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">remote</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ejb</span>-ref<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">local</span>-<span style="color: #ff0000;">ref</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>Example Local EJB Reference<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>ejb/ProcessOrder<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ejb</span>-ref-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">&gt;</span>Session<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ejb</span>-ref-type<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">local</span>-<span style="color: #ff0000;">home</span><span style="color: #0000ff;">&gt;</span>com.mycompany.mypackage.ProcessOrderHome<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">local</span>-home<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">local</span><span style="color: #0000ff;">&gt;</span>com.mycompany.mypackage.ProcessOrder<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">local</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ejb</span>-local-ref<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">web</span>-app<span style="color: #0000ff;">&gt;</span></pre>
<pre>&nbsp;</pre>
<pre><span style="color: #0000ff;">servlet 2.4中新增标签：</span></pre>
<pre><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">locale</span>-<span style="color: #ff0000;">encoding</span>-<span style="color: #ff0000;">mapping</span>-<span style="color: #ff0000;">list</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">locale</span>-<span style="color: #ff0000;">encoding</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">locale</span><span style="color: #0000ff;">&gt;</span>ja<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">locale</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">encoding</span><span style="color: #0000ff;">&gt;</span>Shift_JIS<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">encoding</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">locale</span>-encoding-mapping<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">locale</span>-<span style="color: #ff0000;">encoding</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">locale</span><span style="color: #0000ff;">&gt;</span>zh_TW<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">locale</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">encoding</span><span style="color: #0000ff;">&gt;</span>Big5<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">encoding</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">locale</span>-encoding-mapping<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">locale</span>-encoding-mapping-list<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>Logging Filter<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url</span>-<span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">&gt;</span>/products/*<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url</span>-pattern<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">&gt;</span>REQUEST<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">&gt;</span>FORWARD<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">&gt;</span>INCLUDE<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">&gt;</span>ERROR<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span>-mapping<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">jsp</span>-<span style="color: #ff0000;">config</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">taglib</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">taglib</span>-<span style="color: #ff0000;">uri</span><span style="color: #0000ff;">&gt;</span>Taglib<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">taglib</span>-uri<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">taglib</span>-<span style="color: #ff0000;">location</span><span style="color: #0000ff;">&gt;</span>/WEB-INF/tlds/mytaglib.tld<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">taglib</span>-location<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">taglib</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">jsp</span>-<span style="color: #ff0000;">property</span>-<span style="color: #ff0000;">group</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>Special property group for jsp configuration.<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">description</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">display</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">&gt;</span>JspConfiguration<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">display</span>-name<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url</span>-<span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">&gt;</span>/jsp/*<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url</span>-pattern<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">el</span>-<span style="color: #ff0000;">ignored</span><span style="color: #0000ff;">&gt;</span>true<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">el</span>-ignored<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">page</span>-<span style="color: #ff0000;">encoding</span><span style="color: #0000ff;">&gt;</span>UTF-8<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">page</span>-encoding<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">scripting</span>-<span style="color: #ff0000;">invalid</span><span style="color: #0000ff;">&gt;</span>true<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">scripting</span>-invalid<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">include</span>--<span style="color: #ff0000;">prelude</span><span style="color: #0000ff;">&gt;</span>/include/prelude.jsp<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">include</span>-prelude<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">include</span>-<span style="color: #ff0000;">coda</span><span style="color: #0000ff;">&gt;</span>/include/coda.jsp<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">include</span>-coda<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">jsp</span>-property-group<span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">jsp</span>-config<span style="color: #0000ff;">&gt;</span></pre>
<img src ="http://www.blogjava.net/yill/aggbug/189882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yill/" target="_blank">yill</a> 2008-03-31 22:17 <a href="http://www.blogjava.net/yill/archive/2008/03/31/189882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java虚拟机</title><link>http://www.blogjava.net/yill/archive/2008/03/29/189472.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Sat, 29 Mar 2008 08:52:00 GMT</pubDate><guid>http://www.blogjava.net/yill/archive/2008/03/29/189472.html</guid><wfw:comment>http://www.blogjava.net/yill/comments/189472.html</wfw:comment><comments>http://www.blogjava.net/yill/archive/2008/03/29/189472.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yill/comments/commentRss/189472.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yill/services/trackbacks/189472.html</trackback:ping><description><![CDATA[<img height="397" alt="" src="http://www.blogjava.net/images/blogjava_net/yill/a.GIF" width="550" border="0" /><br />
图一&nbsp; Java虚拟机的内部体系结构<br />
<br />
&nbsp;
<p><span style="font-family: 宋体">每个</span>Java<span style="font-family: 宋体">虚拟机实例都有一个方法区以及一个堆，它们是由该虚拟机实例中所有线程共享的。</span><br />
<span style="font-family: 宋体">当虚拟机装载一个</span>class<span style="font-family: 宋体">文件时，它会从这个</span>class<span style="font-family: 宋体">文件包含的二进制数据中解析类型信息，然后把这些类型信息放到方法区中；</span><br />
<span style="font-family: 宋体">当程序运行时，虚拟机会把所有该程序在运行时创建的对象都放到堆中；</span><br />
<span style="font-family: 宋体">当每一个新线程被创建时，它都将得到它自己的</span>PC<span style="font-family: 宋体">寄存器（程序计数器）以及一个</span>Java<span style="font-family: 宋体">栈，如果线程正在执行的是一个</span>java<span style="font-family: 宋体">方法（非本地方法），那么</span>PC<span style="font-family: 宋体">寄存器的值将总是指示下一条将被执行的指令，而它的</span>Java<span style="font-family: 宋体">栈则总是存储该线程中</span>java<span style="font-family: 宋体">方法调用的状态</span>—<span style="font-family: 宋体">包括它的局部变量，被调用时传进来的参数，它的返回值，以及运算的中间结果等等。而本地方法调用的状态，则是以某种依赖与具体实现的方式存储在本地方法栈中，也可能是在寄存器或者其他某些与特定实现相关的内存中。</span></p>
<p>Java<span style="font-family: 宋体">栈由许多栈帧（</span>stack frme<span style="font-family: 宋体">）或者说帧（</span>frame<span style="font-family: 宋体">）组成，一个栈帧包含一个方法调用。当线程调用一个</span>Java<span style="font-family: 宋体">方法时，虚拟机压入一个新的栈帧到该线程的</span>java<span style="font-family: 宋体">栈中，当该方法返回时，这个栈帧被从</span>Java<span style="font-family: 宋体">栈中弹出并抛弃。</span></p>
<p>Java<span style="font-family: 宋体">虚拟机没有寄存器，其指令集使用</span>Java<span style="font-family: 宋体">栈来存储中间数据。</span></p>
<p><strong><span style="font-family: 宋体">数据类型</span></strong></p>
<img height="429" alt="" src="http://www.blogjava.net/images/blogjava_net/yill/b.GIF" width="566" border="0" /><br />
<br />
&nbsp;
<p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span lang="EN-US">Java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虚拟机是通过某些数据类型来执行计算的，数据类型及其运算都是由</span><span lang="EN-US">java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虚拟机规范严格定义的。数据类型可以分为两种：基本类型和引用类型。基本类型的变量持有原始值，而引用类型的变量持有引用值。术语&#8220;引用值&#8221;指的是对某个对象的引用，而不是该对象本身，与此相对，原始值则是真正的原始数据。</span><span lang="EN-US">Java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语言中的所有基本类型同样也都是</span><span lang="EN-US">java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虚拟机中的基本类型，但是</span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有点特别，虽然虚拟机也把</span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">看做基本类型，但是指令集对</span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只有很有限的支持。当编译器把</span><span lang="EN-US">java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">源码编译成字节码时，它会用</span><span lang="EN-US">int</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或</span><span lang="EN-US">byte</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来表示</span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。设计</span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">值的操作会使用</span><span lang="EN-US">int</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数组是当作</span><span lang="EN-US">byte</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数组来访问的。但是在&#8220;堆&#8221;区中，它也可以被表示为位域。<br />
<br />
&nbsp;
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127">
            <p><span style="font-family: 宋体">类型</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441">
            <p><span style="font-family: 宋体">范围</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127">
            <p>byte</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441">
            <p>8bit<span style="font-family: 宋体">，带符号，二进制补码，</span>[-<span style="font-family: 宋体">2</span><span style="font-family: 宋体">∧7,2∧7-1]</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127">
            <p>short</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441">
            <p>16bit<span style="font-family: 宋体">，带符号，二进制补码，</span>[-<span style="font-family: 宋体">2</span><span style="font-family: 宋体">∧15,2∧15-1]</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127">
            <p>int</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441">
            <p>32bit<span style="font-family: 宋体">，带符号，二进制补码，</span>[-<span style="font-family: 宋体">2</span><span style="font-family: 宋体">∧31,2∧31-1]</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127">
            <p>long</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441">
            <p>64bit<span style="font-family: 宋体">，带符号，二进制补码，</span>[-<span style="font-family: 宋体">2</span><span style="font-family: 宋体">∧63,2∧63-1]</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127">
            <p>char</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441">
            <p>16bit<span style="font-family: 宋体">，不带符号，</span>Unicode<span style="font-family: 宋体">字符，</span>[0<span style="font-family: 宋体">,2</span><span style="font-family: 宋体">∧16-1]</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127">
            <p>float</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441">
            <p>32bit<span style="font-family: 宋体">，</span>IEEE 754<span style="font-family: 宋体">标准单精度浮点数</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127">
            <p>double</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441">
            <p>64bit<span style="font-family: 宋体">，</span>IEEE 754<span style="font-family: 宋体">标准双进度浮点数</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127">
            <p>returnAddress</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441">
            <p><span style="font-family: 宋体">同一方法中某操作码的地址</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127">
            <p>reference</p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441">
            <p><span style="font-family: 宋体">堆中对某对象的引用，或者是</span>null</p>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
&nbsp; </p>
<p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span lang="EN-US">Java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虚拟机中，最基本的数据单元就是字（</span><span lang="EN-US">word</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">），它的大小是由每个虚拟机实现的设计者来决定的。字长必须足够大，至少是一个字单元就足以持有</span><span lang="EN-US">byte</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US">short</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US">int</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US">char</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US">float</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US">returnAddress</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US">reference</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类型的值，而两个字单元就足以持有</span><span lang="EN-US">long</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或者</span><span lang="EN-US">double</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类型的值。因此，虚拟机实现的设计者至少得选择</span><span lang="EN-US">32</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位作为字长。</span></p>
<p class="MsoNormal" style="text-indent: 20.6pt; mso-char-indent-count: 2.0"><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法区</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">由于所有线程都共享方法区，因此它们对方法区数据的访问必须被设计为线程安全的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类型信息</span><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp; </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对每个装载的类型，虚拟机都会在方法区中存储以下类型信息：</span></p>
<p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个类型的全限定名</span></p>
<p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个类型的直接超类的全限定名</span></p>
<p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个类型是类类型还是接口类型</span></p>
<p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个类型的访问修饰符</span></p>
<p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">任何直接超接口的全限定名的有序列表</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">除这些基本信息外，还需要如下信息：</span></p>
<p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">该类型的常量池</span></p>
<p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">字段信息</span></p>
<p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法信息</span></p>
<p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">除了常量以外的所有类变量</span></p>
<p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个到类</span><span lang="EN-US">ClassLoader</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的引用</span></p>
<p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">一个到</span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Class</span><span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">类的引用</span></span></p>
 <img src ="http://www.blogjava.net/yill/aggbug/189472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yill/" target="_blank">yill</a> 2008-03-29 16:52 <a href="http://www.blogjava.net/yill/archive/2008/03/29/189472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Inside The JVM Part2: java如何实现安全性</title><link>http://www.blogjava.net/yill/archive/2008/03/22/187842.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Fri, 21 Mar 2008 19:50:00 GMT</pubDate><guid>http://www.blogjava.net/yill/archive/2008/03/22/187842.html</guid><wfw:comment>http://www.blogjava.net/yill/comments/187842.html</wfw:comment><comments>http://www.blogjava.net/yill/archive/2008/03/22/187842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yill/comments/commentRss/187842.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yill/services/trackbacks/187842.html</trackback:ping><description><![CDATA[<p>网络移动性和平台无关性略过。。。看看java如何实现安全性<br />
<br />
Java通过提供一个&#8221;安全沙箱&#8220;来保证从网络或者其他不信任的地方下载并运行的程序不会破坏本地数据，为了确保沙箱是可靠的，java安全模型对体系结构的各方面都进行了考虑。组成java沙箱的基本组件如下：</p>
<ul>
    <li>类装载器结构
    <li>class文件检验器
    <li>内置于Java虚拟机（及语言）的安全特性
    <li>安全管理器及Java API </li>
</ul>
<p>Java的沙箱安全模型，最重要的优点之一就是这些组件中的类装载器和安全管理器是可以由用户定制的。<br />
<br />
<strong>1、类装载器体系结构</strong><br />
java沙箱中，类装载器体系结构是第一道防线，类装载器体系结构在三个方面对Java的沙箱起作用：<br />
</p>
<ul>
    <li>它防止恶意代码去干涉善意的代码。-------通过为由不同的类装载器装入的类提供不同的命名空间来实现的，这个命名空间由Java虚拟机维护
    <li>它守护了被信任的类库的边界。--------通过分别使用不同的类装载器装载可靠的包和不可靠的包来实现，参见例1和例2的加深理解。
    <li>它将代码归入了某类（称为保护域），该类确定了代码可以进行哪些操作。 </li>
</ul>
<p>例1：如果某个恶意的类可以成功欺骗Java虚拟机，使Java虚拟机相信它是一个来自Java API的可信任类，那么，这个恶意的类就可以突破沙箱的阻隔了，让我们看看java如何阻止这种情况的发生。<br />
Java的类装载器结构是一个以启动类装载器为根的委派链，子 类装载器在装载一个类时首先会请求其双亲类装载器来装载，如果双亲装载器能够装载成功，则直接使用该类型，只有所有双亲类装载器都装载失败的时候，才会根据自定义的方法去装载该类型，这中工作方式被称作&#8221;双亲委派模式&#8220;。<br />
在这种模式下，如果一个自定义的网络类装载器试图从网络上下载一个和Java API中某个类型同名的类型，如java.lang.Integer时，它将不能成功，因为通过层层委派，这个类型会被启动类装载器装载，而网络类装载器将直接使用正确的java.lang.Integer，而没有机会从网络上下载并装载这个恶意的java.lang.Integer。<br />
<br />
例2：如果自定义的网络类装载器不像例1一样去替换一个被信任的类，而是在被信任的包中插入一个全新的类型，比如，一个java.lang.Virus的时候，将会发生什么？<br />
通过层层委派，网络类装载器最终会正确装载这个名为java.lang.Virus的类，暗示了这个类是Java API的一部分，因此，它可以访问java.lang包中被信任类的特殊访问权限（protected），然而，这个情况不会发生，因为java虚拟机只把彼此访问的特殊权限授予由同一个类装载器装载到同一个包中的类型，即只有同一个&#8221;运行时包&#8220;的类之间才有特殊访问权限，而java.lang.Virus和java.lang中其他被信任的类分别有网络类装载器和启动类装载器装载，它们不属于同一个运行时包。<br />
</p>
<strong>2、class文件检验器</strong><br />
和类装载器一起，class文件检验器包装装载的class文件内容有正确的内部结构，并且这些class文件相互间协调一致，class文件检验器实现的安全目标之一就是程序的健壮性，它必须保证一个class的装载不会导致虚拟机的崩溃。<br />
class文件检验器要进行四趟独立的扫描来完成它的操作。第一趟扫描是在类被装载时进行的，在这次扫描中，class文件检验器检查这个class文件的内部结构，以保证它可以被安全的编译；第二趟和第三趟扫描是在连接过程中进行的，在这两次扫描中，class文件检验器确认类型数据遵从Java编程语言的语义，包括检验它所包含的所有字节码的完整性；第四趟扫描是在进行动态连接的过程中解析符号引用时进行的，在这次扫描中，class文件检验器确认被引用的类、字段以及方法确实存在。 <br />
<br />
<strong>第一趟扫描：&nbsp;&nbsp;&nbsp;&nbsp; class文件的结构检查</strong><br />
class文件检验器会检查每一段被当作类型导入的字节序列是否符合java class文件的基本结构，比如是否是以魔数0xCAFEBABE开头，确认class文件中声明的主版本号和次版本号是否在这个java虚拟机的支持范围内，必须确认这个文件没有被删节或者附加一些字节（通过每个定义长度的地方来确定总体长度）。第一趟扫描的主要目的是保证这个字节序列正确的定义了一个类型，它必须遵从java class文件的固定格式，这样它才能被编译成在方法区中的（基于实现的）内部数据结构。第二、三、四趟扫描不是在符合class文件的二进制数据上进行的，而是在方法区中、由实现决定的数据结构上进行的。 <br />
<br />
<strong>第二趟扫描：&nbsp;&nbsp;&nbsp;&nbsp; 类型数据的语义检查</strong><br />
这次检查，class文件检验器不需要查看字节码，也不需要查看和装载任何其他类型。在这趟扫描中，检验器查看每个组成部分，确认它们是否是其所属类型的实例，它们结构是否正确。比如，方法描述符（它的返回类型，以及参数的类型和个数）在class文件中被存储为一个字符串，这个字符串必须符合特定的上下文无关文法。另外，还会检查这个类本身是否符合特定的条件，它们是由java编程语言规定的。比如，除Object外，所有类都必须要有一个超类，final的类不能被子类化，final方法也没有被覆盖，检查常量池中的条目是合法的，而且常量池的所有索引必须指向正确类型的常量池条目。<br />
<br />
<strong>第三趟扫描：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字节码验证</strong><br />
字节码流代表了java的方法，它是由被称为操作码的单字节指令组成的序列，每一个操作码后都跟着一个或多个操作数。执行字节码时，依次执行操作码，这就在java虚拟机内构成了执行的线程，每一个线程被授予自己的java栈，这个栈是由不同的栈帧构成的，每一个方法调用将获得一个自己的栈帧----栈帧其实就是一个内存片段，其中存储着局部变量和计算的中间结果，用于存储中间结果的部分被称为操作数栈。<br />
字节码检验器要进行大量的检查，以确保采用任何路径在字节码流中都得到一个确定的操作码，确保操作数栈总是包含正确的数值以及正确的类型。它必须保证局部变量在赋予合适的值以前不能被访问，而且类的字段中必须总是被赋予正确类型的值，类的方法被调用时总是传递正确数值和类型的参数。字节码检验器还必须保证每个操作码都是合法的，即都有合法的操作数，以及对每一个操作码，合适类型的数值位于局部变量中或是在操作数栈中。这些仅仅是字节码检验器所做的大量检验工作中的一小部分，在整个检验过程通过后，它就能保证这个字节码流可以被java虚拟机安全的执行。<br />
<br />
<strong>第四趟扫描：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 符合引用的验证</strong><br />
在动态连接过程中，如果包含在一个class文件中的符号引用被解析时，class文件检验器进行第四趟扫描。在这趟扫描中，java虚拟机将追踪那些引用-----从被验证的class文件到被引用的class文件，以确保这个引用是正确的。这次扫描可能要装载新的类。考虑到虚拟机实现上的差别，第四趟扫描可能紧随第三趟扫描发生，也有可能在第三趟扫描之后很久，当字节码被执行时才执行。<br />
动态连接是一个将符号引用解析为直接引用的过程。当java虚拟机执行字节码时，如果它遇到一个操作码，这个操作码第一次使用一个指向另一个类的符号引用，那么虚拟机就必须解析这个符号引用。在解析时，虚拟机执行两个基本任务：<br />
1）查找被引用的类（如果必要的话就装载它）<br />
2）将符号引用替换为直接引用，例如指向一个类、字段或方法的指针或偏移量<br />
虚拟机必须记住这个直接引用，这样当它以后再次遇到同样的引用时，就可以直接使用，而不需要重新解析该符号引用了。<br />
<br />
<strong>二进制兼容性规则</strong><br />
为了能方便的修改类库的代码，java编程语言被设计成允许对一个类做多种修改，但并不要求对依赖于它的那些类进行重编译。java语言规范中列出了用户可以做的多种改动，这些改动称为二进制兼容性规则。这些规则明确地定义了：在一个类中，哪些可以被修改、增加和删除，而并不破坏这个被修改的类与依赖于它的那些事先已经存在的类之间的二进制兼容性。 <br />
<br />
<strong>3、java虚拟机中内置的安全特性</strong><br />
除了四趟扫描之外，java虚拟机在执行字节码时还进行其他一些内置的安全机制的操作，这些机制大多数是java的类型安全的基础，它们作为java编程语言保证java程序的健壮性，同样，它们也是java虚拟机的特性：<br />
<br />
<ul>
    <li>类型安全的引用转换
    <li>结构化的内存访问（无指针算法）
    <li>自动垃圾收集（不必显式地释放被分配的内存）
    <li>数组边界检查
    <li>空引用检查 </li>
</ul>
<p><strong>4、安全管理器和Java API</strong><br />
java安全模型的前三个部分共同达到了一个目的：保持java虚拟机的实例和它正在运行的应用程序的内部完整性，使得它们不被下载的恶意或有漏洞的代码侵犯。相反，java安全模型的第四个组成部分---安全管理器---则用于保护虚拟机外部资源不被虚拟机内运行的恶意或有漏洞的代码侵犯。这个安全管理器是一个单独的对象，在运行的java虚拟机中，它在访问控制---对于外部资源的访问控制---中起中枢作用。<br />
安全管理器定义了沙箱的外部边界，并且它是可以定制的。 <br />
安全管理器中需要了解如下一些概念和类：<br />
<br />
<ul>
    <li>默认安全管理器：java.lang.SecurityManager
    <li>代码签名和认证
    <li>策略：java.security.Policy
    <li>权限：java.security.Permission
    <li>策略文件
    <li>保护域：CodeSource,PersimissionCollection,ProtectionDomain
    <li>访问控制器：java.security.AccessController </li>
</ul>
<p>这部分内容太多，只能带过了。<br />
<br />
<strong>Java安全模型的不足</strong><br />
Java安全模型尚不能解决如下问题：<br />
</p>
<ul>
    <p>
    <li>不断分配内存，直到内存耗尽
    <li>不断生成线程导致每件事都慢的不可忍受 </li>
</ul>
<p>以上两中类型的攻击被称作拒绝服务攻击（DOS）<br />
另一个没有放入安全模型的领域是关于将权限映射到系统用户，代码以这个用户的名义来运行。这中访问控制在unix系统中较为常见，它基于用户ID对文件的访问进行控制。</p>
 <img src ="http://www.blogjava.net/yill/aggbug/187842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yill/" target="_blank">yill</a> 2008-03-22 03:50 <a href="http://www.blogjava.net/yill/archive/2008/03/22/187842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Inside The JVM Part1: java体系结构</title><link>http://www.blogjava.net/yill/archive/2008/03/22/187829.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Fri, 21 Mar 2008 16:55:00 GMT</pubDate><guid>http://www.blogjava.net/yill/archive/2008/03/22/187829.html</guid><wfw:comment>http://www.blogjava.net/yill/comments/187829.html</wfw:comment><comments>http://www.blogjava.net/yill/archive/2008/03/22/187829.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yill/comments/commentRss/187829.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yill/services/trackbacks/187829.html</trackback:ping><description><![CDATA[<p>一、Java体系结构<br />
Java体系结构包括四个独立但相关的技术：<br />
</p>
<ul>
    <li>Java程序设计语言</li>
    <li>Java class文件格式</li>
    <li>Java应用编程接口（API）</li>
    <li>Java虚拟机</li>
</ul>
<p>二、Java虚拟机</p>
<p>Java虚拟机是Java的面向网络的核心，它支持Java面向网络体系结构三大支柱的所有方面：平台无关性，安全性和网络移动性。Java虚拟机的主要任务是装载class文件并且执行其中的字节码。classloader负责装载class文件，执行引擎负责执行字节码。<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>执行引擎</strong><br />
由于Java虚拟机规范只定义了每个虚拟机都必须实现的特性，没有规定具体的实现方法，因此不同的Java虚拟机，执行引擎可能实现的非常不同，一般来说有如下几种实现方法：</p>
<ol>
    <li>一次性解释字节码。</li>
    <li>即时编译器(just-in-time compiler)，这种情况下，第一次被执行的字节码会被编译成本地机器代码，编译出的本地机器代码会被缓存，当方法以后被调用的时候可以重用。</li>
    <li>自适应优化器，这种情况下，虚拟机开始的时候解释字节码，但是会监视运行中程序的活动，并且记录下使用频繁的代码段，程序运行的时候，虚拟机只会把那些活动最频繁的代码编译成本地版本，其他仍旧保留字节码--由虚拟机继续解释它们。一个自适应的优化器可以使得Java虚拟机在80%-90%的时间里执行被优化过的本地代码。</li>
    <li>由硬件芯片构成，由本地方法执行Java字节码，实际上这种实现是把执行引擎内嵌在芯片里。</li>
</ol>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;Classloader<br />
</strong>一个java应用程序可以有两种类装载器：启动类装载器(bootstrap)和用户定义的类装载器，启动类装载器是唯一的，它属于Java虚拟机实现的一部分。<br />
每一个类装载器都有它自己的命名空间，一个类只能&#8221;看到&#8220;由同一个类装载器装载的其他类，不能跨命名空间访问。<br />
用过允许实例化用户自定义的类装载器（该类装载器知道如何从网络下载class文件），Java类装载器的体系结构提供了对网络移动性的支持；通过允许使用不同的用户定义的类装载器装载不同来源的class文件，Java类装载器的体系结构提供了对完全性的支持。</p>
<img src ="http://www.blogjava.net/yill/aggbug/187829.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yill/" target="_blank">yill</a> 2008-03-22 00:55 <a href="http://www.blogjava.net/yill/archive/2008/03/22/187829.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 加密算法 DSA 实现代码</title><link>http://www.blogjava.net/yill/archive/2008/03/19/187348.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Wed, 19 Mar 2008 12:34:00 GMT</pubDate><guid>http://www.blogjava.net/yill/archive/2008/03/19/187348.html</guid><wfw:comment>http://www.blogjava.net/yill/comments/187348.html</wfw:comment><comments>http://www.blogjava.net/yill/archive/2008/03/19/187348.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yill/comments/commentRss/187348.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yill/services/trackbacks/187348.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: package&nbsp;com.yill;import&nbsp;java.io.FileInputStream;import&nbsp;java.io.FileNotFoundException;import&nbsp;java.io.FileOutputStream;import&nbsp;java.io.IOException;import&nbsp;java.io...&nbsp;&nbsp;<a href='http://www.blogjava.net/yill/archive/2008/03/19/187348.html'>阅读全文</a><img src ="http://www.blogjava.net/yill/aggbug/187348.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yill/" target="_blank">yill</a> 2008-03-19 20:34 <a href="http://www.blogjava.net/yill/archive/2008/03/19/187348.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 加密算法 RSA 实现代码</title><link>http://www.blogjava.net/yill/archive/2008/03/19/187122.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Tue, 18 Mar 2008 16:08:00 GMT</pubDate><guid>http://www.blogjava.net/yill/archive/2008/03/19/187122.html</guid><wfw:comment>http://www.blogjava.net/yill/comments/187122.html</wfw:comment><comments>http://www.blogjava.net/yill/archive/2008/03/19/187122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yill/comments/commentRss/187122.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yill/services/trackbacks/187122.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;package&nbsp;com.yill;import&nbsp;java.io.FileInputStream;import&nbsp;java.io.FileNotFoundException;import&nbsp;java.io.FileOutputStream;import&nbsp;java.io.IOException;import&nbsp...&nbsp;&nbsp;<a href='http://www.blogjava.net/yill/archive/2008/03/19/187122.html'>阅读全文</a><img src ="http://www.blogjava.net/yill/aggbug/187122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yill/" target="_blank">yill</a> 2008-03-19 00:08 <a href="http://www.blogjava.net/yill/archive/2008/03/19/187122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 加密算法 MD5 实现代码</title><link>http://www.blogjava.net/yill/archive/2008/03/18/187119.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Tue, 18 Mar 2008 15:42:00 GMT</pubDate><guid>http://www.blogjava.net/yill/archive/2008/03/18/187119.html</guid><wfw:comment>http://www.blogjava.net/yill/comments/187119.html</wfw:comment><comments>http://www.blogjava.net/yill/archive/2008/03/18/187119.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yill/comments/commentRss/187119.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yill/services/trackbacks/187119.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.yill;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.MessageDigest;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.security.NoSuchAlgorithmException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_103_223_Open_Image" onclick="this.style.display='none'; Codehighlighter1_103_223_Open_Text.style.display='none'; Codehighlighter1_103_223_Closed_Image.style.display='inline'; Codehighlighter1_103_223_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_103_223_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_103_223_Closed_Text.style.display='none'; Codehighlighter1_103_223_Open_Image.style.display='inline'; Codehighlighter1_103_223_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_103_223_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_103_223_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;MD5&nbsp;encrypt&nbsp;class,&nbsp;returns&nbsp;a&nbsp;MD5-encrypted&nbsp;hex&nbsp;string.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;yill<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;</span><span style="color: #808080">@version</span><span style="color: #008000">&nbsp;2008-2-26<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;*&nbsp;</span><span style="color: #808080">@since</span><span style="color: #008000">&nbsp;1.0<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;YillMD5<br />
<img id="Codehighlighter1_246_2128_Open_Image" onclick="this.style.display='none'; Codehighlighter1_246_2128_Open_Text.style.display='none'; Codehighlighter1_246_2128_Closed_Image.style.display='inline'; Codehighlighter1_246_2128_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_246_2128_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_246_2128_Closed_Text.style.display='none'; Codehighlighter1_246_2128_Open_Image.style.display='inline'; Codehighlighter1_246_2128_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_246_2128_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_246_2128_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_252_285_Open_Image" onclick="this.style.display='none'; Codehighlighter1_252_285_Open_Text.style.display='none'; Codehighlighter1_252_285_Closed_Image.style.display='inline'; Codehighlighter1_252_285_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_252_285_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_252_285_Closed_Text.style.display='none'; Codehighlighter1_252_285_Open_Image.style.display='inline'; Codehighlighter1_252_285_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_252_285_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_252_285_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;The&nbsp;hex&nbsp;digits.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;String[]&nbsp;hexDigits&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000"><br />
<img id="Codehighlighter1_337_446_Open_Image" onclick="this.style.display='none'; Codehighlighter1_337_446_Open_Text.style.display='none'; Codehighlighter1_337_446_Closed_Image.style.display='inline'; Codehighlighter1_337_446_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_337_446_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_337_446_Closed_Text.style.display='none'; Codehighlighter1_337_446_Open_Image.style.display='inline'; Codehighlighter1_337_446_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_337_446_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_337_446_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">0</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">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">2</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">3</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">4</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">5</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">6</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">7</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">8</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">9</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">a</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">b</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">c</span><span style="color: #000000">"</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">e</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">f</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_454_550_Open_Image" onclick="this.style.display='none'; Codehighlighter1_454_550_Open_Text.style.display='none'; Codehighlighter1_454_550_Closed_Image.style.display='inline'; Codehighlighter1_454_550_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_454_550_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_454_550_Closed_Text.style.display='none'; Codehighlighter1_454_550_Open_Image.style.display='inline'; Codehighlighter1_454_550_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_454_550_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_454_550_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Transform&nbsp;the&nbsp;byte&nbsp;array&nbsp;to&nbsp;hex&nbsp;string.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;b<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  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;String&nbsp;byteArrayToHexString(</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;b)<br />
<img id="Codehighlighter1_612_821_Open_Image" onclick="this.style.display='none'; Codehighlighter1_612_821_Open_Text.style.display='none'; Codehighlighter1_612_821_Closed_Image.style.display='inline'; Codehighlighter1_612_821_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_612_821_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_612_821_Closed_Text.style.display='none'; Codehighlighter1_612_821_Open_Image.style.display='inline'; Codehighlighter1_612_821_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_612_821_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_612_821_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;resultSb&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuffer();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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;b.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_717_779_Open_Image" onclick="this.style.display='none'; Codehighlighter1_717_779_Open_Text.style.display='none'; Codehighlighter1_717_779_Closed_Image.style.display='inline'; Codehighlighter1_717_779_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_717_779_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_717_779_Closed_Text.style.display='none'; Codehighlighter1_717_779_Open_Image.style.display='inline'; Codehighlighter1_717_779_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_717_779_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_717_779_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resultSb.append(byteToHexString(b[i]));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;resultSb.toString();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_828_916_Open_Image" onclick="this.style.display='none'; Codehighlighter1_828_916_Open_Text.style.display='none'; Codehighlighter1_828_916_Closed_Image.style.display='inline'; Codehighlighter1_828_916_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_828_916_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_828_916_Closed_Text.style.display='none'; Codehighlighter1_828_916_Open_Image.style.display='inline'; Codehighlighter1_828_916_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_828_916_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_828_916_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Transform&nbsp;a&nbsp;byte&nbsp;to&nbsp;hex&nbsp;string.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;b<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;String&nbsp;byteToHexString(</span><span style="color: #0000ff">byte</span><span style="color: #000000">&nbsp;b)<br />
<img id="Codehighlighter1_972_1209_Open_Image" onclick="this.style.display='none'; Codehighlighter1_972_1209_Open_Text.style.display='none'; Codehighlighter1_972_1209_Closed_Image.style.display='inline'; Codehighlighter1_972_1209_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_972_1209_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_972_1209_Closed_Text.style.display='none'; Codehighlighter1_972_1209_Open_Image.style.display='inline'; Codehighlighter1_972_1209_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_972_1209_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_972_1209_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(n&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">256</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;n;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;get&nbsp;the&nbsp;first&nbsp;four&nbsp;bit</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;d1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;get&nbsp;the&nbsp;second&nbsp;four&nbsp;bit</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;d2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;hexDigits[d1]&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;hexDigits[d2];<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_1216_1475_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1216_1475_Open_Text.style.display='none'; Codehighlighter1_1216_1475_Closed_Image.style.display='inline'; Codehighlighter1_1216_1475_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1216_1475_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1216_1475_Closed_Text.style.display='none'; Codehighlighter1_1216_1475_Open_Image.style.display='inline'; Codehighlighter1_1216_1475_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1216_1475_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_1216_1475_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Get&nbsp;the&nbsp;MD5&nbsp;encrypt&nbsp;hex&nbsp;string&nbsp;of&nbsp;the&nbsp;origin&nbsp;string.&nbsp;&lt;br/&gt;The&nbsp;origin<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;string&nbsp;won't&nbsp;validate&nbsp;here,&nbsp;so&nbsp;who&nbsp;use&nbsp;the&nbsp;API&nbsp;should&nbsp;validate&nbsp;by<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;himself.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;origin<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@throws</span><span style="color: #008000">&nbsp;NoSuchAlgorithmException<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  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;String&nbsp;MD5Encode(String&nbsp;origin)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;NoSuchAlgorithmException<br />
<img id="Codehighlighter1_1575_1709_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1575_1709_Open_Text.style.display='none'; Codehighlighter1_1575_1709_Closed_Image.style.display='inline'; Codehighlighter1_1575_1709_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1575_1709_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1575_1709_Closed_Text.style.display='none'; Codehighlighter1_1575_1709_Open_Image.style.display='inline'; Codehighlighter1_1575_1709_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1575_1709_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1575_1709_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageDigest&nbsp;md&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;MessageDigest.getInstance(</span><span style="color: #000000">"</span><span style="color: #000000">MD5</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;byteArrayToHexString(md.digest(origin.getBytes()));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  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;main(String[]&nbsp;args)<br />
<img id="Codehighlighter1_1759_2126_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1759_2126_Open_Text.style.display='none'; Codehighlighter1_1759_2126_Closed_Image.style.display='inline'; Codehighlighter1_1759_2126_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1759_2126_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1759_2126_Closed_Text.style.display='none'; Codehighlighter1_1759_2126_Open_Image.style.display='inline'; Codehighlighter1_1759_2126_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1759_2126_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1759_2126_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
<img id="Codehighlighter1_1781_2024_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1781_2024_Open_Text.style.display='none'; Codehighlighter1_1781_2024_Closed_Image.style.display='inline'; Codehighlighter1_1781_2024_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1781_2024_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1781_2024_Closed_Text.style.display='none'; Codehighlighter1_1781_2024_Open_Image.style.display='inline'; Codehighlighter1_1781_2024_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1781_2024_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1781_2024_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.println(</span><span style="color: #000000">"</span><span style="color: #000000">The&nbsp;MD5&nbsp;encrypt&nbsp;code&nbsp;of&nbsp;http://www.blogjava.net/yill/&nbsp;is:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  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;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;YillMD5<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  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;.MD5Encode(</span><span style="color: #000000">"</span><span style="color: #000000">http://www.blogjava.net/yill/</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(NoSuchAlgorithmException&nbsp;e)<br />
<img id="Codehighlighter1_2077_2120_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2077_2120_Open_Text.style.display='none'; Codehighlighter1_2077_2120_Closed_Image.style.display='inline'; Codehighlighter1_2077_2120_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2077_2120_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2077_2120_Closed_Text.style.display='none'; Codehighlighter1_2077_2120_Open_Image.style.display='inline'; Codehighlighter1_2077_2120_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_2077_2120_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2077_2120_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/yill/aggbug/187119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yill/" target="_blank">yill</a> 2008-03-18 23:42 <a href="http://www.blogjava.net/yill/archive/2008/03/18/187119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>