﻿<?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-饶荣庆 -- 3G视线-随笔分类-j2ee</title><link>http://www.blogjava.net/gooogle/category/20962.html</link><description> &lt;a href="http://javaeye.5d6d.com"&gt;3G视线论坛&lt;/a&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 18 Sep 2007 03:02:53 GMT</lastBuildDate><pubDate>Tue, 18 Sep 2007 03:02:53 GMT</pubDate><ttl>60</ttl><item><title>JDK 6.0 API 中文版 发布了</title><link>http://www.blogjava.net/gooogle/archive/2007/09/18/146097.html</link><dc:creator>爬虫工作室</dc:creator><author>爬虫工作室</author><pubDate>Tue, 18 Sep 2007 02:56:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/09/18/146097.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/146097.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/09/18/146097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/146097.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/146097.html</trackback:ping><description><![CDATA[<h2>JDK 6.0 API 中文版</h2>
<div id="postmessage_179" class="t_msgfont"><a href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html_zh_CN.zip" target="_blank" class="l2">HTML&nbsp;ZIP打包<span href="http://www.3geye.net/bbs/tag.php?name=%CF%C2%D4%D8" onclick="tagshow(event)" class="t_tag">下载</span></a><br />
&#187;&nbsp;<a href="http://gceclub.sun.com.cn/Java_Docs/jdk6/JDK_API_1_6_zh_CN.CHM" target="_blank" class="l2">CHM&nbsp;格式下载</a><br />
&#187;&nbsp;<a href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/index.html" target="_blank" class="l2">在线参考</a><br />
&#187;&nbsp;<a href="http://gceclub.sun.com.cn/chinese_java_docs.html" target="_blank" class="l2">JDK&nbsp;5.0&nbsp;中文<span href="http://www.3geye.net/bbs/tag.php?name=API" onclick="tagshow(event)" class="t_tag">API</span></a><br />
<br />
来自:http://developers.sun.com.cn/home/sdnchina/home</div><img src ="http://www.blogjava.net/gooogle/aggbug/146097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">爬虫工作室</a> 2007-09-18 10:56 <a href="http://www.blogjava.net/gooogle/archive/2007/09/18/146097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于网站设计的一点点讨论</title><link>http://www.blogjava.net/gooogle/archive/2007/05/19/118610.html</link><dc:creator>爬虫工作室</dc:creator><author>爬虫工作室</author><pubDate>Sat, 19 May 2007 15:48:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/05/19/118610.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/118610.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/05/19/118610.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/118610.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/118610.html</trackback:ping><description><![CDATA[最近公司自己运营一个网站。而这个网站的主要设计者是我。而我也部分参与需求的调用，分析与确立。在这方面我经验很少，设计的过程中不仅是我个人在理念上
出了问题，重要的是不断的跟team成员发生争论，导致心情也不爽，不过在这过程中也学到不少，长大了一点。这次讨论，我们不谈项目管理，不谈沟通，不谈
需求，只谈，怎么样才可以设计一个好网站。<br>
<br>
首先明确了需要，这个我想是设计好一个项目的关键。<br>
比如我们假像需求是这样子的，我们再来谈谈，面对这样的需求，我们该怎么做。<br>
需求如下：<br>
1。会员问题，--- 要求网站的一些功能只提供给会员操作，
比如当用户浏览一个URL的时候，是需要会员权限的，这样就产生了下面的需求，1。要求有自动跳转功能，不管是用户登录了，或者是注册一个新用户，这些操
作完成后都需要跳转到前一次的操作。甚至是跟前面的操作。这个功能到是容易实现，只需要记录用户前面几次操作的url，把他们入栈就ok了，然后登录或者
注册以后就出栈<br>
2。资源保存问题， ----  比如项目组，要求，用户上传，或者是后台上传的资源，必须保证其他项目安全的，容易操作的访问到。<br>
比如，管理人员在后台上传了一个图片。这个图片对于web来说可以访问，对于wap来说，访问起来也是很轻松的-- 不用在资源的路径加上网站的路径名。还有其他的等等。<br>
3。数据库的设计， --- 自己运营的网站，对于数据库的安全性来说无疑是最高的。
我们现在采用的是mysql，现在用的是tomcat+spring+hibernate，这样就会遇到一个困难，比如设计金钱的数据，如果纯粹的保存到
mysql，这样别人侵入到你web服务器的时候就可以获取你spring配置文件里面的数据密码等，这样会造成数据泄露，导致重大损失，这样导致了就是
管理这些数据的安全性变的很重要，不应该直接暴露这些数据给程序，而是应该通过一些手段，比如只暴露存储过程，或者是暴露一些数据访问api给程序调用，
这做虽然安全，但设计起来却是比较棘手。而且设计管理那些数据的程序变的复杂，不能直接在tomcat访问。<br>
<br>
4。就是相对而已，当你的程序稳定以后，我们就不应该再往这个项目加上新功能，而是另外起一个项目，总之就是乱啊。<br>
<br>
<br>
写到这里，都不知道自己在写些什么了。哈<br>
<br>
写这篇文章的时候，记录在blog上出了问题，后来那篇blog被我删除了，想不到在这里可以找到。真是不错，同时放到论坛跟blog好像是双保险
<br><img src ="http://www.blogjava.net/gooogle/aggbug/118610.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">爬虫工作室</a> 2007-05-19 23:48 <a href="http://www.blogjava.net/gooogle/archive/2007/05/19/118610.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>给上传图片加个图片水印，文字水印的功能</title><link>http://www.blogjava.net/gooogle/archive/2007/05/16/117839.html</link><dc:creator>爬虫工作室</dc:creator><author>爬虫工作室</author><pubDate>Wed, 16 May 2007 06:47:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/05/16/117839.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/117839.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/05/16/117839.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/117839.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/117839.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 关键字:  企业应用 &nbsp;       &nbsp;&nbsp;&nbsp;&nbsp;        &nbsp;&nbsp;&nbsp;&nbsp; 今天客户说，他想把他上传的图片加上个水印的功能，以防止别人盗用他的图片。他认为他的图片资料很重要。所以。。。 好，客户有需求，我们就满足他，以前我也比较少写操作图片的api，所以对图片加水印的功能也一直没接触，不过对于现在网络来说。这...&nbsp;&nbsp;<a href='http://www.blogjava.net/gooogle/archive/2007/05/16/117839.html'>阅读全文</a><img src ="http://www.blogjava.net/gooogle/aggbug/117839.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">爬虫工作室</a> 2007-05-16 14:47 <a href="http://www.blogjava.net/gooogle/archive/2007/05/16/117839.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于新闻发布系统，侧栏，与底栏的设计构想</title><link>http://www.blogjava.net/gooogle/archive/2007/04/30/114700.html</link><dc:creator>爬虫工作室</dc:creator><author>爬虫工作室</author><pubDate>Mon, 30 Apr 2007 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/04/30/114700.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/114700.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/04/30/114700.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/114700.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/114700.html</trackback:ping><description><![CDATA[大家先来看看163的新闻是怎么设计的<br><br><img alt="" src="http://www.blogjava.net/images/blogjava_net/gooogle/blog/163.jpg" height="451" width="800"><br><br><img alt="" src="http://www.blogjava.net/images/blogjava_net/gooogle/blog/1631.jpg" height="638" width="337"><br><br>这几天也忙着开发这样的系统。曾经想过，直接生成一个全部静态的html。后来发现，这样做不可行。<br>原因：<br>1.根据上面的图片，我们可以知道一个模块应该尽量保持简单独立。相对于侧栏与底栏而言，跟新闻内容可以说是靠不上边的，或许也是靠的很少。<br>2.相对新闻内容来说。侧栏，底栏目相对来说是动态的，也就是需要后台去处理。而前台展示的将是动态展示，这样意味着，前台文件不能全部包含静态html。<br>3.相对开发而言。应该尽量保持简单，也就是说，你发不新闻呢。只发布新闻内容就可以了。其他的东西则有其他模块来做。这样做的好吃是，修改，重构起来将是件很愉快的事情。<br><br>经过思考跟同事的意见。决定采用js的形式来做。js负责输出那些html。而js的生成则由后台去处理。这样大家的职责就明显多了。<br>至于前台展示吗。那也简单很多，直接引用这个js就ok。<br><span style="color: red;">就如Ioc所说。你不要来找我。让我去找你就行了。<br><br>大家也可以畅谈自己在开发这样系统的想法。<br></span><br>&nbsp; <script type="text/javascript"><!--google_ad_client = "pub-9660229364187431";google_ad_width = 468;google_ad_height = 60;google_ad_format = "468x60_as";google_ad_type = "text";//2007-04-29: blogjava bloggoogle_ad_channel = "3226979720";//--></script><script type="text/javascript"&#160; src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><img src ="http://www.blogjava.net/gooogle/aggbug/114700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">爬虫工作室</a> 2007-04-30 09:16 <a href="http://www.blogjava.net/gooogle/archive/2007/04/30/114700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决HIbernate分页问题获取表总行数的小Bug</title><link>http://www.blogjava.net/gooogle/archive/2007/04/30/114688.html</link><dc:creator>爬虫工作室</dc:creator><author>爬虫工作室</author><pubDate>Mon, 30 Apr 2007 00:46:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/04/30/114688.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/114688.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/04/30/114688.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/114688.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/114688.html</trackback:ping><description><![CDATA[今天上午回来设计了一点新闻发布系统周边的功能，并实现了对新闻进行重新索引的功能。<br>但同时在列出相关新闻的时候遇到了麻烦。就是原本运行好好的分页查询代码，居然有个小虫子跑出来，<br>很是令人不爽。说来也惭愧，Hibernate也用了那么长时间了。可对底层API却很不属性。<br>查了下网络，把自己的一知半解说出来。<br><br>bug起源。<br>看看代码：<br>
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">return&nbsp;(PageSupport)&nbsp;getHibernateTemplate().execute(<br><img onclick="this.style.display='none'; document.getelementbyid('_81_731_open_text').style.display="'none';" document.getelementbyid('_81_731_closed_image').style.display="'inline';" document.getelementbyid('_81_731_closed_text').style.display="'inline';"" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_81_731_Open_Image" alt="" align="top"><img onclick="this.style.display='none'; document.getelementbyid('_81_731_closed_text').style.display="'none';" document.getelementbyid('_81_731_open_image').style.display="'inline';" document.getelementbyid('_81_731_open_text').style.display="'inline';"" style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_81_731_Closed_Image" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;HibernateCallback()&nbsp;...{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Object&nbsp;doInHibernate(Session&nbsp;session)<br><img onclick="this.style.display='none'; document.getelementbyid('_166_725_open_text').style.display="'none';" document.getelementbyid('_166_725_closed_image').style.display="'inline';" document.getelementbyid('_166_725_closed_text').style.display="'inline';"" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_166_725_Open_Image" alt="" align="top"><img onclick="this.style.display='none'; document.getelementbyid('_166_725_closed_text').style.display="'none';" document.getelementbyid('_166_725_open_image').style.display="'inline';" document.getelementbyid('_166_725_open_text').style.display="'inline';"" style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_166_725_Closed_Image" alt="" align="top">&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;throws&nbsp;HibernateException&nbsp;...{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Criteria&nbsp;criteria&nbsp;=&nbsp;detachedCriteria<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getExecutableCriteria(session);<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug("SQL:&nbsp;"&nbsp;+&nbsp;Projections.rowCount());<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&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;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//执行查询<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;totalCount&nbsp;=&nbsp;((Integer)&nbsp;criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top"><br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;items&nbsp;=&nbsp;criteria.setFirstResult(startIndex)<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.setMaxResults(pageSize).list();<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PageSupport&nbsp;ps&nbsp;=&nbsp;new&nbsp;PageSupport(items,&nbsp;totalCount,<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pageSize,&nbsp;startIndex);<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ps;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;true);</div>
</div>
<br>相信大家对上面的代码也很熟悉了，这个代码第一次运行的时候没问题。<br>等你去拿第2页的时候，就提示说出现NullPointer。 发现是((Integer)&nbsp;criteria.setProjection(Projections.rowCount()).uniqueResult())为Null， 也就是根本就拿不到表总数。<br>为此我思考了好一阵子。<br>后来看了别人的代码才焕然大悟。<br>看第2个代码：<br>
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">return&nbsp;(PageSupport)&nbsp;getHibernateTemplate().execute(<br><img onclick="this.style.display='none'; document.getelementbyid('_81_1112_open_text').style.display="'none';" document.getelementbyid('_81_1112_closed_image').style.display="'inline';" document.getelementbyid('_81_1112_closed_text').style.display="'inline';"" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" id="_81_1112_Open_Image" alt="" align="top"><img onclick="this.style.display='none'; document.getelementbyid('_81_1112_closed_text').style.display="'none';" document.getelementbyid('_81_1112_open_image').style.display="'inline';" document.getelementbyid('_81_1112_open_text').style.display="'inline';"" style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" id="_81_1112_Closed_Image" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;HibernateCallback()&nbsp;...{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Object&nbsp;doInHibernate(Session&nbsp;session)<br><img onclick="this.style.display='none'; document.getelementbyid('_166_1106_open_text').style.display="'none';" document.getelementbyid('_166_1106_closed_image').style.display="'inline';" document.getelementbyid('_166_1106_closed_text').style.display="'inline';"" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_166_1106_Open_Image" alt="" align="top"><img onclick="this.style.display='none'; document.getelementbyid('_166_1106_closed_text').style.display="'none';" document.getelementbyid('_166_1106_open_image').style.display="'inline';" document.getelementbyid('_166_1106_open_text').style.display="'inline';"" style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_166_1106_Closed_Image" alt="" align="top">&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;throws&nbsp;HibernateException&nbsp;...{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Criteria&nbsp;criteria&nbsp;=&nbsp;detachedCriteria<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getExecutableCriteria(session);<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CriteriaImpl&nbsp;impl&nbsp;=&nbsp;(CriteriaImpl)&nbsp;criteria;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top"><br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//先把Projection和OrderBy条件取出来,清空两者来执行Count操作<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Projection&nbsp;projection&nbsp;=&nbsp;impl.getProjection();<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug("SQL:&nbsp;"&nbsp;+&nbsp;Projections.rowCount());<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&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;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//执行查询<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;totalCount&nbsp;=&nbsp;((Integer)&nbsp;criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top"><br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//将之前的Projection和OrderBy条件重新设回去<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;criteria.setProjection(projection);<br><img onclick="this.style.display='none'; document.getelementbyid('_770_866_open_text').style.display="'none';" document.getelementbyid('_770_866_closed_image').style.display="'inline';" document.getelementbyid('_770_866_closed_text').style.display="'inline';"" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" id="_770_866_Open_Image" alt="" align="top"><img onclick="this.style.display='none'; document.getelementbyid('_770_866_closed_text').style.display="'none';" document.getelementbyid('_770_866_open_image').style.display="'inline';" document.getelementbyid('_770_866_open_text').style.display="'inline';"" style="display: none;" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" id="_770_866_Closed_Image" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(projection&nbsp;==&nbsp;null)&nbsp;...{<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&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;criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;items&nbsp;=&nbsp;criteria.setFirstResult(startIndex)<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.setMaxResults(pageSize).list();<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PageSupport&nbsp;ps&nbsp;=&nbsp;new&nbsp;PageSupport(items,&nbsp;totalCount,<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pageSize,&nbsp;startIndex);<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ps;<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" _fcksavedurl="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;true);</div>
</div>
<br><script type="text/javascript"><!--google_ad_client = "pub-9660229364187431";google_ad_width = 468;google_ad_height = 15;google_ad_format = "468x15_0ads_al_s";//2007-04-29: blogjava bloggoogle_ad_channel = "3226979720";//--></script><script type="text/javascript"&#160; src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><img src ="http://www.blogjava.net/gooogle/aggbug/114688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">爬虫工作室</a> 2007-04-30 08:46 <a href="http://www.blogjava.net/gooogle/archive/2007/04/30/114688.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 角色的转变   </title><link>http://www.blogjava.net/gooogle/archive/2007/04/12/110067.html</link><dc:creator>爬虫工作室</dc:creator><author>爬虫工作室</author><pubDate>Thu, 12 Apr 2007 01:22:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/04/12/110067.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/110067.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/04/12/110067.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/110067.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/110067.html</trackback:ping><description><![CDATA[我2005年出来工作到现在也快两年了，时间过的飞快。想来在这两年中也没做过很自豪的东西，就是东做做，西扯扯。感觉对整个架构的设计没什么了解。不过
现在机会来了。公司决定要做一个比较大的平台，涉及到web，wap，kjava，pc客户端的东西，开始公司成立小组的时候，自己很明确自己的角色，开
始我感觉公司就是让你做编码，把这些功能做出来，但，实际却不是这样，前几天这个项目小组去喝早茶，公司领导绕了很多弯子，最后才明确，要我来定需求，并
定义整个平台的架构出来，说这样很容易让一些人加入进来。哈哈，以前做编码习惯了，反正来了需求就帮他实现，其他都不管。一开始角色还专变不过来，跟领导
沟通起来出了很多问题。<br>
<br>
说实话把这么大的担子给我，我压力大啊。我相信在这个论坛的很多牛人都有曾这样的经历，可否给我一些建议啊。<br>
<br>
从一个编码设计到一个架构设计的转变需要经过些什么历练。高手们，砸砖吧。^_^
<br><img src ="http://www.blogjava.net/gooogle/aggbug/110067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">爬虫工作室</a> 2007-04-12 09:22 <a href="http://www.blogjava.net/gooogle/archive/2007/04/12/110067.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自动注册gmail邮箱构想</title><link>http://www.blogjava.net/gooogle/archive/2007/04/04/108408.html</link><dc:creator>爬虫工作室</dc:creator><author>爬虫工作室</author><pubDate>Wed, 04 Apr 2007 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/04/04/108408.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/108408.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/04/04/108408.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/108408.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/108408.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;1.关于自动注册原理与实践。1.基于浏览器请求，-- 程序员写出一个程序模拟一条自动注册url，把注册所必须的参数都附在请求后面2.基于HttpClient请求。实现过程比较简单，可以通过穿过ssl进行请求自动注册首先要解决的问题：1.关于注册验证吗的破解。&nbsp;1.市面上一个简单图片验证吗的开发已经不是什么难事了，对于程序生产的图片，破解起来是比较困难的，&...&nbsp;&nbsp;<a href='http://www.blogjava.net/gooogle/archive/2007/04/04/108408.html'>阅读全文</a><img src ="http://www.blogjava.net/gooogle/aggbug/108408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">爬虫工作室</a> 2007-04-04 12:42 <a href="http://www.blogjava.net/gooogle/archive/2007/04/04/108408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>彻底理解spring的定制任务（scheduling）</title><link>http://www.blogjava.net/gooogle/archive/2007/04/01/107758.html</link><dc:creator>爬虫工作室</dc:creator><author>爬虫工作室</author><pubDate>Sun, 01 Apr 2007 07:04:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/04/01/107758.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/107758.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/04/01/107758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/107758.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/107758.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 关键字: 企业应用                   		   相信做软件的朋友都有这样的经历，我的软件是不是少了点什么东西呢？比如定时任务啊，		  就拿新闻发布系统来说，如果新闻的数据更新太快，势必涉及一个问题，这些新闻不能由人工的去发布，应该让系统自己发布，这就需要用到定时定制任务了，以前定制任务无非就是设计一个Thread，并且设置运行时间片，让它到了那个时间执行...&nbsp;&nbsp;<a href='http://www.blogjava.net/gooogle/archive/2007/04/01/107758.html'>阅读全文</a><img src ="http://www.blogjava.net/gooogle/aggbug/107758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">爬虫工作室</a> 2007-04-01 15:04 <a href="http://www.blogjava.net/gooogle/archive/2007/04/01/107758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 一个读取Gmail邮件的简单程序</title><link>http://www.blogjava.net/gooogle/archive/2007/03/30/107474.html</link><dc:creator>爬虫工作室</dc:creator><author>爬虫工作室</author><pubDate>Fri, 30 Mar 2007 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/03/30/107474.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/107474.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/03/30/107474.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/107474.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/107474.html</trackback:ping><description><![CDATA[<div style="margin-left: 15px; margin-top: 5px;">
				<b>关键字:</b> 企业应用  
              
   </div>
  
  
  
      
    
   
       
   
       
               兄弟我理论性的东西说不出来，不过实际运用咱还是有办法的<br />
前几天由于工作需要，想了解下关于支持ssl的邮件收发，按照以前普通的做法是行不通的，所以就上网东找找，西瞧瞧。发现了个好东西，并且实验成功。 <br />
      那天本想来javaeye看看有没有人有相关的经验，找了老半天，连个屁也没闻到，我就说我们，我们这些做程序员的不能老是吹吹水，谈谈道理，我们得拿出点实际的东西出来，就想fins一样，我就很佩服他的贡献精神。<br />
      不说废话了，看看源代码，大家有空也可以实验下。还真有用<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> org.job.six;<br /><br /> <br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.io.UnsupportedEncodingException;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.security.Security;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.util.Properties;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.FetchProfile;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.Folder;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.Message;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.Session;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.Store;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.URLName;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.internet.InternetAddress;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.internet.MimeUtility;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> org.job.util.Logger;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> org.job.util.mail.ApplicationContext;<br /><br /></span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br /> * 用于收取Gmail邮件<br /> * <br /> * </span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);"> wuhua<br /> </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> GmailFetch {<br />    </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> Logger logger </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> Logger.getLogger(GmailFetch.</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">);<br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> main(String argv[]) </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> Exception {<br />        logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">开始读取邮件<img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" /></span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        Security.addProvider(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> com.sun.net.ssl.internal.ssl.Provider());<br />        </span><span style="color: rgb(0, 0, 255);">final</span><span style="color: rgb(0, 0, 0);"> String SSL_FACTORY </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">javax.net.ssl.SSLSocketFactory</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br /><br />        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> Get a Properties object</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">        Properties props </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> System.getProperties();<br />        props.setProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">mail.pop3.socketFactory.class</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, SSL_FACTORY);<br />        props.setProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">mail.pop3.socketFactory.fallback</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">false</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        props.setProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">mail.pop3.port</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">995</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        props.setProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">mail.pop3.socketFactory.port</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">995</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /><br />        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 以下步骤跟一般的JavaMail操作相同</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">        Session session </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> Session.getDefaultInstance(props, </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">);<br /><br />        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 请将红色部分对应替换成你的邮箱帐号和密码</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">        URLName urln </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> URLName(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">pop3</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, ApplicationContext.POP3, </span><span style="color: rgb(0, 0, 0);">995</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">,<br />                ApplicationContext.GMAIL_MAIL_NAME,<br />                ApplicationContext.GMAIL_MAIL_PASSWORD);<br />        Store store </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> session.getStore(urln);<br />        Folder inbox </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />        </span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);"> {<br />            store.connect();<br />            inbox </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> store.getFolder(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">INBOX</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />            inbox.open(Folder.READ_ONLY);<br />            FetchProfile profile </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> FetchProfile();<br />            profile.add(FetchProfile.Item.ENVELOPE);<br />            Message[] messages </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> inbox.getMessages();<br />            inbox.fetch(messages, profile);<br />            logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">收件箱的邮件数：</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> messages.length);<br />            </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">; i </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> messages.length; i</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">) {<br />                </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 邮件发送者</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">                String from </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> decodeText(messages[i].getFrom()[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">].toString());<br />                InternetAddress ia </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> InternetAddress(from);<br />                logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">发信人:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> ia.getPersonal() </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"><br />                        </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> ia.getAddress() </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">);<br />                </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 邮件标题</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">                logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">主题:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> messages[i].getSubject());<br />                </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 邮件大小</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">                logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">邮件大小:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> messages[i].getSize());<br />                </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 邮件发送时间</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">                logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">发送日期:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> messages[i].getSentDate());<br />            }<br />        } </span><span style="color: rgb(0, 0, 255);">finally</span><span style="color: rgb(0, 0, 0);"> {<br />            </span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);"> {<br />                inbox.close(</span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">);<br />            } </span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);"> (Exception e) {<br />            }<br />            </span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);"> {<br />                store.close();<br />            } </span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);"> (Exception e) {<br />            }<br />        }<br />        <br />        logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">读取邮件完毕<img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" /></span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">protected</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> String decodeText(String text)<br />            </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> UnsupportedEncodingException {<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (text </span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">)<br />            </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (text.startsWith(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">=?GB</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">) </span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);"> text.startsWith(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">=?gb</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">))<br />            text </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> MimeUtility.decodeText(text);<br />        </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"><br />            text </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> String(text.getBytes(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ISO8859_1</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> text;<br />    }<br /><br />}<br /></span></div><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> org.job.six;<br /><br /> <br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.io.UnsupportedEncodingException;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.security.Security;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.util.Properties;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.FetchProfile;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.Folder;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.Message;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.Session;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.Store;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.URLName;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.internet.InternetAddress;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> javax.mail.internet.MimeUtility;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> org.job.util.Logger;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> org.job.util.mail.ApplicationContext;<br /><br /></span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br /> * 用于收取Gmail邮件<br /> * <br /> * </span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);"> wuhua<br /> </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> GmailFetch {<br />    </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> Logger logger </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> Logger.getLogger(GmailFetch.</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">);<br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> main(String argv[]) </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> Exception {<br />        logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">开始读取邮件<img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" /></span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        Security.addProvider(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> com.sun.net.ssl.internal.ssl.Provider());<br />        </span><span style="color: rgb(0, 0, 255);">final</span><span style="color: rgb(0, 0, 0);"> String SSL_FACTORY </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">javax.net.ssl.SSLSocketFactory</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;<br /><br />        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> Get a Properties object</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">        Properties props </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> System.getProperties();<br />        props.setProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">mail.pop3.socketFactory.class</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, SSL_FACTORY);<br />        props.setProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">mail.pop3.socketFactory.fallback</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">false</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        props.setProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">mail.pop3.port</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">995</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        props.setProperty(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">mail.pop3.socketFactory.port</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">995</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /><br />        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 以下步骤跟一般的JavaMail操作相同</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">        Session session </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> Session.getDefaultInstance(props, </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">);<br /><br />        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 请将红色部分对应替换成你的邮箱帐号和密码</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">        URLName urln </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> URLName(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">pop3</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, ApplicationContext.POP3, </span><span style="color: rgb(0, 0, 0);">995</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">,<br />                ApplicationContext.GMAIL_MAIL_NAME,<br />                ApplicationContext.GMAIL_MAIL_PASSWORD);<br />        Store store </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> session.getStore(urln);<br />        Folder inbox </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />        </span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);"> {<br />            store.connect();<br />            inbox </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> store.getFolder(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">INBOX</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />            inbox.open(Folder.READ_ONLY);<br />            FetchProfile profile </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> FetchProfile();<br />            profile.add(FetchProfile.Item.ENVELOPE);<br />            Message[] messages </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> inbox.getMessages();<br />            inbox.fetch(messages, profile);<br />            logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">收件箱的邮件数：</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> messages.length);<br />            </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">; i </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> messages.length; i</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">) {<br />                </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 邮件发送者</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">                String from </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> decodeText(messages[i].getFrom()[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">].toString());<br />                InternetAddress ia </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> InternetAddress(from);<br />                logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">发信人:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> ia.getPersonal() </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"><br />                        </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> ia.getAddress() </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">);<br />                </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 邮件标题</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">                logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">主题:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> messages[i].getSubject());<br />                </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 邮件大小</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">                logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">邮件大小:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> messages[i].getSize());<br />                </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 邮件发送时间</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">                logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">发送日期:</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> messages[i].getSentDate());<br />            }<br />        } </span><span style="color: rgb(0, 0, 255);">finally</span><span style="color: rgb(0, 0, 0);"> {<br />            </span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);"> {<br />                inbox.close(</span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">);<br />            } </span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);"> (Exception e) {<br />            }<br />            </span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);"> {<br />                store.close();<br />            } </span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);"> (Exception e) {<br />            }<br />        }<br />        <br />        logger.debug(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">读取邮件完毕<img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" /></span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">protected</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> String decodeText(String text)<br />            </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> UnsupportedEncodingException {<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (text </span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">)<br />            </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (text.startsWith(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">=?GB</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">) </span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);"> text.startsWith(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">=?gb</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">))<br />            text </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> MimeUtility.decodeText(text);<br />        </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"><br />            text </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> String(text.getBytes(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ISO8859_1</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> text;<br />    }<br /><br />}<br /><br /><br /></span></div>

上面代码，完全可以封装成一个收取ssl邮件的库<br />
改天有时间整理下关于发邮件的方法<img src ="http://www.blogjava.net/gooogle/aggbug/107474.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">爬虫工作室</a> 2007-03-30 14:36 <a href="http://www.blogjava.net/gooogle/archive/2007/03/30/107474.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎么样把本地的java源文件，资源等提交到web服务器，不是手工。</title><link>http://www.blogjava.net/gooogle/archive/2007/03/06/105193.html</link><dc:creator>爬虫工作室</dc:creator><author>爬虫工作室</author><pubDate>Tue, 06 Mar 2007 06:19:00 GMT</pubDate><guid>http://www.blogjava.net/gooogle/archive/2007/03/06/105193.html</guid><wfw:comment>http://www.blogjava.net/gooogle/comments/105193.html</wfw:comment><comments>http://www.blogjava.net/gooogle/archive/2007/03/06/105193.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/gooogle/comments/commentRss/105193.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gooogle/services/trackbacks/105193.html</trackback:ping><description><![CDATA[<table width="100%">
				<tbody>
						<tr>
								<td>
										<p>    这几天一直在忙着设计web项目。公司刚刚买了一台测试服务器过来。以前没测试服务器的时候，是把那些classes跟res等资源文件手工放到服务器（linux）。以前没服务器的时候，是什么都在本机测试，mysql，tomcat啊等。很是消耗资源，现在我想把这些用测试服务器来做。但以前一直没有对自动提交资源文件的工具。纯手工很麻烦。看看各位兄弟有这方面的经验没有。给个build.xml的脚本参考下也行。这段时间比较懒，不想去搜索了。</p>
								</td>
						</tr>
				</tbody>
		</table><img src ="http://www.blogjava.net/gooogle/aggbug/105193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gooogle/" target="_blank">爬虫工作室</a> 2007-03-06 14:19 <a href="http://www.blogjava.net/gooogle/archive/2007/03/06/105193.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>