﻿<?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-ajie</title><link>http://www.blogjava.net/ajie/</link><description>Java天下社区
http://www.javatx.cn
欢迎大家上来交流Java技术</description><language>zh-cn</language><lastBuildDate>Sun, 03 May 2026 06:29:03 GMT</lastBuildDate><pubDate>Sun, 03 May 2026 06:29:03 GMT</pubDate><ttl>60</ttl><item><title>Filter Servlet实例应用</title><link>http://www.blogjava.net/ajie/archive/2006/01/02/26336.html</link><dc:creator>ajie</dc:creator><author>ajie</author><pubDate>Mon, 02 Jan 2006 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/ajie/archive/2006/01/02/26336.html</guid><wfw:comment>http://www.blogjava.net/ajie/comments/26336.html</wfw:comment><comments>http://www.blogjava.net/ajie/archive/2006/01/02/26336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ajie/comments/commentRss/26336.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ajie/services/trackbacks/26336.html</trackback:ping><description><![CDATA[<DIV class=content>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter的意思是可以在Servlet实例进行实质性的处理之前，起到“过滤”的作用.<BR><BR>&nbsp; &nbsp; &nbsp; &nbsp;一个Filter可以过滤一个或多个Servlet，Filter必须实现javax.Servlet.Filter接口，并且必须定义以下三个方法:init(),destory(),doFilter().<BR><BR>&nbsp; &nbsp; &nbsp; &nbsp;下面的例子演示记录客户端主机信息的Filter：<BR><BR>
<TABLE cellSpacing=1 cellPadding=4 width="98%" align=center bgColor=#bad5ef border=0>
<FORM>
<TBODY>
<TR>
<TD style="FONT-SIZE: 12px" bgColor=#e6eef7 height=25>程序代码：</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px" bgColor=#ffffff><SPAN style="COLOR: #3f7f5f">/**<BR>&nbsp;*&nbsp;&nbsp;该实例演示记录客户端主机信息的Filter<BR>&nbsp;*&nbsp;&nbsp;www.javatx.cn<BR>&nbsp;*/</SPAN><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #7f0055">package</SPAN>&nbsp;cn.javatx;<BR><BR>import&nbsp;java.io.IOException;<BR><BR>import&nbsp;javax.servlet.Filter;<BR>import&nbsp;javax.servlet.FilterChain;<BR>import&nbsp;javax.servlet.FilterConfig;<BR>import&nbsp;javax.servlet.ServletContext;<BR>import&nbsp;javax.servlet.ServletException;<BR>import&nbsp;javax.servlet.ServletRequest;<BR>import&nbsp;javax.servlet.ServletResponse;<BR>import&nbsp;javax.servlet.http.HttpServletRequest;<BR><BR><SPAN style="COLOR: #3f7f5f">/**<BR>&nbsp;*&nbsp;@author&nbsp;ljfan<BR>&nbsp;*<BR>&nbsp;*/</SPAN><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #7f0055">public&nbsp;</SPAN>class&nbsp;logFilter&nbsp;implements&nbsp;Filter&nbsp;{<BR><SPAN style="FONT-WEIGHT: bold; COLOR: #7f0055">private&nbsp;</SPAN>ServletContext&nbsp;context;<BR><BR><SPAN style="COLOR: #3f7f5f">/*&nbsp;(non-Javadoc)<BR>&nbsp;*&nbsp;@see&nbsp;javax.servlet.Filter#init(javax.servlet.FilterConfig)<BR>&nbsp;*/</SPAN><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #7f0055">public&nbsp;</SPAN>void&nbsp;init(FilterConfig&nbsp;arg0)&nbsp;throws&nbsp;ServletException&nbsp;{<BR><SPAN style="COLOR: #3f7f5f">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</SPAN><BR>context&nbsp;=&nbsp;arg0.getServletContext();<BR>}<BR><BR><SPAN style="COLOR: #3f7f5f">/*&nbsp;(non-Javadoc)<BR>&nbsp;*&nbsp;@see&nbsp;javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,&nbsp;javax.servlet.ServletResponse,&nbsp;javax.servlet.FilterChain)<BR>&nbsp;*/</SPAN><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #7f0055">public&nbsp;</SPAN>void&nbsp;doFilter(ServletRequest&nbsp;arg0,&nbsp;ServletResponse&nbsp;arg1,<BR>FilterChain&nbsp;arg2)&nbsp;throws&nbsp;IOException,&nbsp;ServletException&nbsp;{<BR><SPAN style="COLOR: #3f7f5f">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</SPAN><BR>context.log(<SPAN style="COLOR: #2a00ff">"["</SPAN>&nbsp;+&nbsp;arg0.getRemoteHost()&nbsp;+&nbsp;<SPAN style="COLOR: #2a00ff">"]&nbsp;request:&nbsp;"</SPAN>&nbsp;+((HttpServletRequest)arg0).getRequestURI());<BR>arg2.doFilter(arg0,&nbsp;arg1);<BR>context.log(<SPAN style="COLOR: #2a00ff">"["</SPAN>&nbsp;+&nbsp;arg0.getRemoteHost()&nbsp;+&nbsp;<SPAN style="COLOR: #2a00ff">"]&nbsp;done"</SPAN>);<BR>}<BR><BR><SPAN style="COLOR: #3f7f5f">/*&nbsp;(non-Javadoc)<BR>&nbsp;*&nbsp;@see&nbsp;javax.servlet.Filter#destroy()<BR>&nbsp;*/</SPAN><BR><SPAN style="FONT-WEIGHT: bold; COLOR: #7f0055">public&nbsp;</SPAN>void&nbsp;destroy()&nbsp;{<BR><SPAN style="COLOR: #3f7f5f">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</SPAN><BR>context&nbsp;=&nbsp;<SPAN style="FONT-WEIGHT: bold; COLOR: #7f0055">null</SPAN>;<BR>}<BR><BR>}</TD></TR></FORM></TBODY></TABLE><BR><BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;当前web应用的web.xml配置为:<BR><BR>
<TABLE cellSpacing=1 cellPadding=4 width="98%" align=center bgColor=#bad5ef border=0>
<FORM>
<TBODY>
<TR>
<TD style="FONT-SIZE: 12px" bgColor=#e6eef7 height=25>程序代码：</TD></TR>
<TR>
<TD style="FONT-SIZE: 12px" bgColor=#ffffff>&lt;?xml&nbsp;version=<SPAN style="COLOR: #2a00ff">"1.0"</SPAN>&nbsp;encoding=<SPAN style="COLOR: #2a00ff">"UTF-8"</SPAN>?&gt;<BR>&lt;web-app&nbsp;version=<SPAN style="COLOR: #2a00ff">"2.4"</SPAN>&nbsp;<BR>xmlns=<SPAN style="COLOR: #2a00ff">"http:<SPAN style="COLOR: #3f7f5f">//java.sun.com/xml/ns/j2ee"</SPAN>&nbsp;</SPAN><BR>xmlns:xsi=<SPAN style="COLOR: #2a00ff">"http:<SPAN style="COLOR: #3f7f5f">//www.w3.org/2001/XMLSchema-instance"</SPAN>&nbsp;</SPAN><BR>xsi:schemaLocation=<SPAN style="COLOR: #2a00ff">"http:<SPAN style="COLOR: #3f7f5f">//java.sun.com/xml/ns/j2ee&nbsp;</SPAN><BR>http:<SPAN style="COLOR: #3f7f5f">//java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</SPAN>&gt;</SPAN><BR><BR>&lt;filter&gt;<BR>&lt;filter-name&gt;logFilter&lt;/filter-name&gt;<BR>&lt;filter-class&gt;cn.javatx.logFilter&lt;/filter-class&gt;<BR>&lt;/filter&gt;<BR>&lt;filter-mapping&gt;<BR>&lt;filter-name&gt;logFilter&lt;/filter-name&gt;<BR>&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<BR>&lt;/filter-mapping&gt;<BR><BR>&lt;/web-app&gt;</TD></TR></FORM></TBODY></TABLE><BR><BR>最后用myeclipse插件自动部署到tomcat路径下，启动tomcat，在浏览器中输入<BR>http://localhost:8080/Filter/ &nbsp;(Filter为此web应用名称)<BR><BR>可以在tomcat &nbsp;目录的log目录下的localhost.2006-01-02.log看到以下消息:<BR><BR>2006-1-2 &nbsp;16:25:51 &nbsp;org.apache.catalina.core.ApplicationContext &nbsp;log<BR>信息: &nbsp;[127.0.0.1] &nbsp;request: &nbsp;/Filter/<BR>2006-1-2 &nbsp;16:25:51 &nbsp;org.apache.catalina.core.ApplicationContext &nbsp;log<BR>信息: &nbsp;[127.0.0.1] &nbsp;done<BR><BR>这表明logFilter已经被server调用成功.<BR>当然在实际应用中filter还有其他用处,象登陆验证，编码转化等.<BR><BR>Java天下社区<BR><A href="http://www.javatx.cn">http://www.javatx.cn</A><BR>欢迎大家上来交流Java技术。<BR></DIV><img src ="http://www.blogjava.net/ajie/aggbug/26336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ajie/" target="_blank">ajie</a> 2006-01-02 16:39 <a href="http://www.blogjava.net/ajie/archive/2006/01/02/26336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Excel文档生成解决方案 (JAVA Servlet)</title><link>http://www.blogjava.net/ajie/archive/2005/12/18/24438.html</link><dc:creator>ajie</dc:creator><author>ajie</author><pubDate>Sat, 17 Dec 2005 16:45:00 GMT</pubDate><guid>http://www.blogjava.net/ajie/archive/2005/12/18/24438.html</guid><wfw:comment>http://www.blogjava.net/ajie/comments/24438.html</wfw:comment><comments>http://www.blogjava.net/ajie/archive/2005/12/18/24438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ajie/comments/commentRss/24438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ajie/services/trackbacks/24438.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 用到开源软件POI，详细见以下URL：http://jakarta.apache.org/poi/index.html/**&nbsp;*//**&nbsp;*&nbsp;该类演示了POI的应用&nbsp;*&nbsp;版权&nbsp;本文版权属Java天下&nbsp;*&nbsp;Created&nbsp;on&nbsp;2005-7-22&nbsp;*/package&nbsp;bss...&nbsp;&nbsp;<a href='http://www.blogjava.net/ajie/archive/2005/12/18/24438.html'>阅读全文</a><img src ="http://www.blogjava.net/ajie/aggbug/24438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ajie/" target="_blank">ajie</a> 2005-12-18 00:45 <a href="http://www.blogjava.net/ajie/archive/2005/12/18/24438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用Java Mail API 开发邮件通知服务 </title><link>http://www.blogjava.net/ajie/archive/2005/12/18/24437.html</link><dc:creator>ajie</dc:creator><author>ajie</author><pubDate>Sat, 17 Dec 2005 16:38:00 GMT</pubDate><guid>http://www.blogjava.net/ajie/archive/2005/12/18/24437.html</guid><wfw:comment>http://www.blogjava.net/ajie/comments/24437.html</wfw:comment><comments>http://www.blogjava.net/ajie/archive/2005/12/18/24437.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ajie/comments/commentRss/24437.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ajie/services/trackbacks/24437.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;1/**&nbsp;*//**&nbsp;&nbsp;2&nbsp;*&nbsp;该类演示了Java&nbsp;Mail的应用&nbsp;&nbsp;3&nbsp;*&nbsp;版权&nbsp;本文版权属Java天下&nbsp;&nbsp;4&nbsp;*&nbsp;@author&nbsp;ljfan&nbsp;&nbsp;5&nbsp;*&nbsp;@version&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/ajie/archive/2005/12/18/24437.html'>阅读全文</a><img src ="http://www.blogjava.net/ajie/aggbug/24437.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ajie/" target="_blank">ajie</a> 2005-12-18 00:38 <a href="http://www.blogjava.net/ajie/archive/2005/12/18/24437.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java内存管理之软引用(Soft Reference) </title><link>http://www.blogjava.net/ajie/archive/2005/12/18/24435.html</link><dc:creator>ajie</dc:creator><author>ajie</author><pubDate>Sat, 17 Dec 2005 16:29:00 GMT</pubDate><guid>http://www.blogjava.net/ajie/archive/2005/12/18/24435.html</guid><wfw:comment>http://www.blogjava.net/ajie/comments/24435.html</wfw:comment><comments>http://www.blogjava.net/ajie/archive/2005/12/18/24435.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/ajie/comments/commentRss/24435.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ajie/services/trackbacks/24435.html</trackback:ping><description><![CDATA[<DIV class=content>软引用(Soft &nbsp;Reference)的主要特点是具有较强的引用功能。只有当内存不够的时候才回收这类内存，因此在内存足够的时候，他们通常不被回收。另外，这些引用对象还能保证在Java &nbsp;抛出OutOfMemory异常之前，被设置为null。他可以用于实现一些常用资源的缓存，实现Cache的功能，保证最大限度的使用内存而不引起OutOfMemory异常。<BR><BR>&nbsp; &nbsp; &nbsp;下面是软引用的实现代码：<BR>&nbsp;<BR>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">&nbsp;1</SPAN><IMG id=Codehighlighter1_0_50_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_50_Open_Text.style.display='none'; Codehighlighter1_0_50_Closed_Image.style.display='inline'; Codehighlighter1_0_50_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_0_50_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_50_Closed_Text.style.display='none'; Codehighlighter1_0_50_Open_Image.style.display='inline'; Codehighlighter1_0_50_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN id=Codehighlighter1_0_50_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_0_50_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;2</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;该类演示了Soft&nbsp;Reference的应用<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;3</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;版权&nbsp;本文版权属Java天下<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;4</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;5</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">package</SPAN><SPAN style="COLOR: #000000">&nbsp;cn.javatx;<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;6</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;7</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;java.lang.ref.SoftReference;<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;8</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;9</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_109_131_Open_Image onclick="this.style.display='none'; Codehighlighter1_109_131_Open_Text.style.display='none'; Codehighlighter1_109_131_Closed_Image.style.display='inline'; Codehighlighter1_109_131_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_109_131_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_109_131_Closed_Text.style.display='none'; Codehighlighter1_109_131_Open_Image.style.display='inline'; Codehighlighter1_109_131_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_109_131_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_109_131_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">10</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@author</SPAN><SPAN style="COLOR: #008000">&nbsp;ajie<BR></SPAN><SPAN style="COLOR: #008080">11</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">12</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">13</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_161_580_Open_Image onclick="this.style.display='none'; Codehighlighter1_161_580_Open_Text.style.display='none'; Codehighlighter1_161_580_Closed_Image.style.display='inline'; Codehighlighter1_161_580_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_161_580_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_161_580_Closed_Text.style.display='none'; Codehighlighter1_161_580_Open_Image.style.display='inline'; Codehighlighter1_161_580_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;softReference&nbsp;</SPAN><SPAN id=Codehighlighter1_161_580_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"></SPAN><SPAN id=Codehighlighter1_161_580_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">14</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">15</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_165_188_Open_Image onclick="this.style.display='none'; Codehighlighter1_165_188_Open_Text.style.display='none'; Codehighlighter1_165_188_Closed_Image.style.display='inline'; Codehighlighter1_165_188_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_165_188_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_165_188_Closed_Text.style.display='none'; Codehighlighter1_165_188_Open_Image.style.display='inline'; Codehighlighter1_165_188_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_165_188_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_165_188_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">16</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@param</SPAN><SPAN style="COLOR: #008000">&nbsp;args<BR></SPAN><SPAN style="COLOR: #008080">17</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">18</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_230_577_Open_Image onclick="this.style.display='none'; Codehighlighter1_230_577_Open_Text.style.display='none'; Codehighlighter1_230_577_Closed_Image.style.display='inline'; Codehighlighter1_230_577_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_230_577_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_230_577_Closed_Text.style.display='none'; Codehighlighter1_230_577_Open_Image.style.display='inline'; Codehighlighter1_230_577_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</SPAN><SPAN id=Codehighlighter1_230_577_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"></SPAN><SPAN id=Codehighlighter1_230_577_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">19</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">20</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;A();<BR></SPAN><SPAN style="COLOR: #008080">21</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR></SPAN><SPAN style="COLOR: #008080">22</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">使用a</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">23</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.test();<BR></SPAN><SPAN style="COLOR: #008080">24</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">25</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">使用完了a,将它设置为soft引用类型,并且释放强引用</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">26</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SoftReference&nbsp;sr&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;SoftReference(a);<BR></SPAN><SPAN style="COLOR: #008080">27</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">28</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR></SPAN><SPAN style="COLOR: #008080">29</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">下次使用</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">30</SPAN><SPAN style="COLOR: #008000"><IMG id=Codehighlighter1_427_464_Open_Image onclick="this.style.display='none'; Codehighlighter1_427_464_Open_Text.style.display='none'; Codehighlighter1_427_464_Closed_Image.style.display='inline'; Codehighlighter1_427_464_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_427_464_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_427_464_Closed_Text.style.display='none'; Codehighlighter1_427_464_Open_Image.style.display='inline'; Codehighlighter1_427_464_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(sr&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN id=Codehighlighter1_427_464_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"></SPAN><SPAN id=Codehighlighter1_427_464_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">31</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(A)sr.get();<BR></SPAN><SPAN style="COLOR: #008080">32</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.test();<BR></SPAN><SPAN style="COLOR: #008080">33</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_471_574_Open_Image onclick="this.style.display='none'; Codehighlighter1_471_574_Open_Text.style.display='none'; Codehighlighter1_471_574_Closed_Image.style.display='inline'; Codehighlighter1_471_574_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_471_574_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_471_574_Closed_Text.style.display='none'; Codehighlighter1_471_574_Open_Image.style.display='inline'; Codehighlighter1_471_574_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN id=Codehighlighter1_471_574_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"></SPAN><SPAN id=Codehighlighter1_471_574_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">34</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">GC由于低内存,已释放a,因此需要重新装载</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">35</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;A();<BR></SPAN><SPAN style="COLOR: #008080">36</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.test();<BR></SPAN><SPAN style="COLOR: #008080">37</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">38</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sr&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;SoftReference(a);<BR></SPAN><SPAN style="COLOR: #008080">39</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">40</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">41</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">42</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">43</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">44</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_591_663_Open_Image onclick="this.style.display='none'; Codehighlighter1_591_663_Open_Text.style.display='none'; Codehighlighter1_591_663_Closed_Image.style.display='inline'; Codehighlighter1_591_663_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_591_663_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_591_663_Closed_Text.style.display='none'; Codehighlighter1_591_663_Open_Image.style.display='inline'; Codehighlighter1_591_663_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;A&nbsp;</SPAN><SPAN id=Codehighlighter1_591_663_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"></SPAN><SPAN id=Codehighlighter1_591_663_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">45</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_613_661_Open_Image onclick="this.style.display='none'; Codehighlighter1_613_661_Open_Text.style.display='none'; Codehighlighter1_613_661_Closed_Image.style.display='inline'; Codehighlighter1_613_661_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_613_661_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_613_661_Closed_Text.style.display='none'; Codehighlighter1_613_661_Open_Image.style.display='inline'; Codehighlighter1_613_661_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;test()&nbsp;</SPAN><SPAN id=Codehighlighter1_613_661_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"></SPAN><SPAN id=Codehighlighter1_613_661_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">46</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Soft&nbsp;Reference&nbsp;test</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #008080">47</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">48</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">49</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN></DIV><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;软引用技术的引进使Java应用可以更好的管理内存，稳定系统，防止系统内存溢出，避免系统崩溃。因此在处理一些占用内存大而且声明周期较长，但使用并不频繁的对象时应尽量应用该技术。但事物总带有两面性的，有利也有弊，在某些时候对软引用的使用会降低应用的运行效率与性能，例如：应用软引用的对象的初始化过程较为耗时，或者对象的状态在程序的运行过程中发生了变化，都会给重新创建对象与初始化对象带来不同程度的麻烦，有些时候我们要权衡利弊择时应用。<BR><BR>Java天下<BR><A href="http://www.javatx.cn/"><STRONG><FONT color=#006bad>http://www.javatx.cn</FONT></STRONG></A></DIV><img src ="http://www.blogjava.net/ajie/aggbug/24435.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ajie/" target="_blank">ajie</a> 2005-12-18 00:29 <a href="http://www.blogjava.net/ajie/archive/2005/12/18/24435.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>