﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-学习笔迹-随笔分类-JAVA/J2EE</title><link>http://www.blogjava.net/chenlb/category/17678.html</link><description>好记性不如烂笔头!</description><language>zh-cn</language><lastBuildDate>Sat, 24 May 2008 18:29:53 GMT</lastBuildDate><pubDate>Sat, 24 May 2008 18:29:53 GMT</pubDate><ttl>60</ttl><item><title>[原]自己实现的优先队列 PriorityQueue</title><link>http://www.blogjava.net/chenlb/archive/2008/05/08/199368.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Thu, 08 May 2008 15:08:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2008/05/08/199368.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/199368.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2008/05/08/199368.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/199368.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/199368.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 自己实现的优先队列 PriorityQueue&nbsp;&nbsp;<a href='http://www.blogjava.net/chenlb/archive/2008/05/08/199368.html'>阅读全文</a><img src ="http://www.blogjava.net/chenlb/aggbug/199368.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2008-05-08 23:08 <a href="http://www.blogjava.net/chenlb/archive/2008/05/08/199368.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>logging 级别</title><link>http://www.blogjava.net/chenlb/archive/2008/04/11/192134.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Fri, 11 Apr 2008 03:50:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2008/04/11/192134.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/192134.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2008/04/11/192134.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/192134.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/192134.html</trackback:ping><description><![CDATA[<pre style="margin: 0cm 0cm 0pt; word-break: break-all"><span style="font-family: 新細明體">jdk14的logging还有点麻烦,要覆盖jre/lib/logging.properties的配置,还要在启动时加-Djava.util.logging.config.file=mylogging.properties<br />
<br />
<br />
<br />
<br />
<br />
java 1.4</span><span style="font-family: SimSun">日志纪录在</span><span style="font-family: 新細明體">java.util.logging.Level</span><span style="font-family: SimSun">类中定义了下列日志级别常数</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">SERVER</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示一个严重失败。常常将有一个伴随的</span><span style="font-family: 新細明體">Throwable</span><span style="font-family: SimSun">。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">CONFIG</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">为应用配置期间所生成的消息而设计的。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">INFO</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">中等优先级。表示一个构件正在做什么（例如，监视一项任务的</span><span style="font-family: Wingdings"><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span><span style="font-family: SimSun">运行进度），但不是用来帮助调试该构件。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">FINE</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">跟踪信息。该级别和较低优先级的级别应该用来帮助调试某些类，但不应该用来总体的说明该应用的工作方式。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">FINER</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">详细的跟踪信息。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">FINEST</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">非常详细的跟踪信息。</span></pre>
<pre style="margin: 0cm 0cm 0pt; word-break: break-all; tab-stops: list 36.0pt"><span style="font-family: 新細明體">Log4j</span><span style="font-family: SimSun">在</span><code><span style="font-size: 10pt; font-family: 細明體">org.apache.log4j.Level</span></code><span style="font-family: SimSun">类中定义了下列日志级别常数</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">FATAL</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示一个严重失败。导致</span><span style="font-family: 新細明體">application</span><span style="font-family: SimSun">的中断。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">ERROR</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示一个错误事件。可以允许</span><span style="font-family: 新細明體">Application</span><span style="font-family: SimSun">可以继续运行。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">WARN</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示一个有潜在的危险。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">INFO</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示一个构件正在做重要运行情况，信息比较粗糙。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">DEBUG</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示一个构件详细的运行情况，用于调试</span><span style="font-family: 新細明體">Application</span><span style="font-family: SimSun">。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">ALL</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示纪录所有级别的日志信息。</span></pre>
<pre style="margin: 0cm 0cm 0pt; word-break: break-all; tab-stops: list 36.0pt"><font face="Times New Roman">Common-logging</font><span style="font-family: SimSun">的日志级别分为</span><font face="Times New Roman">6</font><span style="font-family: SimSun">种，从低到高分别为</span><font face="Times New Roman">trace</font><span style="font-family: SimSun">，</span><font face="Times New Roman">debug</font><span style="font-family: SimSun">，</span><font face="Times New Roman">info</font><span style="font-family: SimSun">，</span><font face="Times New Roman">warn</font><span style="font-family: SimSun">，</span><font face="Times New Roman">error</font><span style="font-family: SimSun">，</span><font face="Times New Roman">fatal</font><span style="font-family: SimSun">。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">FATAL</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示一个严重失败。导致</span><span style="font-family: 新細明體">application</span><span style="font-family: SimSun">的中断。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">ERROR</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示一个错误事件。可以允许</span><span style="font-family: 新細明體">Application</span><span style="font-family: SimSun">可以继续运行。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">WARN</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示一个有潜在的危险。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">INFO</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示一个构件正在做重要运行情况，信息比较粗糙。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">DEBUG</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">表示一个构件详细的运行情况，用于调试</span><span style="font-family: 新細明體">Application</span><span style="font-family: SimSun">。</span></pre>
<pre style="margin: 0cm 0cm 0pt 42pt; word-break: break-all; text-indent: -24pt; tab-stops: list 42.0pt"><span style="font-family: Wingdings">&#216;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 新細明體">TRACE</span></strong><strong><span style="font-family: SimSun">：</span></strong><span style="font-family: SimSun">非常详细的跟踪信息，仅仅用于纪录该日志而已。<br />
<br />
<br />
<br />
<br />
<br />
<br />
</span></pre>
<img src ="http://www.blogjava.net/chenlb/aggbug/192134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2008-04-11 11:50 <a href="http://www.blogjava.net/chenlb/archive/2008/04/11/192134.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>下载文件保存提示文件名显示中文</title><link>http://www.blogjava.net/chenlb/archive/2008/03/16/186609.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Sun, 16 Mar 2008 06:29:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2008/03/16/186609.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/186609.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2008/03/16/186609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/186609.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/186609.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;用URLEncoder转换。<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">String&nbsp;filename&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;URLEncoder.encode(</span><span style="color: #000000">"</span><span style="color: #000000">中文.zip</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
response.addHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Content-Disposition</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">attachment;filename=</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">filename);&nbsp;</span></div>
<img src ="http://www.blogjava.net/chenlb/aggbug/186609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2008-03-16 14:29 <a href="http://www.blogjava.net/chenlb/archive/2008/03/16/186609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>System.in重复接收用户输入一行命令</title><link>http://www.blogjava.net/chenlb/archive/2008/03/11/185490.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Tue, 11 Mar 2008 13:49:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2008/03/11/185490.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/185490.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2008/03/11/185490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/185490.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/185490.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 以前想用循环来System.in (或是其它输入方式老是达不预想的效果,第一次输入后回车,不会接收下一次用户的输入)。后来才发现readline() != null才能达到效果。<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;net.blogjava.chenlb;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.BufferedReader;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.InputStreamReader;<br />
<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;*&nbsp;重复接收用户输入一行命令<br />
&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;chenlb&nbsp;2008-3-11&nbsp;下午09:24:50<br />
&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;UserInput&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;IOException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">说明:&nbsp;输入QUIT退出</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(</span><span style="color: #000000">"</span><span style="color: #000000">\ninput&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;inputStr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;br&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedReader(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;InputStreamReader(System.in));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">((inputStr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;br.readLine())&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(inputStr.equals(</span><span style="color: #000000">"</span><span style="color: #000000">QUIT</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.exit(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">你输入的是:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">inputStr);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">处理你的逻辑</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(</span><span style="color: #000000">"</span><span style="color: #000000">\ninput&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
</span></div>
<img src ="http://www.blogjava.net/chenlb/aggbug/185490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2008-03-11 21:49 <a href="http://www.blogjava.net/chenlb/archive/2008/03/11/185490.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java读RTF乱码问题</title><link>http://www.blogjava.net/chenlb/archive/2008/02/01/178863.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Fri, 01 Feb 2008 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2008/02/01/178863.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/178863.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2008/02/01/178863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/178863.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/178863.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 这几天想用Java读富文档。用javax.swing.text和javax.swing.text.rtf包中的类读RTF文档时出现中文乱码问题(出现?号)。<br />
&nbsp;&nbsp;&nbsp; 幸好找到 <a href="http://www.blogjava.net/angel512/">ANGEL SKY</a> 的博客。用ISO8859_1编码转换。<br />
<br />
代码片断：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee" twffan="done"><span style="color: #000000" twffan="done">String&nbsp;bodyText&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">null</span><span style="color: #000000" twffan="done">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultStyledDocument&nbsp;styledDoc&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;DefaultStyledDocument();&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">javax.swing.text.Document的一个实例</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">try</span><span style="color: #000000" twffan="done">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;FileInputStream(</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;File(</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">data/java.swing.text读RTF文档测试.rtf</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;RTFEditorKit().read(is,&nbsp;styledDoc,&nbsp;</span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bodyText&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;String(styledDoc.getText(</span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">,&nbsp;styledDoc.getLength()).getBytes(</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">ISO8859_1</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">));&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">提取文本</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff" twffan="done">catch</span><span style="color: #000000" twffan="done">&nbsp;(IOException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">throw</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;DocumentHandlerException(</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">不能从RTF中摘录文本!</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">,&nbsp;e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff" twffan="done">catch</span><span style="color: #000000" twffan="done">&nbsp;(BadLocationException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">throw</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;DocumentHandlerException(</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">不能从RTF中摘录文本!</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">,&nbsp;e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(bodyText);</span></div>
<img src ="http://www.blogjava.net/chenlb/aggbug/178863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2008-02-01 17:05 <a href="http://www.blogjava.net/chenlb/archive/2008/02/01/178863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生产者-消费者</title><link>http://www.blogjava.net/chenlb/archive/2008/01/24/177452.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Thu, 24 Jan 2008 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2008/01/24/177452.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/177452.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2008/01/24/177452.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/177452.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/177452.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 这学期，应聘的时候有一些是线程相关的，虽然自己对线程编程有点概念，但没有写过经典的例子。放假了有点时候，就想写多线程的例子。<br />
<br />
&nbsp;&nbsp;&nbsp; 笔试的题目类似地：一个生产者一次生产10个，满了后通知消费者，然后等待。一个消费者产品有满了就消费。到空时通知生产者，然后等待。<br />
<br />
&nbsp;&nbsp;&nbsp; 那时对等待/通知机制没怎么写过，那次笔试应该写的大概对（想法对），但写的wait()和notifyAll()的位置不对。现在有时间就写了这个例子。<br />
&nbsp;&nbsp;&nbsp; 描述：生产者一次生产N个产品，池中达到M就等待，通知等待的消费者。消费者有产品就消费，到没有时就通知生产者，然后等待。<br />
<br />
1.生产者：<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" twffan="done"><span style="color: #0000ff" twffan="done">package</span><span style="color: #000000" twffan="done">&nbsp;net.blogjava.chenlb.multithreaded;<br />
<br />
</span><span style="color: #0000ff" twffan="done">import</span><span style="color: #000000" twffan="done">&nbsp;java.util.List;<br />
<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
&nbsp;*&nbsp;</span><span style="color: #808080" twffan="done">@author</span><span style="color: #008000" twffan="done">&nbsp;chenlb<br />
&nbsp;*&nbsp;<br />
&nbsp;*&nbsp;生产者.&lt;br/&gt;<br />
&nbsp;*&nbsp;默认产品池大小M=20,产品梯阶大小N=5.在生产过程中,池的大小会超过20,但池中最大应该是M+N-1.<br />
&nbsp;</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">class</span><span style="color: #000000" twffan="done">&nbsp;Producer&nbsp;</span><span style="color: #0000ff" twffan="done">implements</span><span style="color: #000000" twffan="done">&nbsp;Runnable&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;池默认大小<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">final</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done">&nbsp;DEFALUT_SIZE&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #000000" twffan="done">20</span><span style="color: #000000" twffan="done">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;默认一次生产的数量<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">final</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done">&nbsp;DEFALUT_STEP_SIZE&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #000000" twffan="done">5</span><span style="color: #000000" twffan="done">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done">&nbsp;PRODUCER_ID&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">生产者号</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;List</span><span style="color: #000000" twffan="done">&lt;</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;pool&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">null</span><span style="color: #000000" twffan="done">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done">&nbsp;size&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;DEFALUT_SIZE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done">&nbsp;stepSize&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;DEFALUT_STEP_SIZE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;String&nbsp;name&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">Producer_</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">(</span><span style="color: #000000" twffan="done">++</span><span style="color: #000000" twffan="done">PRODUCER_ID);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">生产者名</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">boolean</span><span style="color: #000000" twffan="done">&nbsp;isRun&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">true</span><span style="color: #000000" twffan="done">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;默认产品池大小20,&nbsp;默认产品增长梯阶大小5<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;Producer(List</span><span style="color: #000000" twffan="done">&lt;</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;pool)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.pool&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;pool;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080" twffan="done">@param</span><span style="color: #008000" twffan="done">&nbsp;pool<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080" twffan="done">@param</span><span style="color: #008000" twffan="done">&nbsp;size&nbsp;池大小<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;Producer(List</span><span style="color: #000000" twffan="done">&lt;</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;pool,&nbsp;</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done">&nbsp;size)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.pool&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;pool;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.size&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;size;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080" twffan="done">@param</span><span style="color: #008000" twffan="done">&nbsp;pool<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080" twffan="done">@param</span><span style="color: #008000" twffan="done">&nbsp;size&nbsp;池大小<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080" twffan="done">@param</span><span style="color: #008000" twffan="done">&nbsp;stepSize&nbsp;一次生产多少<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;Producer(List</span><span style="color: #000000" twffan="done">&lt;</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;pool,&nbsp;</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done">&nbsp;size,&nbsp;</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done">&nbsp;stepSize)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.pool&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;pool;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.size&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;size;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.stepSize&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;stepSize;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">void</span><span style="color: #000000" twffan="done">&nbsp;run()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">&nbsp;TODO&nbsp;生产者线程<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">int&nbsp;pi&nbsp;=&nbsp;0;</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">while</span><span style="color: #000000" twffan="done">(isRun)&nbsp;{</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">&amp;&amp;&nbsp;pi&lt;10<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">pi++;</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">synchronized</span><span style="color: #000000" twffan="done">&nbsp;(pool)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">同步产品池</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">if</span><span style="color: #000000" twffan="done">(pool.size()&nbsp;</span><span style="color: #000000" twffan="done">&gt;=</span><span style="color: #000000" twffan="done">&nbsp;size)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">try</span><span style="color: #000000" twffan="done">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">&nbsp;等待!</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.wait();&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">同步什么就等待什么,否则抛出java.lang.IllegalMonitorStateException</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&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: #0000ff" twffan="done">catch</span><span style="color: #000000" twffan="done">&nbsp;(InterruptedException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isRun&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">false</span><span style="color: #000000" twffan="done">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">&nbsp;thread&nbsp;interrupt!</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff" twffan="done">else</span><span style="color: #000000" twffan="done">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">for</span><span style="color: #000000" twffan="done">(</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done">&nbsp;i</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">;&nbsp;i</span><span style="color: #000000" twffan="done">&lt;</span><span style="color: #000000" twffan="done">stepSize;&nbsp;i</span><span style="color: #000000" twffan="done">++</span><span style="color: #000000" twffan="done">)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">一次生产stepSize个产品</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.add(product());&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">生产产品</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">产品池中有:&nbsp;</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">pool.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.notifyAll();&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">通知等待的线程(主要用来通知消费者,&nbsp;但生产者线程也会通知到)</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">try</span><span style="color: #000000" twffan="done">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">&nbsp;休息1秒!</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(</span><span style="color: #000000" twffan="done">1000</span><span style="color: #000000" twffan="done">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">调试用</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff" twffan="done">catch</span><span style="color: #000000" twffan="done">&nbsp;(InterruptedException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">&nbsp;sleep&nbsp;1s&nbsp;thread&nbsp;interrupt</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">&nbsp;end!&nbsp;pool&nbsp;size:&nbsp;</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">pool.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done">&nbsp;P_ID&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;生产产品<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080" twffan="done">@return</span><span style="color: #008000" twffan="done">&nbsp;产品<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;Product&nbsp;product()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">product_</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">(</span><span style="color: #000000" twffan="done">++</span><span style="color: #000000" twffan="done">P_ID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">&nbsp;生产了:&nbsp;</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">return</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;Production(name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
<br />
<br />
2.消费者：<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee" twffan="done"><span style="color: #0000ff" twffan="done">package</span><span style="color: #000000" twffan="done">&nbsp;net.blogjava.chenlb.multithreaded;<br />
<br />
</span><span style="color: #0000ff" twffan="done">import</span><span style="color: #000000" twffan="done">&nbsp;java.util.List;<br />
<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
&nbsp;*&nbsp;</span><span style="color: #808080" twffan="done">@author</span><span style="color: #008000" twffan="done">&nbsp;chenlb<br />
&nbsp;*&nbsp;<br />
&nbsp;*&nbsp;消费者<br />
&nbsp;</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">class</span><span style="color: #000000" twffan="done">&nbsp;Consumer&nbsp;</span><span style="color: #0000ff" twffan="done">implements</span><span style="color: #000000" twffan="done">&nbsp;Runnable&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done">&nbsp;C_ID&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">消费者ID</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;List</span><span style="color: #000000" twffan="done">&lt;</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;pool&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">null</span><span style="color: #000000" twffan="done">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;String&nbsp;name&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">Consumer_</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">(</span><span style="color: #000000" twffan="done">++</span><span style="color: #000000" twffan="done">C_ID);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">boolean</span><span style="color: #000000" twffan="done">&nbsp;isRun&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">true</span><span style="color: #000000" twffan="done">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;Consumer(List</span><span style="color: #000000" twffan="done">&lt;</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;pool)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.pool&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;pool;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">void</span><span style="color: #000000" twffan="done">&nbsp;run()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">&nbsp;TODO&nbsp;消费者线程<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">int&nbsp;pi&nbsp;=&nbsp;0;</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">while</span><span style="color: #000000" twffan="done">(isRun)&nbsp;{</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">&amp;&amp;&nbsp;pi&lt;10<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">pi++;</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">synchronized</span><span style="color: #000000" twffan="done">&nbsp;(pool)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">if</span><span style="color: #000000" twffan="done">(pool.size()&nbsp;</span><span style="color: #000000" twffan="done">&lt;</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #000000" twffan="done">1</span><span style="color: #000000" twffan="done">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">try</span><span style="color: #000000" twffan="done">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">&nbsp;等待!</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.notifyAll();&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">通知线程(主要是生产者,但也会通知到生产者线程)</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.wait();<br />
&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: #0000ff" twffan="done">catch</span><span style="color: #000000" twffan="done">&nbsp;(InterruptedException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isRun&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">false</span><span style="color: #000000" twffan="done">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">&nbsp;thread&nbsp;interrupt!</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff" twffan="done">else</span><span style="color: #000000" twffan="done">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Product&nbsp;p&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;pool.remove(</span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">消费</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printProduct(p);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">try</span><span style="color: #000000" twffan="done">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(</span><span style="color: #000000" twffan="done">1000</span><span style="color: #000000" twffan="done">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">调试用</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff" twffan="done">catch</span><span style="color: #000000" twffan="done">&nbsp;(InterruptedException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">&nbsp;sleep&nbsp;1s&nbsp;thread&nbsp;interrupt</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">&nbsp;end!&nbsp;pool&nbsp;size:&nbsp;</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">pool.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">void</span><span style="color: #000000" twffan="done">&nbsp;printProduct(Product&nbsp;p)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">&nbsp;消费了:&nbsp;</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">p.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<br />
<br />
3.Demo<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" twffan="done"><span style="color: #0000ff" twffan="done">package</span><span style="color: #000000" twffan="done">&nbsp;net.blogjava.chenlb.multithreaded;<br />
<br />
</span><span style="color: #0000ff" twffan="done">import</span><span style="color: #000000" twffan="done">&nbsp;java.util.LinkedList;<br />
</span><span style="color: #0000ff" twffan="done">import</span><span style="color: #000000" twffan="done">&nbsp;java.util.List;<br />
<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
&nbsp;*&nbsp;</span><span style="color: #808080" twffan="done">@author</span><span style="color: #008000" twffan="done">&nbsp;chenlb<br />
&nbsp;*<br />
&nbsp;</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">class</span><span style="color: #000000" twffan="done">&nbsp;Sale&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">void</span><span style="color: #000000" twffan="done">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">链表产品池</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000" twffan="done">&lt;</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;pool&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;LinkedList</span><span style="color: #000000" twffan="done">&lt;</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">&gt;</span><span style="color: #000000" twffan="done">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">两个生产者</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Producer&nbsp;p1&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;Producer(pool);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Producer&nbsp;p2&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;Producer(pool);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread&nbsp;tp1&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;Thread(p1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread&nbsp;tp2&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;Thread(p2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tp1.start();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tp2.start();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">两个消费者</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Consumer&nbsp;c1&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;Consumer(pool);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Consumer&nbsp;c2&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;Consumer(pool);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread&nbsp;tc1&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;Thread(c1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread&nbsp;tc2&nbsp;</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done">&nbsp;Thread(c2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tc1.start();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tc2.start();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
</span></div>
<br />
注意：等待时候要用pool.wait()因为同步的是pool。否则会抛出java.lang.IllegalMonitorStateException<br />
<br />
^_^ <br />
<br />
<a href="http://www.blogjava.net/Files/chenlb/p-c-src.rar">代码下载</a> 
<img src ="http://www.blogjava.net/chenlb/aggbug/177452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2008-01-24 11:36 <a href="http://www.blogjava.net/chenlb/archive/2008/01/24/177452.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ant 编译特定包下面的源文件</title><link>http://www.blogjava.net/chenlb/archive/2007/12/15/167926.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Sat, 15 Dec 2007 04:13:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/12/15/167926.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/167926.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/12/15/167926.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/167926.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/167926.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 项目中有applet，现在想只编译applet包下面的内容。<br />
<br />
部分代码：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee" twffan="done"><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">target&nbsp;</span><span style="color: #ff0000" twffan="done">name</span><span style="color: #0000ff" twffan="done">="compile.applet"</span><span style="color: #ff0000" twffan="done">&nbsp;depends</span><span style="color: #0000ff" twffan="done">="compile.java"</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">mkdir&nbsp;</span><span style="color: #ff0000" twffan="done">dir</span><span style="color: #0000ff" twffan="done">="${deploy.applet.dir}"</span><span style="color: #ff0000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">/&gt;</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">javac&nbsp;</span><span style="color: #ff0000" twffan="done">destdir</span><span style="color: #0000ff" twffan="done">="${deploy.applet.dir}"</span><span style="color: #ff0000" twffan="done">&nbsp;encoding</span><span style="color: #0000ff" twffan="done">="UTF-8"</span><span style="color: #ff0000" twffan="done">&nbsp;source</span><span style="color: #0000ff" twffan="done">="1.4"</span><span style="color: #ff0000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcdir</span><span style="color: #0000ff" twffan="done">="${src.java.dir}"</span><span style="color: #ff0000" twffan="done">&nbsp;includes</span><span style="color: #0000ff" twffan="done">="**/applet/**/*.java"</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">classpath&nbsp;</span><span style="color: #ff0000" twffan="done">refid</span><span style="color: #0000ff" twffan="done">="project.classpath"</span><span style="color: #ff0000" twffan="done">&nbsp;</span><span style="color: #0000ff" twffan="done">/&gt;</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">javac</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">target</span><span style="color: #0000ff" twffan="done">&gt;</span></div>
<br />
同时也相复制特定子目录下的文件夹：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee" twffan="done"><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">target&nbsp;</span><span style="color: #ff0000" twffan="done">name</span><span style="color: #0000ff" twffan="done">="deploy.applet"</span><span style="color: #ff0000" twffan="done">&nbsp;depends</span><span style="color: #0000ff" twffan="done">="compile.java"</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">copy&nbsp;</span><span style="color: #ff0000" twffan="done">todir</span><span style="color: #0000ff" twffan="done">="${deploy.applet.dir}"</span><span style="color: #ff0000" twffan="done">&nbsp;preservelastmodified</span><span style="color: #0000ff" twffan="done">="true"</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">fileset&nbsp;</span><span style="color: #ff0000" twffan="done">dir</span><span style="color: #0000ff" twffan="done">="${build.java.dir}"</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">include&nbsp;</span><span style="color: #ff0000" twffan="done">name</span><span style="color: #0000ff" twffan="done">="**/applet/**/*.class"</span><span style="color: #0000ff" twffan="done">/&gt;</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">fileset</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">copy</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">target</span><span style="color: #0000ff" twffan="done">&gt;</span></div>
<br />
<br />
两个都用到inclue方便。
<img src ="http://www.blogjava.net/chenlb/aggbug/167926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-12-15 12:13 <a href="http://www.blogjava.net/chenlb/archive/2007/12/15/167926.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ant build 出现 warning  modified in the future</title><link>http://www.blogjava.net/chenlb/archive/2007/12/13/167619.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Thu, 13 Dec 2007 15:13:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/12/13/167619.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/167619.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/12/13/167619.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/167619.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/167619.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天同学想rebuild项目源码，但出现上面情况。上网找一下说与系统时间有问题。今天他机器有点问题，时间回到&#8220;前几天&#8221;的状态，面rebuild前的class文件的时间比&#8220;前几天&#8221;的状态新了。改正时间就行了。<br />
<br />
^_^
<img src ="http://www.blogjava.net/chenlb/aggbug/167619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-12-13 23:13 <a href="http://www.blogjava.net/chenlb/archive/2007/12/13/167619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>org.apache.struts.action.InvalidCancelException 错误问题</title><link>http://www.blogjava.net/chenlb/archive/2007/10/31/157228.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Wed, 31 Oct 2007 08:25:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/10/31/157228.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/157228.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/10/31/157228.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/157228.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/157228.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天，师弟开发时有遇到一个小问题：struts表单点取消时，出现org.apache.struts.action.InvalidCancelException异常，弄了一阵子，发现用了validate="true"就会出现此异常。然后找到 <a href="http://www.blogjava.net/freiberg">freiberg</a> 的博客。<br />
<br />
说到用<br />
<br />
&lt;set-property property="cancellable" value="true"/&gt;<br />
<br />
可以解决，马上复制去试下，行喔，^_^。<br />
<br />
---------------------------------引用--------------------------------------<br />
<p>Any existing applications that use the <strong>Cancel</strong> processing will need to modify their struts-config.xml to set the <strong>cancellable</strong> property for actions which require it. </p>
<p>In Struts 1.2.9 the <strong>&lt;set-property&gt;</strong> is used to set the <strong>cancellable</strong> property for an action.... </p>
<pre>    &lt;action path="/fooAction"
input="/foo.jsp"
validate="true"&gt;
&lt;set-property property="cancellable" value="true"/&gt;
&lt;forward name="success" path="/bar.jsp"/&gt;
&lt;/action&gt;
</pre>
<p>From Struts 1.3.x a new <strong>cancellable</strong> attribute can be used.... </p>
<pre>    &lt;action path="/fooAction"
input="/foo.jsp"
validate="true"
cancellable="true"&gt;
&lt;forward name="success" path="/bar.jsp"/&gt;
&lt;/action&gt;
</pre>
<p>In both Struts 1.2.9 and Struts 1.3.x an exception handler can be configured to handle the <tt>InvalidCancelException</tt> </p>
<pre>    &lt;action path="/fooAction"
input="/foo.jsp"
validate="true"
cancellable="true"&gt;
&lt;forward name="success" path="/bar.jsp"/&gt;
&lt;exception key="errors.cancel"
type="org.apache.struts.action.InvalidCancelException"
path="/foo.jsp"/&gt;
&lt;/action&gt;
</pre>
<p>---------------------------------------end-----------------------------------------------------<br />
<br />
刚好我用的是struts是1.2.9的<br />
<br />
原文：<a href="http://www.blogjava.net/freiberg/archive/2007/10/20/154384.html">http://www.blogjava.net/freiberg/archive/2007/10/20/154384.html</a> </p>
<img src ="http://www.blogjava.net/chenlb/aggbug/157228.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-10-31 16:25 <a href="http://www.blogjava.net/chenlb/archive/2007/10/31/157228.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jxl 读 excel</title><link>http://www.blogjava.net/chenlb/archive/2007/10/29/156614.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Mon, 29 Oct 2007 03:04:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/10/29/156614.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/156614.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/10/29/156614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/156614.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/156614.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 与写对应的是读.</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;net.blogjava.chenlb;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.InputStream;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.ArrayList;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.List;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;jxl.Cell;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;jxl.Sheet;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;jxl.Workbook;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;jxl.read.biff.BiffException;<br />
<br />
<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;*&nbsp;jxl&nbsp;的Excel阅读器.<br />
&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;chenlb&nbsp;2007-10-20&nbsp;下午01:36:01<br />
&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;JxlExcelReader&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000">&nbsp;返回String[]&nbsp;的列表<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;List&nbsp;readExcel(InputStream&nbsp;in)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;lt&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Workbook&nbsp;wb&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wb&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Workbook.getWorkbook(in);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sheet[]&nbsp;sheets&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;wb.getSheets();&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获取工作</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">sheets.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sheet&nbsp;sheet&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sheets[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;j</span><span style="color: #000000">&lt;</span><span style="color: #000000">sheet.getRows();&nbsp;j</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cell[]&nbsp;cells&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sheet.getRow(j);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">读取一行</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(cells&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 style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;cells.length&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">这一行有内容才添加</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;dataCells&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[cells.length];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;k</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;k</span><span style="color: #000000">&lt;</span><span style="color: #000000">cells.length;&nbsp;k</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataCells[k]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">""</span><span style="color: #000000">+</span><span style="color: #000000">cells[k].getContents();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">读内容</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #008000">//</span><span style="color: #008000">column</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lt.add(dataCells);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #008000">//</span><span style="color: #008000">one&nbsp;sheet</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #008000">//</span><span style="color: #008000">xls&nbsp;file</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(BiffException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IOException&nbsp;e)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">finally</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(wb&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wb.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;lt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
</span></div>
<img src ="http://www.blogjava.net/chenlb/aggbug/156614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-10-29 11:04 <a href="http://www.blogjava.net/chenlb/archive/2007/10/29/156614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jxl 写 excel</title><link>http://www.blogjava.net/chenlb/archive/2007/10/29/156613.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Mon, 29 Oct 2007 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/10/29/156613.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/156613.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/10/29/156613.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/156613.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/156613.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 项目中要写excel，把这个例子写出来，以后可以看。<br />
<br />
1.写excel类<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;net.blogjava.chenlb;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.OutputStream;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.List;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;jxl.Workbook;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;jxl.write.Label;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;jxl.write.WritableSheet;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;jxl.write.WritableWorkbook;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;jxl.write.WriteException;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;jxl.write.biff.RowsExceededException;<br />
<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;*&nbsp;Jxl&nbsp;的&nbsp;Excel写数据器.<br />
&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;chenlb&nbsp;2007-10-29&nbsp;上午10:39:31<br />
&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;JxlExcelWriter&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;datas&nbsp;封装着Object[]的列表,&nbsp;一般是String内容.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;title&nbsp;每个sheet里的标题.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;writeExcel(OutputStream&nbsp;out,&nbsp;List&nbsp;datas,&nbsp;String[]&nbsp;title)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(datas&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;IllegalArgumentException(</span><span style="color: #000000">"</span><span style="color: #000000">写excel流需要List参数!</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WritableWorkbook&nbsp;workbook&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Workbook.createWorkbook(out);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WritableSheet&nbsp;ws&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;workbook.createSheet(</span><span style="color: #000000">"</span><span style="color: #000000">sheet&nbsp;1</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;rowNum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">要写的行</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(title&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putRow(ws,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;title);</span><span style="color: #008000">//</span><span style="color: #008000">压入标题</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowNum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">datas.size();&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">,&nbsp;rowNum</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{</span><span style="color: #008000">//</span><span style="color: #008000">写sheet</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[]&nbsp;cells&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Object[])&nbsp;datas.get(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putRow(ws,&nbsp;rowNum,&nbsp;cells);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">压一行到sheet</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;workbook.write();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;workbook.close();&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">一定要关闭,&nbsp;否则没有保存Excel</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(RowsExceededException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">jxl&nbsp;write&nbsp;RowsExceededException:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">e.getMessage());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(WriteException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">jxl&nbsp;write&nbsp;WriteException:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">e.getMessage());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IOException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">jxl&nbsp;write&nbsp;file&nbsp;i/o&nbsp;exception!,&nbsp;cause&nbsp;by:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">e.getMessage());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;putRow(WritableSheet&nbsp;ws,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;rowNum,&nbsp;Object[]&nbsp;cells)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;RowsExceededException,&nbsp;WriteException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;j</span><span style="color: #000000">&lt;</span><span style="color: #000000">cells.length;&nbsp;j</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{</span><span style="color: #008000">//</span><span style="color: #008000">写一行</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Label&nbsp;cell&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Label(j,&nbsp;rowNum,&nbsp;</span><span style="color: #000000">""</span><span style="color: #000000">+</span><span style="color: #000000">cells[j]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ws.addCell(cell);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<br />
2.使用<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: #000000">&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;testWriteExcel()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;datas&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;data&nbsp;</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">chenlb</span><span style="color: #000000">"</span><span style="color: #000000">};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datas.add(data);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;out&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(</span><span style="color: #000000">"</span><span style="color: #000000">doc/chenlb.blogjava.net.xls</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JxlExcelWriter&nbsp;jxlExcelWriter&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JxlExcelWriter();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jxlExcelWriter.writeExcel(out,&nbsp;datas,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String[]&nbsp;{</span><span style="color: #000000">"</span><span style="color: #000000">Id</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">name</span><span style="color: #000000">"</span><span style="color: #000000">});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(FileNotFoundException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IOException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
<img src ="http://www.blogjava.net/chenlb/aggbug/156613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-10-29 10:52 <a href="http://www.blogjava.net/chenlb/archive/2007/10/29/156613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jstl 1.0 formatDate yyyy-mm 不能正常工作</title><link>http://www.blogjava.net/chenlb/archive/2007/10/25/155971.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Thu, 25 Oct 2007 14:38:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/10/25/155971.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/155971.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/10/25/155971.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/155971.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/155971.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; jstl 1.0 formatDate yyyy-mm 不能正常工作，格式出来的月是00，要用yyyy-MM，才能，郁闷。
<img src ="http://www.blogjava.net/chenlb/aggbug/155971.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-10-25 22:38 <a href="http://www.blogjava.net/chenlb/archive/2007/10/25/155971.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 压缩目录为 zip </title><link>http://www.blogjava.net/chenlb/archive/2007/10/18/153866.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Thu, 18 Oct 2007 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/10/18/153866.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/153866.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/10/18/153866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/153866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/153866.html</trackback:ping><description><![CDATA[<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用java好久了，还没有写个压缩文件的示例，昨晚弄了下，把写下来，以后可以看。<br />
<br />
关系到<br />
java.util.zip.ZipEntry<br />
java.util.zip.ZipOutputStream<br />
<br />
如果要解决中文文件名问题，用到ant.jar<br />
<br />
这两个类。</p>
ZipOutputStream.putNextEntry(ZipEntry);就可以了，然后ZipOutputStream.wirte();就得了。<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;net.blogjava.chenlb.zip;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.BufferedOutputStream;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.File;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.FileInputStream;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.FileNotFoundException;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.FileOutputStream;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.OutputStream;<br />
</span><span style="color: #008000">//</span><span style="color: #008000">import&nbsp;java.util.zip.ZipEntry;<br />
</span><span style="color: #008000">//</span><span style="color: #008000">import&nbsp;java.util.zip.ZipOutputStream;<br />
</span><span style="color: #008000">//</span><span style="color: #008000">用ant.jar的zip.*可以解决中文文件名问题</span><span style="color: #008000"><br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.tools.zip.ZipEntry;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.tools.zip.ZipOutputStream;<br />
<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;*&nbsp;压缩文件.<br />
&nbsp;*&nbsp;2007-10-17&nbsp;下午11:19:50<br />
&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;chenlb<br />
&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;RecursiveZip&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RecursiveZip&nbsp;recursiveZip&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RecursiveZip();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">====开始====</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;os&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(</span><span style="color: #000000">"</span><span style="color: #000000">e:/doc-recursive.zip</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedOutputStream&nbsp;bs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedOutputStream(os);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZipOutputStream&nbsp;zo&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ZipOutputStream(bs);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">recursiveZip.zip("e:/recursive-zip/中文文件名.txt",&nbsp;new&nbsp;File("e:/recursive-zip"),&nbsp;zo,&nbsp;true,&nbsp;true);</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recursiveZip.zip(</span><span style="color: #000000">"</span><span style="color: #000000">e:/recursive-zip</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(</span><span style="color: #000000">"</span><span style="color: #000000">e:/recursive-zip</span><span style="color: #000000">"</span><span style="color: #000000">),&nbsp;zo,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zo.closeEntry();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zo.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(FileNotFoundException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IOException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">====完成====</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;path&nbsp;要压缩的路径,&nbsp;可以是目录,&nbsp;也可以是文件.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;basePath&nbsp;如果path是目录,它一般为new&nbsp;File(path),&nbsp;作用是:使输出的zip文件以此目录为根目录,&nbsp;如果为null它只压缩文件,&nbsp;不解压目录.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;zo&nbsp;压缩输出流<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;isRecursive&nbsp;是否递归<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;isOutBlankDir&nbsp;是否输出空目录,&nbsp;要使输出空目录为true,同时baseFile不为null.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@throws</span><span style="color: #008000">&nbsp;IOException<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;zip(String&nbsp;path,&nbsp;File&nbsp;basePath,&nbsp;ZipOutputStream&nbsp;zo,&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;isRecursive,&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;isOutBlankDir)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;IOException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;inFile&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(path);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File[]&nbsp;files&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File[</span><span style="color: #000000">0</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(inFile.isDirectory())&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">是目录</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;files&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;inFile.listFiles();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(inFile.isFile())&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">是文件</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;files&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File[</span><span style="color: #000000">1</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;files[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;inFile;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;buf&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[</span><span style="color: #000000">1024</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;len;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">System.out.println("baseFile:&nbsp;"+baseFile.getPath());</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">files.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;pathName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">""</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(basePath&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(basePath.isDirectory())&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pathName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;files[i].getPath().substring(basePath.getPath().length()</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{</span><span style="color: #008000">//</span><span style="color: #008000">文件</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pathName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;files[i].getPath().substring(basePath.getParent().length()</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pathName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;files[i].getName();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(pathName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(files[i].isDirectory())&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(isOutBlankDir&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;basePath&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zo.putNextEntry(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ZipEntry(pathName</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">可以使空目录也放进去</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(isRecursive)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">递归</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zip(files[i].getPath(),&nbsp;basePath,&nbsp;zo,&nbsp;isRecursive,&nbsp;isOutBlankDir);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;fin&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileInputStream(files[i]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zo.putNextEntry(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ZipEntry(pathName));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">((len</span><span style="color: #000000">=</span><span style="color: #000000">fin.read(buf))</span><span style="color: #000000">&gt;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zo.write(buf,</span><span style="color: #000000">0</span><span style="color: #000000">,len);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fin.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/chenlb/aggbug/153866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-10-18 13:53 <a href="http://www.blogjava.net/chenlb/archive/2007/10/18/153866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp 下载文件</title><link>http://www.blogjava.net/chenlb/archive/2007/10/16/153408.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Tue, 16 Oct 2007 15:57:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/10/16/153408.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/153408.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/10/16/153408.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/153408.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/153408.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jsp 直接输出二进制文件怎么办呢?<br />
<br />
download.jsp<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: #000000">&lt;%</span><span style="color: #000000">@&nbsp;page&nbsp;language</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">java</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;pageEncoding</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;%</span><span style="color: #000000">@&nbsp;page&nbsp;</span><span style="color: #0000ff">import</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">java.io.*</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">%&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;%</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;fin&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileInputStream(application.getRealPath(</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">/readme.zip</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;response.addHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Content-Disposition</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">attachment;filename=read.zip</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;buf&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[</span><span style="color: #000000">1024</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;readSize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fin.read(buf);<br />
&nbsp;&nbsp;&nbsp;&nbsp;OutputStream&nbsp;os&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;response.getOutputStream();<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(readSize&nbsp;</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">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.write(buf,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;readSize);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readSize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fin.read(buf);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;os.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;os.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;os&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;response.flushBuffer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;out.clear();<br />
&nbsp;&nbsp;&nbsp;&nbsp;out&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;pageContext.pushBody();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IllegalStateException&nbsp;e)&nbsp;{<br />
<br />
}<br />
</span><span style="color: #000000">%&gt;</span></div>
<br />
webapps/test/readme.zip文件可以被下载，可能第一次会输出文字。
<img src ="http://www.blogjava.net/chenlb/aggbug/153408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-10-16 23:57 <a href="http://www.blogjava.net/chenlb/archive/2007/10/16/153408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>weblogic 8.1.4  hibernate3 异常 org.hibernate.hql.ast.HqlToken</title><link>http://www.blogjava.net/chenlb/archive/2007/10/07/150849.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Sun, 07 Oct 2007 08:37:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/10/07/150849.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/150849.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/10/07/150849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/150849.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/150849.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 前几天开始写代码，在weblogic 8.1.4上用hibernate3写hql语句，hql语句中出现有实体属性名（而不表字段名，两个不一样），竟然报错说表中没有这个字段，同时出现org.hibernate.hql.ast.HqlToken异常。郁闷，于是网上搜索下，说是weblogic 8.1.4 与 hibernate3冲突。都用了antlr.jar。<br />
<br />
多谢 蹒跚而行的博客 <a href="http://blog.chinajavaworld.com/entry.jspa?id=829">http://blog.chinajavaworld.com/entry.jspa?id=829</a> <br />
<br />
转载他的<br />
<br />
<p>ClassNotFoundException: org.hibernate.hql.ast.HqlToken 错误weblogic异常退出。 <br />
原因: <br />
Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器，在Hibernate的配置文件中，hibernate.query.factory_class属性用来选择查询翻译器。 <br />
（1）选择Hibernate3.0的查询翻译器： <br />
hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory <br />
（2）选择Hibernate2.1的查询翻译器 <br />
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory <br />
为了使用3.0的批量更新和删除功能，只能选择（1）否则不能解释批量更新的语句，当使用的时候出现了不支持条件输入中文的情况。选择（2）可以支持输入中文，但没法解释批量更新语句了 <br />
在hibernate3中需要用到antlr，然而这个包在weblogic.jar中已经包含了antrl类库，就会产生一些类加载的错误，无法找到在war或者ear中的hibernate3.jar。 <br />
出现这个错误之后，antlr会调用System.exit()，这样weblogic就会中止服务。 <br />
解决方法: <br />
1.是在hibernate.properties文件中增加属性：hibernate.query.factory_class，属性的值是org.hibernate.hql.classic.ClassicQueryTranslatorFactory，这样就可以解决问题了。 <br />
但是部分功能会有问题，譬如 <br />
但本系在批量删除和更新会有问题,本系统不采用 <br />
2.将antlr-2.7.5H3.jar到Weblogic的pre_Classpath :用WinRar或Winzip打开C:\bea\weblogic81\server\lib\weblogic.jar 删除里面的antlr目录, 然后再antlr-2.7.5H3.jar放在weblogic.jar的同一目录(注:替换之后没做做过严格测试,尚不知是否有后遗症) <br />
3. 1、拷贝Hibernate3里带的包antlr-2.7.5H3.jar到%WL_HOME%\server\lib下 <br />
2、修改% mydomain% \ startWebLogic.cmd ： <br />
在set CLASSPATH之前加上下面一句： <br />
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.5H3.jar; <br />
在set CLASSPATH之后加上下面一句： <br />
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH% <br />
一切OK！ <br />
具体原因可参照此页：http://dev2dev.bea.com/blog/pmalani/archive/2005/07/configuring_web.html </p>
<p>&nbsp;</p>
我用antlr-2.7.6.jar可以，我用的hibernate3.2.3ga
<img src ="http://www.blogjava.net/chenlb/aggbug/150849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-10-07 16:37 <a href="http://www.blogjava.net/chenlb/archive/2007/10/07/150849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>weblogic8.1作为windows服务运行</title><link>http://www.blogjava.net/chenlb/archive/2007/10/06/150758.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Sat, 06 Oct 2007 15:02:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/10/06/150758.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/150758.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/10/06/150758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/150758.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/150758.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 实验室机房里安装的Weblogic 每次想打开网页看一下时都说连接不上，说页面打不开。最后得出原因是：过久了Web服务就关闭了，远程连下机器Web服务才开，每次都要这样远程链下机器，真烦，想到Windows服务方式运行不会这样。于是就找了下。今天终于找到了，^_^<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
D:\bea\user_projects\domains\mydomain目录下的installService.cmd文件中的:runAdmin下面的内容<br />
1.<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: #000000">set&nbsp;WLS_USER</span><span style="color: #000000">=</span><span style="color: #000000">weblogic<br />
set&nbsp;WLS_PW</span><span style="color: #000000">=</span></div>
&nbsp;<br />
改为<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">set&nbsp;WLS_USER</span><span style="color: #000000">=</span><span style="color: #000000">weblogic<br />
set&nbsp;WLS_PW</span><span style="color: #000000">=</span><span style="color: #000000">weblogic</span></div>
<br />
2.<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: #000000">set&nbsp;CMDLINE</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">%JAVA_VM%&nbsp;%MEM_ARGS%&nbsp;%JAVA_OPTIONS%&nbsp;-classpath&nbsp;\</span><span style="color: #000000">"</span><span style="color: #000000">%CLASSPATH%\</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;-Dweblogic.Name=%SERVER_NAME%&nbsp;-Dweblogic.management.username=%WLS_USER%&nbsp;-Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE%&nbsp;-Djava.security.policy=\</span><span style="color: #000000">"</span><span style="color: #000000">%WL_HOME%\server\lib\weblogic.policy\</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;weblogic.Server</span><span style="color: #000000">"</span><span style="color: #000000"><br />
</span></div>
<br />
改为<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">set&nbsp;CMDLINE</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">%JAVA_VM%&nbsp;%MEM_ARGS%&nbsp;%JAVA_OPTIONS%&nbsp;-classpath&nbsp;\</span><span style="color: #000000">"</span><span style="color: #000000">%CLASSPATH%\</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;-Dweblogic.Name=%SERVER_NAME%&nbsp;-Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE%&nbsp;-Djava.security.policy=</span><span style="color: #000000">"</span><span style="color: #000000">%WL_HOME%\server\lib\weblogic.policy</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;weblogic.Server</span><span style="color: #000000">"</span></div>
<br />
双击installService.cmd,就OK了<br />
注意防火墙要允许7001端口<br />
<br />
非常感谢<a href="http://blog.sina.com.cn/hanson2008">囫囵不吞枣<br />
</a>的博客 <a href="http://blog.sina.com.cn/s/blog_3ec64d78010005wu.html">http://blog.sina.com.cn/s/blog_3ec64d78010005wu.html</a><br />
<br />
^_^<br />
<br />
<img src ="http://www.blogjava.net/chenlb/aggbug/150758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-10-06 23:02 <a href="http://www.blogjava.net/chenlb/archive/2007/10/06/150758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>weblogic 8.1.4服务器挂起,出现StuckThreadMaxTime错误 </title><link>http://www.blogjava.net/chenlb/archive/2007/10/06/150739.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Sat, 06 Oct 2007 13:10:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/10/06/150739.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/150739.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/10/06/150739.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/150739.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/150739.html</trackback:ping><description><![CDATA[<p>前几天用spring+hibernate+struts写了个增/删/改/查的例子。调试期间问题就来了，当查询结果<font face="Arial">翻页好几次就没N久没有响应了。最后控制报错。网上查了，它说数据库连接（池）问题。</font></p>
<p>出现错误如下:</p>
<p><font face="Arial"><font face="Arial"><font face="Arial"><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">&lt;<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="9" year="2007">2007-9-30</st1:chsdate> </span><span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">下午</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">12</span><span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">时</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">03</span><span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">分</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">03</span><span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">秒</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"> CST&gt; &lt;Error&gt; &lt;WebLogicServer&gt; &lt;BEA-000337&gt; &lt;ExecuteThread: '13' for queue: 'weblogic.kernel.Default' has been busy for "901" seconds working on the request "Http Request: /admin/school.do", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.&gt;<br />
<br />
</p>
<p>先说下我配置</p>
<p>1.环境：</p>
<p>spring 2.0.6，hibernate 3.2.3，struts 1.2.9，oracle 10.2，weblogic 8.1.4</p>
<p>jdbc是ojdbc14.jar</p>
<p>2.连接池用DBCP</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="dataSource"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="org.apache.commons.dbcp.BasicDataSource"</span><span style="color: #ff0000">&nbsp;destroy-method</span><span style="color: #0000ff">="close"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="driverClassName"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="${jdbc.driverClassName}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="url"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="${jdbc.url}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="username"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="${jdbc.username}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="password"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="${jdbc.password}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
bean&gt;&nbsp;&nbsp;&nbsp;<br />
</span></div>
<br />
3.分页方法（参考springside的），此类继承HibernateDaoSupport<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Page&nbsp;listByPage(Class&nbsp;entityClass,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;pageNo,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;pageSize,&nbsp;List&nbsp;criterions,&nbsp;List&nbsp;orders)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Criteria&nbsp;criteria&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;createCriteria(entityClass,&nbsp;criterions);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;CriteriaImpl&nbsp;impl&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(CriteriaImpl)&nbsp;criteria;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;先把Projection和OrderBy条件取出来,清空两者来执行Count操作&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Projection&nbsp;projection&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;impl.getProjection();&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获取总记录数&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;totalCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;((Integer)&nbsp;criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(totalCount&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Page();&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">加排序&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(orders&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;criteria.addOrder((Order)&nbsp;orders.get(i));&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">原来的投影&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;criteria.setProjection(projection);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;startIndex&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Page.getStartOfPage(pageNo,&nbsp;pageSize);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">取得结果&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Page(startIndex,&nbsp;totalCount,&nbsp;pageSize,&nbsp;list);&nbsp;&nbsp;&nbsp;&nbsp;<br />
}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Criteria&nbsp;createCriteria(Class&nbsp;entityClass,&nbsp;List&nbsp;criterions)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Criteria&nbsp;criteria&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getSession().createCriteria(entityClass);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(criterions&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;criteria.add((Criterion)&nbsp;criterions.get(i));&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;criteria;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}&nbsp;&nbsp;&nbsp;<br />
</span></div>
<br />
<p><span>另外，没有用<font face="Arial">OpenSessionInViewFilter，struts与spring的整合：<font face="Arial">DelegatingRequestProcessor、action path与bean name同名。</font></font></span></p>
<p>&nbsp;</p>
<p><span><font face="Arial">翻页不过10次，服务器就没响应了，最后出现上面的错误的了。</font></span></p>
<p><span>刚用weblogic，也刚用ssh套餐。郁闷。<br />
<br />
前天解决了。<br />
</p>
<p>问题解决，问题的原因是数据库连接耗尽，我用HiberanteDaoSupport的getSession()方法取得Session后没有释放Session。</p>
<p>出问题的代码处（红色部分）：<br />
<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Criteria&nbsp;createCriteria(Class&nbsp;entityClass,&nbsp;List&nbsp;criterions)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Criteria&nbsp;criteria&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;<span style="color: red">getSession().</span>createCriteria(entityClass);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(criterions&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;criteria.add((Criterion)&nbsp;criterions.get(i));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;criteria;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}&nbsp;&nbsp;&nbsp;<br />
</span></div>
<br />
<p>用完Session释放后就没事了，调用HiberanteDaoSupport的<font face="Arial">releaseSession(session);方法后即可解决。</font></p>
<br />
<p>现在正确的代码：</p>
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Page&nbsp;listByPage(Class&nbsp;entityClass,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;pageNo,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;pageSize,&nbsp;List&nbsp;criterions,&nbsp;List&nbsp;orders)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getSession();&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建criteria&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Criteria&nbsp;criteria&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;session.createCriteria(entityClass);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">为criteria添加criterions&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;createCriteria(entityClass,&nbsp;criteria,&nbsp;criterions);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;CriteriaImpl&nbsp;impl&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(CriteriaImpl)&nbsp;criteria;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;先把Projection和OrderBy条件取出来,清空两者来执行Count操作&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Projection&nbsp;projection&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;impl.getProjection();&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获取总记录数&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;totalCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;((Integer)&nbsp;criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(totalCount&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Page();&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">加排序&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(orders&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;criteria.addOrder((Order)&nbsp;orders.get(i));&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">原来的投影&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;criteria.setProjection(projection);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;startIndex&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Page.getStartOfPage(pageNo,&nbsp;pageSize);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">取得结果&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">释放hiberante资源,一定要释放,要不然就数据库连接耗尽.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;releaseSession(session);&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Page(startIndex,&nbsp;totalCount,&nbsp;pageSize,&nbsp;list);&nbsp;&nbsp;&nbsp;&nbsp;<br />
}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Criteria&nbsp;createCriteria(Class&nbsp;entityClass,&nbsp;Criteria&nbsp;criteria,&nbsp;List&nbsp;criterions)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(criterions&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;criteria.add((Criterion)&nbsp;criterions.get(i));&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;criteria;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}&nbsp;&nbsp;&nbsp;<br />
</span></div>
<br />
<br />
^_^</span></span></font></font></font>
<img src ="http://www.blogjava.net/chenlb/aggbug/150739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-10-06 21:10 <a href="http://www.blogjava.net/chenlb/archive/2007/10/06/150739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Weblogic 中部署 Web 应用程序</title><link>http://www.blogjava.net/chenlb/archive/2007/09/22/147449.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Sat, 22 Sep 2007 10:48:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/09/22/147449.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/147449.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/09/22/147449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/147449.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/147449.html</trackback:ping><description><![CDATA[<br />
1、安装好weblogic8.1<br />
2、利用Configuration Wizard配置Domain和server，按照缺省即可<br />
<br />
如：<br />
第二部后，我机上结果：有了D:\bea\user_projects\domains\mydomain目录其中mydomain是向导中自己写的。然后把web应用程序放到D:\bea\user_projects\domains\mydomain\applications目录中，applications相当于Tomcat中的webapps目录。<br />
<br />
WEB-INF目录下可以不用weblogic.xml文件，文件内容如下：<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" twffan="done"><span style="color: #0000ff" twffan="done">&lt;?</span><span style="color: #ff00ff" twffan="done">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff" twffan="done">?&gt;</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">&lt;!</span><span style="color: #ff00ff" twffan="done">DOCTYPE&nbsp;weblogic-web-app&nbsp;PUBLIC&nbsp;"-//BEA&nbsp;Systems,&nbsp;Inc.//DTD&nbsp;Web&nbsp;Application&nbsp;8.1//EN"&nbsp;"http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd"</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">weblogic-web-app</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">context-root</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">/WebModule1</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">context-root</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">weblogic-web-app</span><span style="color: #0000ff" twffan="done">&gt;</span></div>
<br />
如果有&lt;context-root&gt;/WebModule1&lt;/context-root&gt;，WebModule1才是web应用的根地址，访问地址就成了这样：http://localhost:7001/WebModule1/index.jsp<br />
<br />
如果没有&lt;context-root&gt;/WebModule1&lt;/context-root&gt;或没有weblogic.xml文件，访问地址为：http://localhost:7001/blank/index.jsp<br />
其中blank是applications下的Web应用程序的根目录。
<img src ="http://www.blogjava.net/chenlb/aggbug/147449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-09-22 18:48 <a href="http://www.blogjava.net/chenlb/archive/2007/09/22/147449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp 提交表单中文问题解决</title><link>http://www.blogjava.net/chenlb/archive/2007/09/09/143726.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Sun, 09 Sep 2007 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/09/09/143726.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/143726.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/09/09/143726.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/143726.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/143726.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 用过虑器，但只对post有效，get方式请看。<a href="http://www.blogjava.net/chenlb/archive/2007/07/17/130922.html">http://www.blogjava.net/chenlb/archive/2007/07/17/130922.html</a><br />
<br />
1.用tomcat里面的例子(在webapps\servlets-examples\WEB-INF\classes\里把filters目录放到你的classer\下,其实只要SetCharacterEncodingFilter就可以了,在web.xml里加 <br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee" twffan="done"><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">filter</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">filter-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">Set&nbsp;Character&nbsp;Encoding</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">filter-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">filter-class</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">filters.SetCharacterEncodingFilter</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">filter-class</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">init-param</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">param-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">encoding</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">param-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">param-value</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">utf8</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">param-value</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">init-param</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">filter</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">filter-mapping</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">filter-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">Set&nbsp;Character&nbsp;Encoding</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">filter-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">url-pattern</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">/*</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">url-pattern</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">filter-mapping</span><span style="color: #0000ff" twffan="done">&gt;</span></div>
<br />
<br />
2.如果用spring，用spring提供的过虑器，同样在web.xml里加 <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" twffan="done"><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">filter</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">filter-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">Set&nbsp;Character&nbsp;Encoding</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">filter-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">filter-class</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">org.springframework.web.filter.CharacterEncodingFilter</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">filter-class</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">init-param</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">param-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">encoding</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">param-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">param-value</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">utf8</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">param-value</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">init-param</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;<br />
</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">filter</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;<br />
&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">filter-mapping</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">filter-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">Set&nbsp;Character&nbsp;Encoding</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">filter-name</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;</span><span style="color: #800000" twffan="done">url-pattern</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">/*</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">url-pattern</span><span style="color: #0000ff" twffan="done">&gt;</span><span style="color: #000000" twffan="done">&nbsp;&nbsp;<br />
&nbsp;</span><span style="color: #0000ff" twffan="done">&lt;/</span><span style="color: #800000" twffan="done">filter-mapping</span><span style="color: #0000ff" twffan="done">&gt;</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/chenlb/aggbug/143726.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-09-09 09:47 <a href="http://www.blogjava.net/chenlb/archive/2007/09/09/143726.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]jsp 实现 word, excel</title><link>http://www.blogjava.net/chenlb/archive/2007/08/22/138588.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Wed, 22 Aug 2007 05:15:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/08/22/138588.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/138588.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/08/22/138588.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/138588.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/138588.html</trackback:ping><description><![CDATA[<p>这里使用一个小技巧，就是先将其转换为可编辑的JSP文件，然后再像操作其它的JSP页面一样操作，就这么简单。</p>
<p>因为ms word和excel的文档都支持html文本格式，因此可以先用word或excel做好模版，另存为web页，然后将该html改成jsp，将数据部分动态填入即可，不用很辛苦的调整格式 。</p>
<p>word页面只要在jsp头设置如下指令： <br>&lt;%@page contentType="application/msword;charset=gb2312" %&gt; </p>
<p>excel如下： <br>&lt;%@page contentType="application/vnd.ms-excel;charset=gb2312" %&gt; </p>
&nbsp; 使用这种方式，就不用使用其它的复杂技术，并且可以达到很好的效果，所谓走路走捷径，呵呵，例子就不给了。<br><br><a href="http://blog.csdn.net/fenglibing/archive/2007/06/27/1668809.aspx">http://blog.csdn.net/fenglibing/archive/2007/06/27/1668809.aspx</a>
<img src ="http://www.blogjava.net/chenlb/aggbug/138588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-08-22 13:15 <a href="http://www.blogjava.net/chenlb/archive/2007/08/22/138588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>itest生成pdf中文为空白</title><link>http://www.blogjava.net/chenlb/archive/2007/03/21/105355.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Wed, 21 Mar 2007 11:52:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/03/21/105355.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/105355.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/03/21/105355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/105355.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/105355.html</trackback:ping><description><![CDATA[
		<p>要下载iTextAsian.jar<br /><br />地址: <a href="http://prdownloads.sourceforge.net/itext/iTextAsian.jar?download">http://<span class="a" twffan="done"><font color="#008000" size="2">prdownloads.sourceforge.net/<wbr>itext/<b>iTextAsian</b>.jar?download</wbr></font></span></a><br /><br />import com.lowagie.text.Font;<br />import com.lowagie.text.pdf.BaseFont;<br /><br /><br />BaseFont bfChinese = BaseFont.createFont("STSong-Light",  "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);<br />Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);<br /><br />加入document：<br /><br />Paragraph chunk = new Paragraph("中文", FontChinese);<br />document.add(chunk);<br /></p>
<img src ="http://www.blogjava.net/chenlb/aggbug/105355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-03-21 19:52 <a href="http://www.blogjava.net/chenlb/archive/2007/03/21/105355.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poi会中文乱码,Jexcelapi不会</title><link>http://www.blogjava.net/chenlb/archive/2007/03/21/105346.html</link><dc:creator>流浪汗</dc:creator><author>流浪汗</author><pubDate>Wed, 21 Mar 2007 11:06:00 GMT</pubDate><guid>http://www.blogjava.net/chenlb/archive/2007/03/21/105346.html</guid><wfw:comment>http://www.blogjava.net/chenlb/comments/105346.html</wfw:comment><comments>http://www.blogjava.net/chenlb/archive/2007/03/21/105346.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/chenlb/comments/commentRss/105346.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenlb/services/trackbacks/105346.html</trackback:ping><description><![CDATA[
		<p>目前比较流行的生成Excel文件的有poi和Jexcelapi<br /><br />poi加中文有问题<br /><br />必需对每一个Cell设:</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">cell.setEncoding(HSSFCell.ENCODING_UTF_16);</span>
		</div>
		<br />才不会中文乱码.没有找到更好的方法一次性设置所有Cell的字符属性<br /><br /><br />用Jexcelapi试下发现不会出现中文问题,是因为它是韩国人写的吧,以多字节字符为根点<br /><br />还是喜欢用Jexcelapi<br /><br />下载: <a href="http://sourceforge.net/project/showfiles.php?group_id=79926">http://sourceforge.net/project/showfiles.php?group_id=79926</a><br /><br />:)<img src ="http://www.blogjava.net/chenlb/aggbug/105346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenlb/" target="_blank">流浪汗</a> 2007-03-21 19:06 <a href="http://www.blogjava.net/chenlb/archive/2007/03/21/105346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>