﻿<?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-随笔分类-JEE学习</title><link>http://www.blogjava.net/Jkallen/category/6932.html</link><description>    人生若只如初见，何事秋风悲画扇。</description><language>zh-cn</language><lastBuildDate>Fri, 16 Oct 2009 05:11:29 GMT</lastBuildDate><pubDate>Fri, 16 Oct 2009 05:11:29 GMT</pubDate><ttl>60</ttl><item><title>是JVM导致Weblogic异常终止嘛？</title><link>http://www.blogjava.net/Jkallen/archive/2009/10/16/298493.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Fri, 16 Oct 2009 00:58:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2009/10/16/298493.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/298493.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2009/10/16/298493.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/298493.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/298493.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 将ecslipse自动编译时生成的类的路径加入到Weblgoic的启动文件(startweblogic.cmd)中后，Weblogic启动异常.&nbsp;&nbsp;<a href='http://www.blogjava.net/Jkallen/archive/2009/10/16/298493.html'>阅读全文</a><img src ="http://www.blogjava.net/Jkallen/aggbug/298493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2009-10-16 08:58 <a href="http://www.blogjava.net/Jkallen/archive/2009/10/16/298493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>咨询一个自认为很奇怪的问题(在java中获取数据库连接时相关)</title><link>http://www.blogjava.net/Jkallen/archive/2008/07/15/215001.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Tue, 15 Jul 2008 08:28:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2008/07/15/215001.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/215001.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2008/07/15/215001.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/215001.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/215001.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">我用以下代码用来测试数据库连接是否正常：</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info("start to registerDriver...");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DriverManager.registerDriver(new oracle.jdbc.OracleDriver());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info(pros.getProperty("dbURL")+"--"+pros.getProperty("user")+"--"+ pros.getProperty("password"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con = DriverManager.getConnection(pros.getProperty("dbURL"), pros.getProperty("user"), pros.getProperty("password"));;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (con != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; st = con.createStatement();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs = st.executeQuery("select 1 from dual");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (rs.getInt(1) == 1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">然后我做了一个</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java application</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">桌面小应用程序（</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">extends FrameView</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">），在小应用程序中点击事件触发此段代码，如下：</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">private void dbTestMenuItemActionPerformed(java.awt.event.ActionEvent evt) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; //</span><span style="font-size: 10pt; color: maroon; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">从配置文件中读取连接相关属性</span><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br />
&nbsp;&nbsp;&nbsp; String info = "</span><span style="font-size: 10pt; color: maroon; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">数据库连接异常，请确认配置文件是参数是否正确。</span><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">";<br />
&nbsp;&nbsp;&nbsp; Properties per = new Properties();<br />
&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info("start to test the db connection...");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; per.load(new FileInputStream(Content.configFile));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info("system have loaded the config files successfully");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DbOper db = new DbOper();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (db.checkDBConnect(per)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info = "</span><span style="font-size: 10pt; color: maroon; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">数据库连接正常</span><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.info("</span><span style="font-size: 10pt; color: maroon; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">数据连接测试结果：</span><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">" + info);<br />
&nbsp;&nbsp;&nbsp; } catch (Exception e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger.error("Exception when test the DB connection, ",e);<br />
&nbsp;&nbsp;&nbsp; }</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: maroon; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp; if (aboutBox == null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JFrame mainFrame = AnalyseExcelApp.getApplication().getMainFrame();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aboutBox = new DBTestResultBox(mainFrame, info);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aboutBox.setLocationRelativeTo(mainFrame);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; AnalyseExcelApp.getApplication().show(aboutBox);<br />
}</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">但在运行时，程序头也不回地直接死了，调试时发现程序是在</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">con = DriverManager.getConnection(pros.getProperty("dbURL"), pros.getProperty("user"), pros.getProperty("password"));;<br />
</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这一行，不行了，也不报错，就直接在此行一直呆着，啥也不做</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">...</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">另外还有二种情况，也让我比较奇怪：</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1. </span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">若同样调用此段测试代码，但不是在</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java application</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中，而是直接在一个普通的</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类的</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">main</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">方法中，测可以测试通过。</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2. </span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">若数据库边的是本机的数据库，那么此段测试代码也可以通过，在</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java application</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">与</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">类的</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">main</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">方法中均可以。</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">为什么，连接远程数据时，在</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">java application</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中会无故</span><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">down</span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">掉呢？</span><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 10pt; color: navy; font-family: Verdana; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">ps. </span><span style="font-size: 10pt; color: navy; font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">排除数据库地址，用户名，密码等错误；我的JDBC驱动是ojdbc14.jar，JDK 1.5</span></p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/215001.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2008-07-15 16:28 <a href="http://www.blogjava.net/Jkallen/archive/2008/07/15/215001.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>字符集的编(解)码的总结</title><link>http://www.blogjava.net/Jkallen/archive/2006/06/29/55666.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Thu, 29 Jun 2006 00:42:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/06/29/55666.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/55666.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/06/29/55666.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/55666.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/55666.html</trackback:ping><description><![CDATA[
		<p>　　看了孙鑫老师的相关讲解后，总结一下。<br /><br />　　首先看清楚几种常用的字符集编码(java语言是采用unicode字符集编码来表示字符与字符串的)：<br /><br />　　<strong>ASCII</strong>(American Standard Code for Information Interchange，美国信息互换标准代码)，是基于常用的英文字符的一套电脑编码系统。我们知道英文中经常使用的字符、数字符号被计算机处理时都是以二进制码的形式出现的。这种二进制码的集合就是所谓的ASCII码。每一个ASCII码与一个8位（bit）二进制数对应。其最高位是0，相应的十进制数是0-127。如，数字“0”的编码用十进制数表示就是48。另有128个扩展的ASCII码，最高位都是1，由一些制表符和其它符号组成。ASCII是现今最通用的单字节编码系统。</p>
		<p>　　<strong>GB2312</strong>：GB2312码是中华人民共和国国家汉字信息交换用编码，全称《信息交换用汉字编码字符集－基本集》。主要用于给每一个中文字符指定相应的数字，也就是进行编码。一个中文字符用两个字节的数字来表示，为了和ASCII码有所区别，将中文字符每一个字节的最高位置都用1来表示。<br /><br />　　<strong>GBK</strong>：为了对更多的字符进行编码，国家又发布了新的编码系统GBK(GBK的K是“扩展”的汉语拼音第一个字母)。在新的编码系统里，除了完全兼容GB2312 外，还对繁体中文、一些不常用的汉字和许多符号进行了编码。</p>
		<p>　　<strong>ISO-8859-1</strong>：是西方国家所使用的字符编码集，是一种单字节的字符集 ，而英文实际上只用了其中数字小于128的部分。</p>
		<p>　　<strong>Unicode</strong>：这是一种通用的字符集，对所有语言的文字进行了统一编码，对每一个字符都用2个字节来表示，对于英文字符采取前面加“0”字节的策略实现等长兼容。如 “a” 的ASCII码为0x61，UNICODE就为0x00，0x61。</p>
		<p>　　<strong>UTF-8</strong>：Eight-bit UCS Transformation Format，(UCS，Universal Character Set，通用字符集，UCS 是所有其他字符集标准的一个超集)。一个7位的ASCII码值，对应的UTF码是一个字节。如果字符是0x0000，或在0x0080与0x007f之间，对应的UTF码是两个字节，如果字符在0x0800与0xffff之间，对应的UTF码是三个字节。</p>
		<p>　　我们运行java程序时，JVM有自己所支持的编码种类，用以下代码可以看到：</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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">Map m</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">Charset.availableCharsets();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  Set names</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">m.keySet();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  Iterator it</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">names.iterator();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">while</span>
				<span style="COLOR: #000000">(it.hasNext())<br /><img id="Codehighlighter1_115_153_Open_Image" onclick="this.style.display='none'; Codehighlighter1_115_153_Open_Text.style.display='none'; Codehighlighter1_115_153_Closed_Image.style.display='inline'; Codehighlighter1_115_153_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_115_153_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_115_153_Closed_Text.style.display='none'; Codehighlighter1_115_153_Open_Image.style.display='inline'; Codehighlighter1_115_153_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  </span>
				<span id="Codehighlighter1_115_153_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_115_153_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   System.out.println(it.next());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />  }</span>
				</span>
		</div>
		<p>
				<br />　　 然后可以通过以下代码看到我们目前JVM所使用的编码：<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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">Properties pps</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">System.getProperties();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  pps.list(System.out);</span>
		</div>
		<p>　　具体来说什么是编码，什么是解码？<br />　　在InputStreamReader JDK有这样描述：It reads bytes and decodes them into characters using a specified charset.(用指定的字符集将字节数组解码成字符串)。<br />　　相反OutputStreamWriter 描述：Characters written to it are encoded into bytes using a specified charset.(用指定的字符集将字符串编码成字节数组)。<br /><br />　　理解这个以后一切好办了啦！<br /><br />　　我们的OS一般是GBK编码的（凡是从磁盘上读取文件可以看成是用OS的字符集编码方式来对操作对象进行解码处理--从标准输入设备读取数据的时候是依赖OS的字符集）。而我们将从磁盘上文件经过处理得到我们想要的字符串等其它对象的时候，这一过程是用JVM的默认的字符集编码方式来处理的！由于不同的字符集编码方式有着不同的原理(前面所述)，这样当编码与解码不一致的时候，自然而然就出现了可爱的乱码。<br /><br />　　比如如下，将我们JVM字符集改成iso-8859-1这样在就与我们的OS不同：<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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">pps.put(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">file.encoding</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ISO-8859-1</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> data;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">byte</span>
				<span style="COLOR: #000000">[] buf</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">byte</span>
				<span style="COLOR: #000000">[</span>
				<span style="COLOR: #000000">100</span>
				<span style="COLOR: #000000">];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> i</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">while</span>
				<span style="COLOR: #000000">((data</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">System.in.read())</span>
				<span style="COLOR: #000000">!=</span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">q</span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_130_164_Open_Image" onclick="this.style.display='none'; Codehighlighter1_130_164_Open_Text.style.display='none'; Codehighlighter1_130_164_Closed_Image.style.display='inline'; Codehighlighter1_130_164_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_130_164_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_130_164_Closed_Text.style.display='none'; Codehighlighter1_130_164_Open_Image.style.display='inline'; Codehighlighter1_130_164_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  </span>
				<span id="Codehighlighter1_130_164_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_130_164_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   buf[i]</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">(</span>
						<span style="COLOR: #0000ff">byte</span>
						<span style="COLOR: #000000">)data;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   i</span>
						<span style="COLOR: #000000">++</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />  }</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  String str</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> String(buf,</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">,i);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  System.out.println(str);</span>
		</div>
		<p>　<br />　　这时我们可以用string的一个构造方法：<br />　　<span style="COLOR: #000000">String(</span><span style="COLOR: #0000ff">byt</span><span style="COLOR: #000000">[] bytes, String charsetName) <br />　　Constructs a </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> String by decoding the specified array of bytes using the specified </span>charset.(用指定的字符集对字节数组进行解码)。<br />　　其中用到了string 的getBytes方法：<br />　　getBytes(String charsetName) <br />　　Encodes this String into a sequence of bytes using the named charset, storing the result into a new byte array.(用指定的字符集进行编码，将结果存放到一字节数组里面)重新构造一个string：</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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">String strGBK</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> String(str.getBytes(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ISO-8859-1</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">),</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">GBK</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);</span>
		</div>
		<p>　　这样又可以重新得到我们想要的汉字了。<br /><br />　　我们这例子中是GBK(OS)来编码的，然后采用iso-8859-1(JVM)来解码得到一个新string(此string是乱码)，然后将此string用iso-8859-1重新编码，并且用指定的GBK来解码。得到一个新string(也就是strGBK)，这个string就不再是乱码了。<br /><br />　　但如果我们一开始就采用GBK解码得到的字符串，然后用ISO-8859-1编码，能否再解码回去得到我们的中文字符呢？显示不可以啦，因为用ISO-8859-1的编码的时候采用是一种单字节的字符集来对其编码，这样就丢失了一个字节(对中文来说)！所以这样是得不到中文字符的！</p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/55666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-06-29 08:42 <a href="http://www.blogjava.net/Jkallen/archive/2006/06/29/55666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>借第三方类型库解析excel文件</title><link>http://www.blogjava.net/Jkallen/archive/2006/05/30/49087.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Tue, 30 May 2006 10:30:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/05/30/49087.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/49087.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/05/30/49087.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/49087.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/49087.html</trackback:ping><description><![CDATA[
		<p>　　这里解析excel文件用了第三方所提供的一些类库。Jakarta的POI项目提供了一组操纵Windows文档的Java API，如下几个类提供了操作Excel文</p>
		<p>　　件的方便的途径：HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell，分别代表了Excel电子表格中的Book、Sheet、行和单元格。你可以在下面地址下载到最新的POI工具包： <br />　　<a href="http://jakarta.apache.org/poi/index.html">http://jakarta.apache.org/poi/index.html<br /></a><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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">所导入的第三方类包</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.apache.poi.hssf.usermodel.HSSFCell;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.apache.poi.hssf.usermodel.HSSFRow;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.apache.poi.hssf.usermodel.HSSFSheet;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.apache.poi.hssf.usermodel.HSSFWorkbook;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.apache.poi.poifs.filesystem.POIFSFileSystem;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">初始化</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">POIFSFileSystem poiFs</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> POIFSFileSystem(inputStream);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />HSSFWorkbook wb </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> HSSFWorkbook(poiFs);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />HSSFSheet sheet </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> wb.getSheetAt(</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> rowNumber</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">sheet.getFirstRowNum();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> lastRowNumber</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">sheet.getLastRowNum();</span>
		</div>
		<p>
				<br />　　通过sheet.getRow(rowNumber)取得一行的数据。</p>
		<p>　　对每一行HSSFRow，它可以通过getFirstCellNum(cellNum) or getLastCellNum(cellNum)取得此行的格数(列数)。</p>
		<p>　　通过HSSFCell可以判断每个表格中的数据类型，DOC中描述如下：</p>
		<p> </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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">static</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> CELL_TYPE_BLANK <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          Blank Cell type (</span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">) <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">static</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> CELL_TYPE_BOOLEAN <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          Boolean Cell type (</span>
				<span style="COLOR: #000000">4</span>
				<span style="COLOR: #000000">) <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">static</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> CELL_TYPE_ERROR <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          Error Cell type (</span>
				<span style="COLOR: #000000">5</span>
				<span style="COLOR: #000000">) <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">static</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> CELL_TYPE_FORMULA <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          Formula Cell type (</span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">) <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">static</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> CELL_TYPE_NUMERIC <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          Numeric Cell type (</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">) <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">static</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> CELL_TYPE_STRING <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          String Cell type (</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">) </span>
		</div>
		<p>
				<br />　　这样，对于一个现有的excel文件，我们可以取得它所以行的数据，并对行中的每条数据根据不同的类型进行操作了！<br /><br />将excel文件中的一行具体cell转换成java数据实例:</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">
				<img id="Codehighlighter1_66_1204_Open_Image" onclick="this.style.display='none'; Codehighlighter1_66_1204_Open_Text.style.display='none'; Codehighlighter1_66_1204_Closed_Image.style.display='inline'; Codehighlighter1_66_1204_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_66_1204_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_66_1204_Closed_Text.style.display='none'; Codehighlighter1_66_1204_Open_Image.style.display='inline'; Codehighlighter1_66_1204_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">private</span>
				<span style="COLOR: #000000"> String getStringCellValue(HSSFCell cell,</span>
				<span style="COLOR: #0000ff">boolean</span>
				<span style="COLOR: #000000"> dateFlag)</span>
				<span id="Codehighlighter1_66_1204_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_66_1204_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String value</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000">(cell</span>
						<span style="COLOR: #000000">==</span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img id="Codehighlighter1_178_1176_Open_Image" onclick="this.style.display='none'; Codehighlighter1_178_1176_Open_Text.style.display='none'; Codehighlighter1_178_1176_Closed_Image.style.display='inline'; Codehighlighter1_178_1176_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_178_1176_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_178_1176_Closed_Text.style.display='none'; Codehighlighter1_178_1176_Open_Image.style.display='inline'; Codehighlighter1_178_1176_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">switch</span>
						<span style="COLOR: #000000"> (cell.getCellType())</span>
						<span id="Codehighlighter1_178_1176_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_178_1176_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
								<span style="COLOR: #0000ff">case</span>
								<span style="COLOR: #000000"> HSSFCell.CELL_TYPE_BOOLEAN:<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                value</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">String.valueOf(cell.getBooleanCellValue());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
								<span style="COLOR: #0000ff">break</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
								<span style="COLOR: #0000ff">case</span>
								<span style="COLOR: #000000"> HSSFCell.CELL_TYPE_NUMERIC:<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />              </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000">(dateFlag)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    value</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> java.text.SimpleDateFormat(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">yyyy-MM-dd HH:mm</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">).format(cell.getDateCellValue());<br /><img id="Codehighlighter1_529_714_Open_Image" onclick="this.style.display='none'; Codehighlighter1_529_714_Open_Text.style.display='none'; Codehighlighter1_529_714_Closed_Image.style.display='inline'; Codehighlighter1_529_714_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_529_714_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_529_714_Closed_Text.style.display='none'; Codehighlighter1_529_714_Open_Image.style.display='inline'; Codehighlighter1_529_714_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span>
								<span style="COLOR: #0000ff">else</span>
								<span style="COLOR: #000000"> </span>
								<span id="Codehighlighter1_529_714_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_529_714_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">                    value=String.valueOf(cell.getNumericCellValue());</span>
										<span style="COLOR: #008000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										</span>
										<span style="COLOR: #000000">                    value </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> DecimalFormat(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">0.##########</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">).format(cell.getNumericCellValue());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
								<span style="COLOR: #0000ff">break</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
								<span style="COLOR: #0000ff">case</span>
								<span style="COLOR: #000000"> HSSFCell.CELL_TYPE_ERROR:<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                value</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">String.valueOf(cell.getErrorCellValue());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
								<span style="COLOR: #0000ff">break</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
								<span style="COLOR: #0000ff">case</span>
								<span style="COLOR: #000000"> HSSFCell.CELL_TYPE_FORMULA:<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
								<span style="COLOR: #0000ff">case</span>
								<span style="COLOR: #000000"> HSSFCell.CELL_TYPE_BLANK: <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
								<span style="COLOR: #0000ff">case</span>
								<span style="COLOR: #000000"> HSSFCell.CELL_TYPE_STRING:<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                value</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">cell.getStringCellValue();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000">(DATE_CELL.equals(value))<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                        dateCellNumber</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">cell.getCellNum();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
								<span style="COLOR: #0000ff">break</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> value;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span>
				</span>
		</div>
		<p> </p>
		<p>　　到了现在实中应用当然不会这么简单，此类库的更多功能我们可以参考其API，在此将中附带了API。</p>
		<p>　　参考：<a href="http://jakarta.apache.org">http://jakarta.apache.org</a></p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/49087.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-05-30 18:30 <a href="http://www.blogjava.net/Jkallen/archive/2006/05/30/49087.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>原来JSP里面也可以这样引用</title><link>http://www.blogjava.net/Jkallen/archive/2006/05/25/48097.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Thu, 25 May 2006 10:42:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/05/25/48097.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/48097.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/05/25/48097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/48097.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/48097.html</trackback:ping><description><![CDATA[
		<p>　　刚刚才发现原来在JSP页面，当用到其脚本，如在&lt;%=REG%&gt;表达式中,原来REG是可以直接从此JSP页面的STRUTS中定义而来！<br /><br />　　从bean标签中引用，比如：</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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">bean:define </span>
				<span style="COLOR: #ff0000">id</span>
				<span style="COLOR: #0000ff">="birthdayInfo"</span>
				<span style="COLOR: #ff0000"> name</span>
				<span style="COLOR: #0000ff">="person"</span>
				<span style="COLOR: #ff0000"> property</span>
				<span style="COLOR: #0000ff">="info.birthday"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
		</div>
		<p>　　看struts参考文档中，bean:define 是指定义一个在指定范围内bean相关属性的脚本变量（Define a scripting variable based on the value(s) of the specified bean property）<br /><br />　　此中，person可能是在request等中预先已经定义好的DTO等等（这里暂时不是我们所要关注的啦），然后直接引用：</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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> PrintUtil.printTimeArea((UtilDateDTO)birthdayInfo) </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span>
		</div>
		<p>　　PrintUtil与UtilDateDTO均是在JSP页面预先包含进来的（也不用关注），这些都是后台部分的处理了，这里主是说明在JSP中其脚本如何引用STRUTS标签中的变量值。<br /><br />　　<br />　　也可以直接从logic中引用，如：</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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">logic:iterate </span>
				<span style="COLOR: #ff0000">id</span>
				<span style="COLOR: #0000ff">="detailsdto"</span>
				<span style="COLOR: #ff0000"> name</span>
				<span style="COLOR: #0000ff">="eduCalendar"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        type</span>
				<span style="COLOR: #0000ff">="com.jbbis.netedu.eduadmin.dto.CalendarDetailDTO"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        property</span>
				<span style="COLOR: #0000ff">="details"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> PrintUtil.printTimeArea((CalendarDetailDTO)detailsdto) </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">logic:iterate</span>
				<span style="COLOR: #0000ff">&gt;</span>
		</div>
		<p>
				<br />　　其原理一样的。<br />         logic:iterate是用来迭代指定范围内一些特定的集合容器（Custom tag that iterates the elements of a collection, which can be either an attribute or the property of an attribute. The collection can be any of the following: an array of objects, an Enumeration, an Iterator, a Collection (which includes Lists, Sets and Vectors), or a Map (which includes Hashtables) whose elements will be iterated over.）<br /><br />　　应用示例：<br />　　在DTO中我的一属性---生日，在实体与DTO均定义为Long，所以假如有一个为1950-01-01生日的数据，那么在DTO与实体中就表示为631124235983 <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">
				<img id="Codehighlighter1_2_139_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2_139_Open_Text.style.display='none'; Codehighlighter1_2_139_Closed_Image.style.display='inline'; Codehighlighter1_2_139_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_2_139_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2_139_Closed_Text.style.display='none'; Codehighlighter1_2_139_Open_Image.style.display='inline'; Codehighlighter1_2_139_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span>
				<span id="Codehighlighter1_2_139_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_2_139_Open_Text">
						<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />java.text.DateFormat _fmt </span>
						<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
						<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span>
						<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> java.text.SimpleDateFormat(</span>
						<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
						<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">yyyy-MM-dd</span>
						<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
						<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">, Locale.SIMPLIFIED_CHINESE);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<img src="http://www.blogjava.net/images/dot.gif" />  <img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">logic:notEmpty </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="dto"</span>
				<span style="COLOR: #ff0000"> property</span>
				<span style="COLOR: #0000ff">="birthday"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">bean:define </span>
				<span style="COLOR: #ff0000">id</span>
				<span style="COLOR: #0000ff">="curbirthday"</span>
				<span style="COLOR: #ff0000"> name</span>
				<span style="COLOR: #0000ff">="dto"</span>
				<span style="COLOR: #ff0000"> property</span>
				<span style="COLOR: #0000ff">="birthday"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">_fmt.format(</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">Date</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(((</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">Long</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)curbirthday).longValue())) </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">logic:notEmpty</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">td</span>
				<span style="COLOR: #0000ff">&gt;</span>
		</div>
		<p>
				<br />
				<br />　　当然这样在JSP中加了个&lt;%=%&gt;符号，要不就在DTO中额外为生日另一个属性提供对生日的字符显示("yyyy-MM-dd")。<br /><br />　　在JSP中恰当应用相关标签，不仅编程方便，而且代码也可以美观不少。</p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/48097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-05-25 18:42 <a href="http://www.blogjava.net/Jkallen/archive/2006/05/25/48097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初探序列化---Serializable</title><link>http://www.blogjava.net/Jkallen/archive/2006/05/10/45422.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Wed, 10 May 2006 04:47:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/05/10/45422.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/45422.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/05/10/45422.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/45422.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/45422.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段，仅用于标识可序列化的语义。　　Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte，这样日后要用这个对象时候，你就能把这些byte数据恢复出来，并据此重新构建那...&nbsp;&nbsp;<a href='http://www.blogjava.net/Jkallen/archive/2006/05/10/45422.html'>阅读全文</a><img src ="http://www.blogjava.net/Jkallen/aggbug/45422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-05-10 12:47 <a href="http://www.blogjava.net/Jkallen/archive/2006/05/10/45422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VO(DTO)与PO(DAO)之间的转换</title><link>http://www.blogjava.net/Jkallen/archive/2006/04/26/43290.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Wed, 26 Apr 2006 06:55:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/04/26/43290.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/43290.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/04/26/43290.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/43290.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/43290.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: PO即 Persistence Object　　VO即 Value Object		　VO和PO的主要区别在于：　　VO是独立的Java Object。　　PO是由Hibernate纳入其实体容器（Entity Map）的对象，它代表了与数据库中某条记录对应的Hibernate实体，PO的变化在事务提交时将反应到实际数据库中。		　实际上，这个VO被用作Data Transfer Obje...&nbsp;&nbsp;<a href='http://www.blogjava.net/Jkallen/archive/2006/04/26/43290.html'>阅读全文</a><img src ="http://www.blogjava.net/Jkallen/aggbug/43290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-04-26 14:55 <a href="http://www.blogjava.net/Jkallen/archive/2006/04/26/43290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中一些关于日期、日期格式、日期的解析和日期的计算 (转,略改)</title><link>http://www.blogjava.net/Jkallen/archive/2006/04/22/42477.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Sat, 22 Apr 2006 04:58:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/04/22/42477.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/42477.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/04/22/42477.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/42477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/42477.html</trackback:ping><description><![CDATA[跑系统时,难免遇到了数据量大的情况,只好让爱机彻夜工作了,自己闪人。毕竟对它不放心，这时得用到日志，日志里的时间肯定是要的啦。至少得知道他什么时候罢工吧（今天一来，我电脑就在昨天不明时间罢工了！）。下面是转自一位网友的：<br /><br />Java中一些关于日期、日期格式、日期的解析和日期的计算 <br /><p><font size="2">Java 语言的Calendar(日历),Date(日期), 和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未来的日期, 定制日期的显示格式, 并将文本数据解析成日期对象. 我们写了两篇文章, 这是第一篇, 我们将大概的学习日期, 日期格式, 日期的解析和日期的计算. </font></p><p><font size="2">我们将讨论下面的类: </font></p><p><font size="2">1、具体类(和抽象类相对)java.util.Date <br />2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat <br />3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar </font></p><p><font size="2">具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类. </font></p><p><font size="2">Date 类从Java 开发包(JDK) 1.0 就开始进化, 当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年. 这些方法现在遭到了批评并且已经被转移到了Calendar类里去了, 我们将在本文中进一步讨论它. 这种改进旨在更好的处理日期数据的国际化格式. 就象在JDK 1.1中一样, Date 类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1 月 1日00:00:00这一刻之前或者是之后经历的毫秒数. </font></p><p><font size="2">一、创建一个日期对象 </font></p><p><font size="2">让我们看一个使用系统的当前日期和时间创建一个日期对象并返回一个长整数的简单例子. 这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间. <br />//------------------------------------------------------<br />import java.util.Date; </font></p><p><font size="2">public class DateExample1 <br />{ <br />public static void main(String[] args)<br />{ <br />// Get the system date/time <br />Date date = new Date(); </font></p><p><font size="2">System.out.println(date.getTime()); <br />} <br />} <br />//------------------------------------------------------</font><font size="2"></font></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; HEIGHT: 27px; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">1145681088396<br /></span></div><p><br />在星期六, 2001年9月29日, 下午大约是6:50的样子, 上面的例子在系统输出设备上显示的结果是 1001803809710. 在这个例子中,值得注意的是我们使用了Date 构造函数创建一个日期对象, 这个构造函数没有接受任何参数. 而这个构造函数在内部使用了System.currentTimeMillis() 方法来从系统获取日期. </p><p><font size="2">那么, 现在我们已经知道了如何获取从1970年1月1日开始经历的毫秒数了. 我们如何才能以一种用户明白的格式来显示这个日期呢? 在这里类java.text.SimpleDateFormat 和它的抽象基类 java.text.DateFormat 就派得上用场了. </font></p><p><font size="2">二、日期数据的定制格式 </font></p><p><font size="2">假如我们希望定制日期数据的格式, 比方星期六-9月-29日-2001年. 下面的例子展示了如何完成这个工作: </font></p><p><font size="2">//------------------------------------------------------<br />import java.text.SimpleDateFormat; <br />import java.util.Date; </font></p><p><font size="2">public class DateExample2 <br />{ </font></p><p><font size="2">public static void main(String[] args) <br />{ </font></p><p><font size="2">SimpleDateFormat bartDateFormat = <br />new SimpleDateFormat("EEEE-MMMM-dd-yyyy"); </font></p><p><font size="2">Date date = new Date(); </font></p><p><font size="2">System.out.println(bartDateFormat.format(date)); <br />} <br />} <br />//------------------------------------------------------<br /><br /></font></p><p><font size="2"></font></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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">星期六-四月-22-2006</span></div><p><br />只要通过向SimpleDateFormat 的构造函数传递格式字符串"EEE-MMMM-dd-yyyy", 我们就能够指明自己想要的格式. 你应该可以看见, 格式字符串中的ASCII 字符告诉格式化函数下面显示日期数据的哪一个部分. EEEE是星期, MMMM是月, dd是日, yyyy是年. 字符的个数决定了日期是如何格式化的.传递"EE-MM-dd-yy"会显示 Sat-09-29-01. 请察看Sun 公司的Web 站点获取日期格式化选项的完整的指示.</p><p><font size="2">三、将文本数据解析成日期对象 </font></p><p><font size="2">假设我们有一个文本字符串包含了一个格式化了的日期对象, 而我们希望解析这个字符串并从文本日期数据创建一个日期对象. 我们将再次以格式化字符串"MM-dd-yyyy" 调用SimpleDateFormat类, 但是这一次, 我们使用格式化解析而不是生成一个文本日期数据. 我们的例子, 显示在下面, 将解析文本字符串"9-29-2001"并创建一个值为001736000000 的日期对象. </font></p><p><font size="2">//------------------------------------------------------<br />import java.text.SimpleDateFormat; <br />import java.util.Date; </font></p><p><font size="2">public class DateExample3 <br />{ </font></p><p><font size="2">public static void main(String[] args) <br />{ <br />// Create a date formatter that can parse dates of <br />// the form MM-dd-yyyy. <br />SimpleDateFormat bartDateFormat = <br />new SimpleDateFormat("MM-dd-yyyy"); </font></p><p><font size="2">// Create a string containing a text date to be parsed. <br />String dateStringToParse = "9-29-2001"; </font></p><p><font size="2">try { <br />// Parse the text version of the date. <br />// We have to perform the parse method in a <br />// try-catch construct in case dateStringToParse <br />// does not contain a date in the format we are expecting. <br />Date date = bartDateFormat.parse(dateStringToParse); </font></p><p><font size="2">// Now send the parsed date as a long value <br />// to the system output. <br />System.out.println(date.getTime()); <br />} <br />catch (Exception ex) { <br />System.out.println(ex.getMessage()); <br />} <br />} <br />} <br />//------------------------------------------------------<br /></font></p><p><font size="2"></font></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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">1001692800000</span></div><p><br /><br />四、使用标准的日期格式化过程 </p><p><font size="2">既然我们已经可以生成和解析定制的日期格式了, 让我们来看一看如何使用内建的格式化过程. 方法 DateFormat.getDateTimeInstance() 让我们得以用几种不同的方法获得标准的日期格式化过程. 在下面的例子中, 我们获取了四个内建的日期格式化过程. 它们包括一个短的, 中等的, 长的, 和完整的日期格式. </font></p><p><font size="2">//------------------------------------------------------<br />import java.text.DateFormat; <br />import java.util.Date; </font></p><p><font size="2">public class DateExample4 <br />{ </font></p><p><font size="2">public static void main(String[] args) <br />{ <br />Date date = new Date(); </font></p><p><font size="2">DateFormat shortDateFormat = <br />DateFormat.getDateTimeInstance( <br />DateFormat.SHORT, <br />DateFormat.SHORT); </font></p><p><font size="2">DateFormat mediumDateFormat = <br />DateFormat.getDateTimeInstance( <br />DateFormat.MEDIUM, <br />DateFormat.MEDIUM); </font></p><p><font size="2">DateFormat longDateFormat = <br />DateFormat.getDateTimeInstance( <br />DateFormat.LONG, <br />DateFormat.LONG); </font></p><p><font size="2">DateFormat fullDateFormat = <br />DateFormat.getDateTimeInstance( <br />DateFormat.FULL, <br />DateFormat.FULL); </font></p><p><font size="2">System.out.println(shortDateFormat.format(date)); <br />System.out.println(mediumDateFormat.format(date)); <br />System.out.println(longDateFormat.format(date)); <br />System.out.println(fullDateFormat.format(date)); <br />} <br />} <br />//------------------------------------------------------<br /></font></p><p><font size="2"></font></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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">01-9-29 上午12:00<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2001-9-29 0:00:00<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2001年9月29日 上午12时00分00秒<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2001年9月29日 星期六 上午12时00分00秒 CST</span></div><p><br />注意我们在对 getDateTimeInstance的每次调用中都传递了两个值. 第一个参数是日期风格, 而第二个参数是时间风格. 它们都是基本数据类型int(整型). 考虑到可读性, 我们使用了DateFormat 类提供的常量: SHORT, MEDIUM, LONG, 和 FULL. 要知道获取时间和日期格式化过程的更多的方法和选项, 请看Sun 公司Web 站点上的解释. </p><p><font size="2">运行我们的例子程序的时候, 它将向标准输出设备输出下面的内容: <br />9/29/01 8:44 PM <br />Sep 29, 2001 8:44:45 PM <br />September 29, 2001 8:44:45 PM EDT <br />Saturday, September 29, 2001 8:44:45 PM EDT</font></p><p><font size="2">五、Calendar 类 </font></p><p><font size="2">我们现在已经能够格式化并创建一个日期对象了, 但是我们如何才能设置和获取日期数据的特定部分呢, 比如说小时, 日, 或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类. 就如我们前面提到的那样, Calendar 类中的方法替代了Date 类中被人唾骂的方法. </font></p><p><font size="2">假设你想要设置, 获取, 和操纵一个日期对象的各个部分, 比方一个月的一天或者是一个星期的一天. 为了演示这个过程, 我们将使用具体的子类 java.util.GregorianCalendar. 考虑下面的例子, 它计算得到下面的第十个星期五是13号. </font></p><p><font size="2">//------------------------------------------------------<br />import java.util.GregorianCalendar; <br />import java.util.Date; <br />import java.text.DateFormat; </font></p><p><font size="2">public class DateExample5 <br />{ </font></p><p><font size="2">public static void main(String[] args) <br />{ <br />DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL); </font></p><p><font size="2">// Create our Gregorian Calendar. <br />GregorianCalendar cal = new GregorianCalendar(); <br /><br />// Set the date and time of our calendar <br />// to the system&amp;s date and time <br />cal.setTime(new Date()); </font></p><p><font size="2">System.out.println("System Date: " + <br />dateFormat.format(cal.getTime()));<br /><br />System.out.println("Befor Setting Day of Week to Friday: " + <br />dateFormat.format(cal.getTime()));  <br /></font></p><p><font size="2">// Set the day of week to FRIDAY <br />cal.set(GregorianCalendar.DAY_OF_WEEK, <br />GregorianCalendar.FRIDAY); <br />System.out.println("After Setting Day of Week to Friday: " + <br />dateFormat.format(cal.getTime())); </font></p><p><font size="2">int friday13Counter = 0; <br /><br />while (friday13Counter &lt;= 10) <br />{ </font></p><p><font size="2">// Go to the next Friday by adding 7 days. <br />cal.add(GregorianCalendar.DAY_OF_MONTH, 7); </font></p><p><font size="2">// If the day of month is 13 we have <br />// another Friday the 13th. <br />if (cal.get(GregorianCalendar.DAY_OF_MONTH) == 13) <br />{ <br />friday13Counter++; <br />System.out.println(dateFormat.format(cal.getTime())); <br />} <br />} <br />} <br />} <br />//------------------------------------------------------<br /></font></p><p><font size="2"></font></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">    Befor Setting Day of Week to Friday: 2006年4月22日 星期六<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">After Setting Day of Week to Friday: 2006年4月21日 星期五<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2006年10月13日 星期五<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2007年4月13日 星期五<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2007年7月13日 星期五<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2008年6月13日 星期五<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2009年2月13日 星期五<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2009年3月13日 星期五<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2009年11月13日 星期五<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2010年8月13日 星期五<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2011年5月13日 星期五<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2012年1月13日 星期五<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />2012年4月13日 星期五</span></div><p><br /><br />在这个例子中我们作了有趣的函数调用: <br />cal.set(GregorianCalendar.DAY_OF_WEEK, <br />GregorianCalendar.FRIDAY); </p><p><font size="2">和: <br />cal.add(GregorianCalendar.DAY_OF_MONTH, 7); </font></p><p><font size="2">set 方法能够让我们通过简单的设置星期中的哪一天这个域来将我们的时间调整为星期五. 注意到这里我们使用了常量 DAY_OF_WEEK 和 FRIDAY来增强代码的可读性. add 方法让我们能够在日期上加上数值. 润年的所有复杂的计算都由这个方法自动处理. </font></p><p><font size="2">我们这个例子的输出结果是: <br />System Date: Saturday, September 29, 2001 <br />当我们将它设置成星期五以后就成了: Friday, September 28, 2001 <br />Friday, September 13, 2002 <br />Friday, December 13, 2002 <br />Friday, June 13, 2003 <br />Friday, February 13, 2004 <br />Friday, August 13, 2004 <br />Friday, May 13, 2005 <br />Friday, January 13, 2006 <br />Friday, October 13, 2006 <br />Friday, April 13, 2007 <br />Friday, July 13, 2007 <br />Friday, June 13, 2008 </font></p><p><font size="2">六、时间掌握在你的手里 </font></p><p><font size="2">有了这些Date 和Calendar 类的例子, 你应该能够使用 java.util.Date, java.text.SimpleDateFormat, 和 java.util.GregorianCalendar 创建许多方法了. </font></p><img src ="http://www.blogjava.net/Jkallen/aggbug/42477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-04-22 12:58 <a href="http://www.blogjava.net/Jkallen/archive/2006/04/22/42477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate学习---通过XDoclet(ant)生成Hibernate映射文件</title><link>http://www.blogjava.net/Jkallen/archive/2006/04/10/40305.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Mon, 10 Apr 2006 11:00:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/04/10/40305.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/40305.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/04/10/40305.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/40305.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/40305.html</trackback:ping><description><![CDATA[
		<p>通过XDoclet可以我们的精力放在编写java源文件上。<br /><br />具体来说就是：<br />只有Java： java---&gt;XDoclet(hibernatedoclet)---&gt;Hbm----&gt;SchemaExport(schemaexport,hbm2ddl)----&gt;数据表</p>
		<p>
				<strong>1:java源文件编写</strong>
		</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">
				<img id="Codehighlighter1_0_28_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_28_Open_Text.style.display='none'; Codehighlighter1_0_28_Closed_Image.style.display='inline'; Codehighlighter1_0_28_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_0_28_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_28_Closed_Text.style.display='none'; Codehighlighter1_0_28_Open_Image.style.display='inline'; Codehighlighter1_0_28_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span id="Codehighlighter1_0_28_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_0_28_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * Created on 2006-4-7<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">package</span>
				<span style="COLOR: #000000"> com.entity;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_52_165_Open_Image" onclick="this.style.display='none'; Codehighlighter1_52_165_Open_Text.style.display='none'; Codehighlighter1_52_165_Closed_Image.style.display='inline'; Codehighlighter1_52_165_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_52_165_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_52_165_Closed_Text.style.display='none'; Codehighlighter1_52_165_Open_Image.style.display='inline'; Codehighlighter1_52_165_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_52_165_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
				<span id="Codehighlighter1_52_165_Open_Text">
						<span style="COLOR: #008000">/**</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * </span>
						<span style="COLOR: #808080">@author</span>
						<span style="COLOR: #008000"> jkallen<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * @hibernate.class lazy="true" table="syn_dept"<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * @hibernate.cache usage="read-write"<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img id="Codehighlighter1_194_684_Open_Image" onclick="this.style.display='none'; Codehighlighter1_194_684_Open_Text.style.display='none'; Codehighlighter1_194_684_Closed_Image.style.display='inline'; Codehighlighter1_194_684_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_194_684_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_194_684_Closed_Text.style.display='none'; Codehighlighter1_194_684_Open_Image.style.display='inline'; Codehighlighter1_194_684_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> SynDepartment </span>
				<span id="Codehighlighter1_194_684_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_194_684_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img id="Codehighlighter1_199_209_Open_Image" onclick="this.style.display='none'; Codehighlighter1_199_209_Open_Text.style.display='none'; Codehighlighter1_199_209_Closed_Image.style.display='inline'; Codehighlighter1_199_209_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_199_209_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_199_209_Closed_Text.style.display='none'; Codehighlighter1_199_209_Open_Image.style.display='inline'; Codehighlighter1_199_209_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span>
						<span id="Codehighlighter1_199_209_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
						<span id="Codehighlighter1_199_209_Open_Text">
								<span style="COLOR: #008000">/**</span>
								<span style="COLOR: #008000"> 主键 id</span>
								<span style="COLOR: #008000">*/</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">private</span>
						<span style="COLOR: #000000"> Long id;<br /><img id="Codehighlighter1_230_239_Open_Image" onclick="this.style.display='none'; Codehighlighter1_230_239_Open_Text.style.display='none'; Codehighlighter1_230_239_Closed_Image.style.display='inline'; Codehighlighter1_230_239_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_230_239_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_230_239_Closed_Text.style.display='none'; Codehighlighter1_230_239_Open_Image.style.display='inline'; Codehighlighter1_230_239_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span>
						<span id="Codehighlighter1_230_239_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
						<span id="Codehighlighter1_230_239_Open_Text">
								<span style="COLOR: #008000">/**</span>
								<span style="COLOR: #008000"> 部门名称</span>
								<span style="COLOR: #008000">*/</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">private</span>
						<span style="COLOR: #000000"> String code_name;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img id="Codehighlighter1_271_361_Open_Image" onclick="this.style.display='none'; Codehighlighter1_271_361_Open_Text.style.display='none'; Codehighlighter1_271_361_Closed_Image.style.display='inline'; Codehighlighter1_271_361_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_271_361_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_271_361_Closed_Text.style.display='none'; Codehighlighter1_271_361_Open_Image.style.display='inline'; Codehighlighter1_271_361_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span>
						<span id="Codehighlighter1_271_361_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
						<span id="Codehighlighter1_271_361_Open_Text">
								<span style="COLOR: #008000">/**</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  * </span>
								<span style="COLOR: #808080">@return</span>
								<span style="COLOR: #008000"> Returns the id.<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  * @hibernate.id generator-class="native" column="id"<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  </span>
								<span style="COLOR: #008000">*/</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_387_403_Open_Image" onclick="this.style.display='none'; Codehighlighter1_387_403_Open_Text.style.display='none'; Codehighlighter1_387_403_Closed_Image.style.display='inline'; Codehighlighter1_387_403_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_387_403_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_387_403_Closed_Text.style.display='none'; Codehighlighter1_387_403_Open_Image.style.display='inline'; Codehighlighter1_387_403_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> Long getId() </span>
						<span id="Codehighlighter1_387_403_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_387_403_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> id;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_433_452_Open_Image" onclick="this.style.display='none'; Codehighlighter1_433_452_Open_Text.style.display='none'; Codehighlighter1_433_452_Closed_Image.style.display='inline'; Codehighlighter1_433_452_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_433_452_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_433_452_Closed_Text.style.display='none'; Codehighlighter1_433_452_Open_Image.style.display='inline'; Codehighlighter1_433_452_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> setId(Long id) </span>
						<span id="Codehighlighter1_433_452_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_433_452_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
								<span style="COLOR: #0000ff">this</span>
								<span style="COLOR: #000000">.id </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> id;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_455_548_Open_Image" onclick="this.style.display='none'; Codehighlighter1_455_548_Open_Text.style.display='none'; Codehighlighter1_455_548_Closed_Image.style.display='inline'; Codehighlighter1_455_548_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_455_548_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_455_548_Closed_Text.style.display='none'; Codehighlighter1_455_548_Open_Image.style.display='inline'; Codehighlighter1_455_548_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span>
						<span id="Codehighlighter1_455_548_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
						<span id="Codehighlighter1_455_548_Open_Text">
								<span style="COLOR: #008000">/**</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    * </span>
								<span style="COLOR: #808080">@return</span>
								<span style="COLOR: #008000"> Returns the code_name.<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    * @hibernate.property column = "code_name"<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    </span>
								<span style="COLOR: #008000">*/</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_580_603_Open_Image" onclick="this.style.display='none'; Codehighlighter1_580_603_Open_Text.style.display='none'; Codehighlighter1_580_603_Closed_Image.style.display='inline'; Codehighlighter1_580_603_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_580_603_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_580_603_Closed_Text.style.display='none'; Codehighlighter1_580_603_Open_Image.style.display='inline'; Codehighlighter1_580_603_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> String getCode_name() </span>
						<span id="Codehighlighter1_580_603_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_580_603_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> code_name;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_649_682_Open_Image" onclick="this.style.display='none'; Codehighlighter1_649_682_Open_Text.style.display='none'; Codehighlighter1_649_682_Closed_Image.style.display='inline'; Codehighlighter1_649_682_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_649_682_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_649_682_Closed_Text.style.display='none'; Codehighlighter1_649_682_Open_Image.style.display='inline'; Codehighlighter1_649_682_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> setCode_name(String code_name) </span>
						<span id="Codehighlighter1_649_682_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_649_682_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
								<span style="COLOR: #0000ff">this</span>
								<span style="COLOR: #000000">.code_name </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> code_name;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>
				<br />
				<br />这里用到了几种@hibernate标记的用法<br />@hibernate.class标记指定类的映射代码，lazy="true" table="syn_dept"则如<br />hibernate的映射文件class元素的属性值具有相同的意义<br />@hibernate.id标记指定类的OID映射代码<br />@hibernate.property标记指定类的属性映射代码<br />另外还可能用到@hibernate.set(如一对多的情况下)</p>
		<p>
				<strong>2:XDoclet---&gt;Hbm(写在build.xml文件中，ANT运行)<br /></strong>
		</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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">target </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="toHbm"</span>
				<span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  depends</span>
				<span style="COLOR: #0000ff">="compileEntity"</span>
				<span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  description</span>
				<span style="COLOR: #0000ff">="Generate hibernate mapping documents"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">hibernatedoclet </span>
				<span style="COLOR: #ff0000">destdir</span>
				<span style="COLOR: #0000ff">="${generated.dir}"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">fileset </span>
				<span style="COLOR: #ff0000">dir</span>
				<span style="COLOR: #0000ff">="${src.dir}"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">include </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="**/entity/*.java"</span>
				<span style="COLOR: #ff0000"> </span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">fileset</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">hibernate </span>
				<span style="COLOR: #ff0000">version</span>
				<span style="COLOR: #0000ff">="2.0"</span>
				<span style="COLOR: #ff0000"> </span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">hibernatedoclet</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">copy </span>
				<span style="COLOR: #ff0000">todir</span>
				<span style="COLOR: #0000ff">="${classes.dir}"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">fileset </span>
				<span style="COLOR: #ff0000">dir</span>
				<span style="COLOR: #0000ff">="${generated.dir}"</span>
				<span style="COLOR: #ff0000"> </span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">copy</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">target</span>
				<span style="COLOR: #0000ff">&gt;</span>
		</div>
		<p>
				<br />通过hibernatedoclet就可以生成SynDepartment.hbm.xml映射文件<br />fileset顾名思义就是过滤文件了。<br />注：compileEntity--编译java源文件(自定义)</p>
		<p>
				<strong>3:SchemaExport----&gt;数据表</strong>
				<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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">target </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="toddl"</span>
				<span style="COLOR: #ff0000"> depends</span>
				<span style="COLOR: #0000ff">="init"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">schemaexport </span>
				<span style="COLOR: #ff0000">properties</span>
				<span style="COLOR: #0000ff">="${classes.dir}/hibernate.properties"</span>
				<span style="COLOR: #ff0000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   quiet</span>
				<span style="COLOR: #0000ff">="no"</span>
				<span style="COLOR: #ff0000"> text</span>
				<span style="COLOR: #0000ff">="no"</span>
				<span style="COLOR: #ff0000"> drop</span>
				<span style="COLOR: #0000ff">="no"</span>
				<span style="COLOR: #ff0000">    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   delimiter</span>
				<span style="COLOR: #0000ff">="&amp;#xd;&amp;#xa;go&amp;#xd;&amp;#xa;"</span>
				<span style="COLOR: #ff0000"> output</span>
				<span style="COLOR: #0000ff">="${sql.dir}/${synup.sql.file}"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">fileset </span>
				<span style="COLOR: #ff0000">refid</span>
				<span style="COLOR: #0000ff">="hibernate.synup.mapping.files"</span>
				<span style="COLOR: #ff0000"> </span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">schemaexport</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">echo </span>
				<span style="COLOR: #ff0000">message</span>
				<span style="COLOR: #0000ff">="Output sql to file: ${sql.dir}/${sql.file}"</span>
				<span style="COLOR: #ff0000"> </span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">target</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">fileset </span>
				<span style="COLOR: #ff0000">id</span>
				<span style="COLOR: #0000ff">="hibernate.synup.mapping.files"</span>
				<span style="COLOR: #ff0000"> dir</span>
				<span style="COLOR: #0000ff">="${classes.dir}"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">include </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="**/entity/*.hbm.xml"</span>
				<span style="COLOR: #ff0000"> </span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">fileset</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>
				<br /> 通过schemaexport就向DB中生成table了。其中可能用到如下的一些属性：<br /> quiet：如果为yes,表示不把子DDL脚本输出到控制台<br /> drop：如果为yes，只执行删除数据库中的操作，但不创建新的表<br /> text：如果为yes，只会生成DDL脚本文件，但不会在数据库中执行DDL脚本<br /> output：指定存放DDL脚本文件的目录<br /> config：设定基于XML格式的配置文件， hbm2ddl(schemaexport)工具从这个文件中读取数据库的配置信息<br /> properties：设定基于java属性文件格式的配置文件，hbm2ddl(schemaexport)工具从这个文件中读取DB的配置信息<br /> format：设定DDL脚本中SQL语句的格式<br /> delimiter：为DDL脚本设置行结束符<br /> <br /> 在ANT中执行：<br /> &lt;target name="initOnlySynup" depends="toHbm,toddl"&gt;<br /> &lt;/target&gt;<br /> <br /> OK,最后生成的映射文件如下：<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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">&lt;?</span>
				<span style="COLOR: #ff00ff">xml version="1.0"</span>
				<span style="COLOR: #0000ff">?&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;!</span>
				<span style="COLOR: #ff00ff">DOCTYPE hibernate-mapping PUBLIC<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    "-//Hibernate/Hibernate Mapping DTD 2.0//EN" <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">hibernate-mapping</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">class<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="com.SynDepartment"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        table</span>
				<span style="COLOR: #0000ff">="syn_dept"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        dynamic-update</span>
				<span style="COLOR: #0000ff">="false"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        dynamic-insert</span>
				<span style="COLOR: #0000ff">="false"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">cache </span>
				<span style="COLOR: #ff0000">usage</span>
				<span style="COLOR: #0000ff">="read-write"</span>
				<span style="COLOR: #ff0000"> </span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">id<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="id"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            column</span>
				<span style="COLOR: #0000ff">="id"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            type</span>
				<span style="COLOR: #0000ff">="java.lang.Long"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">generator </span>
				<span style="COLOR: #ff0000">class</span>
				<span style="COLOR: #0000ff">="native"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">generator</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">id</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">property<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="code_name"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            type</span>
				<span style="COLOR: #0000ff">="java.lang.String"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            update</span>
				<span style="COLOR: #0000ff">="true"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            insert</span>
				<span style="COLOR: #0000ff">="true"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            access</span>
				<span style="COLOR: #0000ff">="property"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            column</span>
				<span style="COLOR: #0000ff">="code_name"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #008000">&lt;!--</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            To add non XDoclet property mappings, create a file named<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                hibernate-properties-SynDepartment.xml<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            containing the additional properties and place it in your merge dir.<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #008000">--&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">class</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">hibernate-mapping</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>
				<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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">[schemaexport] drop table syn_dept cascade constraints<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />[schemaexport] go<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />[schemaexport] drop sequence hibernate_sequence<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />[schemaexport] go<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />[schemaexport] create table syn_dept (<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />[schemaexport] id number(19,0) not null,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />[schemaexport] code_name varchar2(255),<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />[schemaexport] primary key (id)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />[schemaexport] )</span>
		</div>
		<p>DB中已经生成syn_dept表了,快去看下吧!<br /><br />关于Xdoclet 中的hibernate标签更多信息可以参考：<br /><a href="http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html#@hibernate_collection-key__0__1">http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html#@hibernate_collection-key__0__1</a>_<br />我还在一个网友的博客上看到了他对此的汉化：<br /><a href="http://blog.csdn.net/fasttalk/archive/2005/09/19/484615.aspx">http://blog.csdn.net/fasttalk/archive/2005/09/19/484615.aspx</a><br /><br /><br />参考资料：Hibernate持久化技术详解</p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/40305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-04-10 19:00 <a href="http://www.blogjava.net/Jkallen/archive/2006/04/10/40305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Java中文处理, 资源包后缀详解 </title><link>http://www.blogjava.net/Jkallen/archive/2006/04/07/39896.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Fri, 07 Apr 2006 10:29:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/04/07/39896.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/39896.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/04/07/39896.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/39896.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/39896.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Java中文处理, 资源包后缀详解												作者： 车东 Email: chedongATbigfoot.com/chedongATchedong.com										写于：2002/07 最后更新： 02/22/2006 14:42:55版权声明：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明http://www.chedong.co...&nbsp;&nbsp;<a href='http://www.blogjava.net/Jkallen/archive/2006/04/07/39896.html'>阅读全文</a><img src ="http://www.blogjava.net/Jkallen/aggbug/39896.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-04-07 18:29 <a href="http://www.blogjava.net/Jkallen/archive/2006/04/07/39896.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts自定义标签库-----列表显示</title><link>http://www.blogjava.net/Jkallen/archive/2006/04/06/39655.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Thu, 06 Apr 2006 10:55:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/04/06/39655.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/39655.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/04/06/39655.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/39655.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/39655.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在Struts应用中，到JSP页面上显示下拉列表框应该是常有的事。　　在基于是Struts的MVC框架中显示下拉框，有好些方法，用自定义标签库就是其中之一。　　若我们的此下拉框是放在基于HtmlForm中的。Struts可以通过ActionForm来保存其历史记录（不排除我们人为地给此ActionForm清理一下）。然而此自定义标签库却没有此功能！因为它没有通过过ActionForm中的字段来保存...&nbsp;&nbsp;<a href='http://www.blogjava.net/Jkallen/archive/2006/04/06/39655.html'>阅读全文</a><img src ="http://www.blogjava.net/Jkallen/aggbug/39655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-04-06 18:55 <a href="http://www.blogjava.net/Jkallen/archive/2006/04/06/39655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文件夹，压缩包操作</title><link>http://www.blogjava.net/Jkallen/archive/2006/03/30/38298.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Thu, 30 Mar 2006 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/03/30/38298.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/38298.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/03/30/38298.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/38298.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/38298.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 经常对一些文件,文件夹操作,自己写一个不是难事.但有个可以捡的应该也不是坏事.将destFileName解压到mExtractToDir  目录：												public				 				void				 extract(destFileName,mExtractToDir )  																								{   S...&nbsp;&nbsp;<a href='http://www.blogjava.net/Jkallen/archive/2006/03/30/38298.html'>阅读全文</a><img src ="http://www.blogjava.net/Jkallen/aggbug/38298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-03-30 17:46 <a href="http://www.blogjava.net/Jkallen/archive/2006/03/30/38298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个相当好的自定义标签---分页(二) </title><link>http://www.blogjava.net/Jkallen/archive/2006/03/17/35890.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Fri, 17 Mar 2006 15:44:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/03/17/35890.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/35890.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/03/17/35890.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/35890.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/35890.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#006400">在<a href="/Jkallen/archive/2006/03/13/35110.html">上一个介绍</a>里面主要讲到了分页标签的配置，逻辑处理，引用。<br />我们在action中：</font>
		</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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">JSP中引用此attribute分页处理</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />request.setAttribute(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">page</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,page);</span>
		</div>
		<br />
		<font color="#006400">然后在JSP中引用此page。<br />这次主要看如何能过对DB操作实现此page。<br /><br />处理逻辑：<br />1：根据SQL语句，当前页面，页面大小等参数，得到一系统data。<br />2：根据得到的data，再加上当前页面，页面大小可以实例化一个page类实体。<br />3：将此实体转换成便于到前台显示的DTO。<br /><br />具体如下：<br /><br /><strong>首先，我们根据查询语句从DB中得到一系列相关数据<br /></strong></font>
		<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">......<br /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">Query query </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> getSession().createQuery(sql);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            setParams(query, paramNames, params);<br /><img id="Codehighlighter1_108_241_Open_Image" onclick="this.style.display='none'; Codehighlighter1_108_241_Open_Text.style.display='none'; Codehighlighter1_108_241_Closed_Image.style.display='inline'; Codehighlighter1_108_241_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_108_241_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_108_241_Closed_Text.style.display='none'; Codehighlighter1_108_241_Open_Image.style.display='inline'; Codehighlighter1_108_241_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (pageSize </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_108_241_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_108_241_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                query.setFirstResult(PageManager.getStartIndex(pageNumber,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                        totalCount, pageSize));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                query.setMaxResults(pageSize);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            List data </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> doQuery(query);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            <br /><img id="Codehighlighter1_317_373_Open_Image" onclick="this.style.display='none'; Codehighlighter1_317_373_Open_Text.style.display='none'; Codehighlighter1_317_373_Closed_Image.style.display='inline'; Codehighlighter1_317_373_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_317_373_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_317_373_Closed_Text.style.display='none'; Codehighlighter1_317_373_Open_Image.style.display='inline'; Codehighlighter1_317_373_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (pageSize </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_317_373_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_317_373_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                totalCount </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> data.size();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />            }<br /><br />......</span></span></div>
		<br />
		<font color="#006400">可以看到其中除了createQuery，setFirstResult，setMaxResults外其实都是用户自定义的一些函数。<br />其它函数，顾名思义应该知道它想实现一个什么功能，象doQuery(query)就是得到一个结果集也许是得到一个按列表方式抽取结果集 query.list(),or 按迭代方式抽取结果集query.iterate().函数getStartIndex（args[]）返回数据第一条记录的起点位置。其它的也都差不多！<br /><br /><strong>其次得到一个page的实体类（entity）,或者说得到其DAO对象。</strong><br />其实得到一个DTO的page对象比较简单。前面列出了page，而上面已经从DB中得到了一系列数据（data),再加上页面的相关信息就可以实例化一个page实体了：<br /></font>
		<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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/dot.gif" />.<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> DefaultPage(</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> pageSize, </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> pagesCount, </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> pageNumber, Collection data,<br /><img id="Codehighlighter1_124_280_Open_Image" onclick="this.style.display='none'; Codehighlighter1_124_280_Open_Text.style.display='none'; Codehighlighter1_124_280_Closed_Image.style.display='inline'; Codehighlighter1_124_280_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_124_280_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_124_280_Closed_Text.style.display='none'; Codehighlighter1_124_280_Open_Image.style.display='inline'; Codehighlighter1_124_280_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />                     </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> totalSize) </span>
				<span id="Codehighlighter1_124_280_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_124_280_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">.pageSize </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> pageSize;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">.pagesCount </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> pagesCount;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">.pageNumber </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> pageNumber;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">.totalSize </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> totalSize;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">.data </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> data;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />  }</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<img src="http://www.blogjava.net/images/dot.gif" />.</span>
		</div>
		<br />
		<font color="#006400">当然在此前，对面页数据得处理一下，象pageNumber可能如下：</font>
		<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">
				<img id="Codehighlighter1_0_93_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_93_Open_Text.style.display='none'; Codehighlighter1_0_93_Closed_Image.style.display='inline'; Codehighlighter1_0_93_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_0_93_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_93_Closed_Text.style.display='none'; Codehighlighter1_0_93_Open_Image.style.display='inline'; Codehighlighter1_0_93_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span id="Codehighlighter1_0_93_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
				<span id="Codehighlighter1_0_93_Open_Text">
						<span style="COLOR: #008000">/**</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * </span>
						<span style="COLOR: #808080">@param</span>
						<span style="COLOR: #008000"> pageNumber<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * </span>
						<span style="COLOR: #808080">@param</span>
						<span style="COLOR: #008000"> pageSize<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * </span>
						<span style="COLOR: #808080">@param</span>
						<span style="COLOR: #008000"> totalCount<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * Return PageNumber<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />     </span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img id="Codehighlighter1_178_377_Open_Image" onclick="this.style.display='none'; Codehighlighter1_178_377_Open_Text.style.display='none'; Codehighlighter1_178_377_Closed_Image.style.display='inline'; Codehighlighter1_178_377_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_178_377_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_178_377_Closed_Text.style.display='none'; Codehighlighter1_178_377_Open_Image.style.display='inline'; Codehighlighter1_178_377_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">protected</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">static</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> calcPageNumber(</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> pageNumber, </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> pageSize, </span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> totalCount) </span>
				<span id="Codehighlighter1_178_377_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_178_377_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> maxPageNumber </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> calcMaxPageNumber(pageSize, totalCount);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        pageNumber </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> pageNumber</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">maxPageNumber</span>
						<span style="COLOR: #000000">?</span>
						<span style="COLOR: #000000">maxPageNumber:pageNumber;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000">(pageNumber</span>
						<span style="COLOR: #000000">&lt;=</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            pageNumber</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> pageNumber;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span>
				</span>
		</div>
		<br />
		<font color="#006400">easy吧！<br /><br /><strong>最后将此实体转换成适合前台显示的DTO对象。<br /></strong>这个侧是依据不同的需求去做相应的转换了，一般来说从DB取出来的实体（DAO）直接与DB中的数据对应。而在DTO中我们可以提供许多更加符合实际的字段与方法，使得我们的JSP页面显示更加得心应手！同时也避免了直与DB交互。它们之间的关系，</font>
		<a href="/Jkallen/archive/2006/03/09/34445.aspx">我乱七八糟写过些东西（<font color="#006400">欢迎指正！</font>）<a><font color="#006400"></font></a>。<br /><br /><font color="#006400">“一般人的标签我不看，高手写的东西真的值得借鉴，学习！”</font></a>
<img src ="http://www.blogjava.net/Jkallen/aggbug/35890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-03-17 23:44 <a href="http://www.blogjava.net/Jkallen/archive/2006/03/17/35890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>格式化JSP页面</title><link>http://www.blogjava.net/Jkallen/archive/2006/03/15/35389.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Wed, 15 Mar 2006 04:50:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/03/15/35389.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/35389.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/03/15/35389.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/35389.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/35389.html</trackback:ping><description><![CDATA[<P><FONT color=#006400><FONT color=#000080>JSP页面里面的内容往往是动态显示,当然也一般是从DB中按需取出来的了!<BR>在显示过程也许会碰到这样的问题:<BR><BR>我们通过后台操作将一些文字(通知什么的)传到DB中,其中难免会分段,分行什么的.可是我们从DB中取出来直接在JSP页面显示时出来的却是从头到尾的一片文字!!!<BR><BR>解决方法:<BR>首先应将在DB中的相关显示文字取出来的时候进行一个转换,比如说把里面的回车,换行,空格什么的转换成HTML能识别的标记.也许以下代码正是我们需要的:</FONT><BR></FONT></P>
<P></P>
<P></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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_39_2204_Open_Image onclick="this.style.display='none'; Codehighlighter1_39_2204_Open_Text.style.display='none'; Codehighlighter1_39_2204_Closed_Image.style.display='inline'; Codehighlighter1_39_2204_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_39_2204_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_39_2204_Closed_Text.style.display='none'; Codehighlighter1_39_2204_Open_Image.style.display='inline'; Codehighlighter1_39_2204_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;CheckData&nbsp;</SPAN><SPAN style="COLOR: #0000ff">extends</SPAN><SPAN style="COLOR: #000000">&nbsp;Object&nbsp;</SPAN><SPAN id=Codehighlighter1_39_2204_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_39_2204_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_47_52_Open_Image onclick="this.style.display='none'; Codehighlighter1_47_52_Open_Text.style.display='none'; Codehighlighter1_47_52_Closed_Image.style.display='inline'; Codehighlighter1_47_52_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_47_52_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_47_52_Closed_Text.style.display='none'; Codehighlighter1_47_52_Open_Image.style.display='inline'; Codehighlighter1_47_52_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_47_52_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_47_52_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_53_58_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_53_58_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_59_64_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_59_64_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_65_133_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_65_133_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;CheckData&nbsp;构造器<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@param</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@return</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_159_160_Open_Image onclick="this.style.display='none'; Codehighlighter1_159_160_Open_Text.style.display='none'; Codehighlighter1_159_160_Closed_Image.style.display='inline'; Codehighlighter1_159_160_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_159_160_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_159_160_Closed_Text.style.display='none'; Codehighlighter1_159_160_Open_Image.style.display='inline'; Codehighlighter1_159_160_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;CheckData()&nbsp;</SPAN><SPAN id=Codehighlighter1_159_160_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_159_160_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_168_173_Open_Image onclick="this.style.display='none'; Codehighlighter1_168_173_Open_Text.style.display='none'; Codehighlighter1_168_173_Closed_Image.style.display='inline'; Codehighlighter1_168_173_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_168_173_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_168_173_Closed_Text.style.display='none'; Codehighlighter1_168_173_Open_Image.style.display='inline'; Codehighlighter1_168_173_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_168_173_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_168_173_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_174_179_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_174_179_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_180_185_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_180_185_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_186_362_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_186_362_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;字符串替换，将&nbsp;source&nbsp;中的&nbsp;oldString&nbsp;全部换成&nbsp;newString<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@param</SPAN><SPAN style="COLOR: #008000">&nbsp;source&nbsp;源字符串<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@param</SPAN><SPAN style="COLOR: #008000">&nbsp;oldString&nbsp;老的字符串<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@param</SPAN><SPAN style="COLOR: #008000">&nbsp;newString&nbsp;新的字符串<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@return</SPAN><SPAN style="COLOR: #008000">&nbsp;替换后的字符串<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_448_1063_Open_Image onclick="this.style.display='none'; Codehighlighter1_448_1063_Open_Text.style.display='none'; Codehighlighter1_448_1063_Closed_Image.style.display='inline'; Codehighlighter1_448_1063_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_448_1063_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_448_1063_Closed_Text.style.display='none'; Codehighlighter1_448_1063_Open_Image.style.display='inline'; Codehighlighter1_448_1063_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;String&nbsp;Replace(String&nbsp;source,&nbsp;String&nbsp;oldString,&nbsp;String&nbsp;newString)&nbsp;</SPAN><SPAN id=Codehighlighter1_448_1063_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_448_1063_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;output&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;StringBuffer();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;lengthOfSource&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;source.length();&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;源字符串长度</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;lengthOfOld&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;oldString.length();&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;老字符串长度</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;posStart&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;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;开始搜索位置</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;pos;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;搜索到老字符串的位置</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_764_915_Open_Image onclick="this.style.display='none'; Codehighlighter1_764_915_Open_Text.style.display='none'; Codehighlighter1_764_915_Closed_Image.style.display='inline'; Codehighlighter1_764_915_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_764_915_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_764_915_Closed_Text.style.display='none'; Codehighlighter1_764_915_Open_Image.style.display='inline'; Codehighlighter1_764_915_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000">&nbsp;((pos&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;source.indexOf(oldString,&nbsp;posStart))&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;</SPAN><SPAN id=Codehighlighter1_764_915_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_764_915_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.append(source.substring(posStart,&nbsp;pos));<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.append(newString);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;posStart&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;pos&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;lengthOfOld;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_957_1022_Open_Image onclick="this.style.display='none'; Codehighlighter1_957_1022_Open_Text.style.display='none'; Codehighlighter1_957_1022_Closed_Image.style.display='inline'; Codehighlighter1_957_1022_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_957_1022_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_957_1022_Closed_Text.style.display='none'; Codehighlighter1_957_1022_Open_Image.style.display='inline'; Codehighlighter1_957_1022_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(posStart&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;lengthOfSource)&nbsp;</SPAN><SPAN id=Codehighlighter1_957_1022_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_957_1022_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output.append(source.substring(posStart));<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;output.toString();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_1070_1075_Open_Image onclick="this.style.display='none'; Codehighlighter1_1070_1075_Open_Text.style.display='none'; Codehighlighter1_1070_1075_Closed_Image.style.display='inline'; Codehighlighter1_1070_1075_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1070_1075_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1070_1075_Closed_Text.style.display='none'; Codehighlighter1_1070_1075_Open_Image.style.display='inline'; Codehighlighter1_1070_1075_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1070_1075_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_1070_1075_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_1076_1190_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_1076_1190_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">//*<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;String&nbsp;ReplaceIgnoreCase(String&nbsp;source,&nbsp;String&nbsp;oldString,&nbsp;String&nbsp;newString)&nbsp;{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_1197_1202_Open_Image onclick="this.style.display='none'; Codehighlighter1_1197_1202_Open_Text.style.display='none'; Codehighlighter1_1197_1202_Closed_Image.style.display='inline'; Codehighlighter1_1197_1202_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1197_1202_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1197_1202_Closed_Text.style.display='none'; Codehighlighter1_1197_1202_Open_Image.style.display='inline'; Codehighlighter1_1197_1202_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1197_1202_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_1197_1202_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_1203_1208_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_1203_1208_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_1209_1214_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_1209_1214_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_1215_1340_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_1215_1340_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;将字符串格式化成&nbsp;HTML&nbsp;代码输出<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;只转换特殊字符，适合于&nbsp;HTML&nbsp;中的表单区域<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@param</SPAN><SPAN style="COLOR: #008000">&nbsp;str&nbsp;要格式化的字符串<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@return</SPAN><SPAN style="COLOR: #008000">&nbsp;格式化后的字符串<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_1391_1631_Open_Image onclick="this.style.display='none'; Codehighlighter1_1391_1631_Open_Text.style.display='none'; Codehighlighter1_1391_1631_Closed_Image.style.display='inline'; Codehighlighter1_1391_1631_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1391_1631_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1391_1631_Closed_Text.style.display='none'; Codehighlighter1_1391_1631_Open_Image.style.display='inline'; Codehighlighter1_1391_1631_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;String&nbsp;toHtmlInput(String&nbsp;str)&nbsp;</SPAN><SPAN id=Codehighlighter1_1391_1631_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1391_1631_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(str&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;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;html&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(str);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Replace(html,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&amp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&amp;amp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Replace(html,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&amp;lt;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Replace(html,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&amp;gt;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;html;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_1638_1643_Open_Image onclick="this.style.display='none'; Codehighlighter1_1638_1643_Open_Text.style.display='none'; Codehighlighter1_1638_1643_Closed_Image.style.display='inline'; Codehighlighter1_1638_1643_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1638_1643_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1638_1643_Closed_Text.style.display='none'; Codehighlighter1_1638_1643_Open_Image.style.display='inline'; Codehighlighter1_1638_1643_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1638_1643_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_1638_1643_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_1644_1649_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_1644_1649_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_1650_1655_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_1650_1655_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000">&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN id=Codehighlighter1_1656_1824_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</SPAN><SPAN id=Codehighlighter1_1656_1824_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;将字符串格式化成&nbsp;HTML&nbsp;代码输出<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;除普通特殊字符外，还对空格、制表符和换行进行转换，<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;以将内容格式化输出，<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;适合于&nbsp;HTML&nbsp;中的显示输出<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@param</SPAN><SPAN style="COLOR: #008000">&nbsp;str&nbsp;要格式化的字符串<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</SPAN><SPAN style="COLOR: #808080">@return</SPAN><SPAN style="COLOR: #008000">&nbsp;格式化后的字符串<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_1870_2201_Open_Image onclick="this.style.display='none'; Codehighlighter1_1870_2201_Open_Text.style.display='none'; Codehighlighter1_1870_2201_Closed_Image.style.display='inline'; Codehighlighter1_1870_2201_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1870_2201_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1870_2201_Closed_Text.style.display='none'; Codehighlighter1_1870_2201_Open_Image.style.display='inline'; Codehighlighter1_1870_2201_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;String&nbsp;toHtml(String&nbsp;str)&nbsp;</SPAN><SPAN id=Codehighlighter1_1870_2201_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1870_2201_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(str&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;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;html&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(str);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;toHtmlInput(html);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Replace(html,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">\r\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Replace(html,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&lt;br&gt;\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Replace(html,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">\t</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Replace(html,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;&amp;nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;html;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN></DIV>
<P><BR><FONT color=#000080>好啦,现在你可以直接通过类调用相应的方法(比如说toHtml)后,就成了HTML能识别的格式了.如你在DB中的内容可能如下:<BR><BR>"lilin and you do it "<BR>也许转换后成了<BR>"lilin and you do it&lt;br&gt; "<BR><BR>接下来也许我们会很自然地想到用JS(innerTHML,document.write()等等来处理)来将其输出到JSP中.然而结果却往往不是我们想要的,原因是你在DB中的数据不符合JS的语法,因为在JS中要求所有的输出语句均在同一行中,否则就会出现"未结束的字符串常量"的错误.而我们转换后的仅仅是把DB中数据用HTML标识符来替代,比如说若有一行空白,那么很可能对应的就是一个"&lt;BR&gt;"符号,但是这个符号依然会占一行...(大概是这个意思)<BR><BR>我在JSP页面中,直接将它们out出来的(想一下servlet是怎么直接显示布面内容的^_^,虽然我一向对servlet这样的行为比较反感)!不管我们转换后的字符串中有多少行,全部把它放到out中就可以了!惟一的缺陷是又要在JSP中多一个"&lt;%=%&gt;"符号.<BR><BR>不知道各位有什么别的好方法没有?</FONT></P><img src ="http://www.blogjava.net/Jkallen/aggbug/35389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-03-15 12:50 <a href="http://www.blogjava.net/Jkallen/archive/2006/03/15/35389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>操作property文件</title><link>http://www.blogjava.net/Jkallen/archive/2006/03/11/34855.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Sat, 11 Mar 2006 12:17:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/03/11/34855.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/34855.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/03/11/34855.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/34855.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/34855.html</trackback:ping><description><![CDATA[
		<p>对于一些常量我们经常放到property属性文件中.<br />今天在对其的存取过程中遇到了些问题:<br />1:取的时候掉了内容<br />2:取出后出现乱码<br /><br />首先,我们的property文件大约如下:<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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">#友情链接<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />news.link.inner.href = http:</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">www.baidu.com,</span>
				<span style="COLOR: #008000; TEXT-DECORATION: underline">http://www.baidu.com</span>
				<span style="COLOR: #008000">,</span>
				<span style="COLOR: #008000; TEXT-DECORATION: underline">http://www.baidu.com</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000">.link.inner.title  = 百度1,百度2,百度3</span>
		</div>
		<p>
				<br />1:取的时候掉了内容的解决:<br />当然我这个文件有些特殊,主要是针对跳转下拉菜单的数据设计(用户在日后扩展数据的时候只需在后面直接添加,但必须以","号分开).<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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">private</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> initiallink()<br /><img id="Codehighlighter1_28_1469_Open_Image" onclick="this.style.display='none'; Codehighlighter1_28_1469_Open_Text.style.display='none'; Codehighlighter1_28_1469_Closed_Image.style.display='inline'; Codehighlighter1_28_1469_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_28_1469_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_28_1469_Closed_Text.style.display='none'; Codehighlighter1_28_1469_Open_Image.style.display='inline'; Codehighlighter1_28_1469_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span>
				<span id="Codehighlighter1_28_1469_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_28_1469_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String innerlinkstr </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String innertitlestr </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String outerlinkstr </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String outertitlestr </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        StringTokenizer innerlink </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        StringTokenizer innertitle </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        StringTokenizer outerlink </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        StringTokenizer outertitle </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">null</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        InputStream in </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">this</span>
						<span style="COLOR: #000000">.getClass().getResourceAsStream(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">/conf/netedu.properties</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">);<br /><img id="Codehighlighter1_405_1344_Open_Image" onclick="this.style.display='none'; Codehighlighter1_405_1344_Open_Text.style.display='none'; Codehighlighter1_405_1344_Closed_Image.style.display='inline'; Codehighlighter1_405_1344_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_405_1344_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_405_1344_Closed_Text.style.display='none'; Codehighlighter1_405_1344_Open_Image.style.display='inline'; Codehighlighter1_405_1344_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">try</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_405_1344_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_405_1344_Open_Text">
								<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_423_1270_Open_Image" onclick="this.style.display='none'; Codehighlighter1_423_1270_Open_Text.style.display='none'; Codehighlighter1_423_1270_Closed_Image.style.display='inline'; Codehighlighter1_423_1270_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_423_1270_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_423_1270_Closed_Text.style.display='none'; Codehighlighter1_423_1270_Open_Image.style.display='inline'; Codehighlighter1_423_1270_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
								<span style="COLOR: #0000ff">try</span>
								<span style="COLOR: #000000"> </span>
								<span id="Codehighlighter1_423_1270_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_423_1270_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                Properties props </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> Properties();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                props.load(in);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                innerlinkstr </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> props.getProperty(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">news.link.inner.href</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                innertitlestr </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> props.getProperty(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">new.link.inner.title</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                outerlinkstr </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> props.getProperty(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">news.link.outer.href</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                outertitlestr </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> props.getProperty(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">new.link.outer.title</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                innerlink </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> StringTokenizer(innerlinkstr,</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">,</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                innertitle </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> StringTokenizer(innertitlestr,</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">,</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                outerlink </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> StringTokenizer(outerlinkstr,</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">,</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                outertitle </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> StringTokenizer(outertitlestr,</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">,</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                innermap</span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">this</span>
										<span style="COLOR: #000000">.getlinks(innertitle,innerlink);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                outermap </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">this</span>
										<span style="COLOR: #000000">.getlinks(outertitle,outerlink);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img id="Codehighlighter1_1292_1334_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1292_1334_Open_Text.style.display='none'; Codehighlighter1_1292_1334_Closed_Image.style.display='inline'; Codehighlighter1_1292_1334_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_1292_1334_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1292_1334_Closed_Text.style.display='none'; Codehighlighter1_1292_1334_Open_Image.style.display='inline'; Codehighlighter1_1292_1334_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
								<span style="COLOR: #0000ff">finally</span>
								<span style="COLOR: #000000"> </span>
								<span id="Codehighlighter1_1292_1334_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_1292_1334_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                in.close();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_1375_1466_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1375_1466_Open_Text.style.display='none'; Codehighlighter1_1375_1466_Closed_Image.style.display='inline'; Codehighlighter1_1375_1466_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_1375_1466_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1375_1466_Closed_Text.style.display='none'; Codehighlighter1_1375_1466_Open_Image.style.display='inline'; Codehighlighter1_1375_1466_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">catch</span>
						<span style="COLOR: #000000"> (Exception ex) </span>
						<span id="Codehighlighter1_1375_1466_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_1375_1466_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            log.debug(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">Error to read property in /conf/netedu.properties file</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span>
				</span>
		</div>
		<p>getLinks的方法如下:<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">
				<img id="Codehighlighter1_0_142_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_142_Open_Text.style.display='none'; Codehighlighter1_0_142_Closed_Image.style.display='inline'; Codehighlighter1_0_142_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_0_142_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_142_Closed_Text.style.display='none'; Codehighlighter1_0_142_Open_Image.style.display='inline'; Codehighlighter1_0_142_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span id="Codehighlighter1_0_142_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
				<span id="Codehighlighter1_0_142_Open_Text">
						<span style="COLOR: #008000">/**</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * </span>
						<span style="COLOR: #808080">@param</span>
						<span style="COLOR: #008000"> titleargs 存放链接名称的StringTokenizer<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * </span>
						<span style="COLOR: #808080">@param</span>
						<span style="COLOR: #008000"> linkargs 存放链接地址的StringTokenizer<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * return hashmap(title,link)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * 两个参数应该有相同的长度<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />     </span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">private</span>
				<span style="COLOR: #000000"> HashMap getlinks(StringTokenizer titles, StringTokenizer links)<br /><img id="Codehighlighter1_218_393_Open_Image" onclick="this.style.display='none'; Codehighlighter1_218_393_Open_Text.style.display='none'; Codehighlighter1_218_393_Closed_Image.style.display='inline'; Codehighlighter1_218_393_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_218_393_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_218_393_Closed_Text.style.display='none'; Codehighlighter1_218_393_Open_Image.style.display='inline'; Codehighlighter1_218_393_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span>
				<span id="Codehighlighter1_218_393_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_218_393_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        HashMap results </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> HashMap();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">for</span>
						<span style="COLOR: #000000">(</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> i</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;i</span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">titles.countTokens();i</span>
						<span style="COLOR: #000000">++</span>
						<span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            results.put((String)titles.nextElement(),(String)links.nextElement());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> results;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span>
				</span>
		</div>
		<p>但到JSP显示的时候得到的results的长度为2,也就是只取出了文件中的百度1,百度2(乱码解决后才知道是这二个啦).在Eclipse中调试的时候发在getLinks方法中的for循环确实少执行了次!为什么?(搞不懂!郁闷了半天),不得不将此方法的代码加长些(真受不了)<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">
				<img id="Codehighlighter1_0_142_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_142_Open_Text.style.display='none'; Codehighlighter1_0_142_Closed_Image.style.display='inline'; Codehighlighter1_0_142_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_0_142_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_142_Closed_Text.style.display='none'; Codehighlighter1_0_142_Open_Image.style.display='inline'; Codehighlighter1_0_142_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span id="Codehighlighter1_0_142_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
				<span id="Codehighlighter1_0_142_Open_Text">
						<span style="COLOR: #008000">/**</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * </span>
						<span style="COLOR: #808080">@param</span>
						<span style="COLOR: #008000"> titleargs 存放链接名称的StringTokenizer<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * </span>
						<span style="COLOR: #808080">@param</span>
						<span style="COLOR: #008000"> linkargs 存放链接地址的StringTokenizer<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * return hashmap(title,link)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * 两个参数应该有相同的长度<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />     </span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">private</span>
				<span style="COLOR: #000000"> HashMap getlinks(StringTokenizer titles, StringTokenizer links)<br /><img id="Codehighlighter1_218_578_Open_Image" onclick="this.style.display='none'; Codehighlighter1_218_578_Open_Text.style.display='none'; Codehighlighter1_218_578_Closed_Image.style.display='inline'; Codehighlighter1_218_578_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_218_578_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_218_578_Closed_Text.style.display='none'; Codehighlighter1_218_578_Open_Image.style.display='inline'; Codehighlighter1_218_578_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span>
				<span id="Codehighlighter1_218_578_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_218_578_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        HashMap results </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> HashMap();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> len </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> titles.countTokens();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String[] temp1 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> String[len];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String[] temp2 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> String[len];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">for</span>
						<span style="COLOR: #000000">(</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> i</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;i</span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">len;i</span>
						<span style="COLOR: #000000">++</span>
						<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_392_483_Open_Image" onclick="this.style.display='none'; Codehighlighter1_392_483_Open_Text.style.display='none'; Codehighlighter1_392_483_Closed_Image.style.display='inline'; Codehighlighter1_392_483_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_392_483_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_392_483_Closed_Text.style.display='none'; Codehighlighter1_392_483_Open_Image.style.display='inline'; Codehighlighter1_392_483_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
						<span id="Codehighlighter1_392_483_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_392_483_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            temp1[i] </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> (String)titles.nextElement();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            temp2[i] </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> (String)links.nextElement();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">for</span>
						<span style="COLOR: #000000">(</span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> i</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;i</span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">len;i</span>
						<span style="COLOR: #000000">++</span>
						<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_515_554_Open_Image" onclick="this.style.display='none'; Codehighlighter1_515_554_Open_Text.style.display='none'; Codehighlighter1_515_554_Closed_Image.style.display='inline'; Codehighlighter1_515_554_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_515_554_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_515_554_Closed_Text.style.display='none'; Codehighlighter1_515_554_Open_Image.style.display='inline'; Codehighlighter1_515_554_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
						<span id="Codehighlighter1_515_554_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_515_554_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            results.put(temp1[i],temp2[i]);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> results;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span>
				</span>
		</div>
		<p>这简直一样的处理啊?为什么结果会不同呢?<br /><br />2:乱码处理<br />乱码其实简单,只是开始的时候没注意罢了.我们的机器编码应该是GBK方式的,<font face="Courier New">而在JVM程序中读取Property文件的时候使用的是Unicode编码方式,</font>(我的这些处理过程也没对编码文件请求进行过滤),所以我们可以对其进行对应的编码.<br />我是利用了JDK自带的native2ascii.exe工具.<br />通过-<font face="Courier New">-encoding 来指定其编码方式<br /></font>native2ascii -<font face="Courier New">encoding GBK </font>sourcefilename  destfilename <br />这样你在<br />InputStream in <span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.getClass().getResourceAsStream(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/conf/netedu.properties</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span>语句中用到的<span style="COLOR: #000000">/conf/netedu.properties文件就是destfilename </span>来代替就OK了<br /><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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">#\u5385\u5185\u94fe\u63a5</span>
				<span style="COLOR: #000000">-----</span>
				<span style="COLOR: #000000">\u7528,\u9694\u5f00<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />news.link.inner.href http:</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">www.baidu.com,</span>
				<span style="COLOR: #008000; TEXT-DECORATION: underline">http://www.baidu.com</span>
				<span style="COLOR: #008000">,</span>
				<span style="COLOR: #008000; TEXT-DECORATION: underline">http://www.baidu.com</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000">.link.inner.title \u767e\u5ea61,\u767e\u5ea62,\u767e\u5ea63</span>
		</div>
		<p>
				<br />当然你不可能对着一大堆的16进制看吧,所以可以通过 -reverse 来解码.<br />native2ascii -reverse  sourcefilename  destfilename <br /><br />本人觉得对于大量文本的处理,比如说整个项目的国际化,这样可以通过对整个文件编码来处理,但若只是为了一个下拉框,就显得有些大材小用了(再说对用户来说,他们也得多一步去执行项目里的脚本代码).所以我们可以在叠代标题(这些就是"百度")StringTokenizer的时候对其重新编码.这时可用将getLinks()方法中的<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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">for</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> i</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;i</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">len;i</span>
				<span style="COLOR: #000000">++</span>
				<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_32_147_Open_Image" onclick="this.style.display='none'; Codehighlighter1_32_147_Open_Text.style.display='none'; Codehighlighter1_32_147_Closed_Image.style.display='inline'; Codehighlighter1_32_147_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_32_147_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_32_147_Closed_Text.style.display='none'; Codehighlighter1_32_147_Open_Image.style.display='inline'; Codehighlighter1_32_147_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span>
				<span id="Codehighlighter1_32_147_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_32_147_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            temp1[i] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> (String)titles.nextElement();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            temp2[i] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> (String)links.nextElement();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />        }</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>改成</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">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">for</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> i</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;i</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">len;i</span>
				<span style="COLOR: #000000">++</span>
				<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_25_260_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_260_Open_Text.style.display='none'; Codehighlighter1_25_260_Closed_Image.style.display='inline'; Codehighlighter1_25_260_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_25_260_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_260_Closed_Text.style.display='none'; Codehighlighter1_25_260_Open_Image.style.display='inline'; Codehighlighter1_25_260_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span>
				<span id="Codehighlighter1_25_260_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_25_260_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            String s </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> (String)titles.nextElement();<br /><img id="Codehighlighter1_78_142_Open_Image" onclick="this.style.display='none'; Codehighlighter1_78_142_Open_Text.style.display='none'; Codehighlighter1_78_142_Closed_Image.style.display='inline'; Codehighlighter1_78_142_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_78_142_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_78_142_Closed_Text.style.display='none'; Codehighlighter1_78_142_Open_Image.style.display='inline'; Codehighlighter1_78_142_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
						<span style="COLOR: #0000ff">try</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_78_142_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_78_142_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                temp1[i] </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> String(s.getBytes(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">ISO-8859-1</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">),</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">GBK</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /><img id="Codehighlighter1_183_213_Open_Image" onclick="this.style.display='none'; Codehighlighter1_183_213_Open_Text.style.display='none'; Codehighlighter1_183_213_Closed_Image.style.display='inline'; Codehighlighter1_183_213_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_183_213_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_183_213_Closed_Text.style.display='none'; Codehighlighter1_183_213_Open_Image.style.display='inline'; Codehighlighter1_183_213_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span>
						</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">catch</span>
						<span style="COLOR: #000000"> (UnsupportedEncodingException e) </span>
						<span id="Codehighlighter1_183_213_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_183_213_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                e.printStackTrace();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            temp2[i] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> (String)links.nextElement();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />        }</span>
				</span>
		</div>
		<p>注意:"ISO-8859-1"与"GBK"对应的分别是源编码与目标编码方式.<br /><br />关于native2ascii的详细用法,可以参考相关文档,as this:<br /><font color="#800080">native2ascii - Native-to-ASCII Converter<br />Converts a file with native-encoded characters (characters which are non-Latin 1 and non-Unicode) to one with Unicode-encoded characters. <br />SYNOPSIS<br />native2ascii [options] [inputfile [outputfile]]<br /><br />DESCRIPTION<br />The Java compiler and other Java tools can only process files which contain Latin-1 and/or Unicode-encoded (\udddd notation) characters. native2ascii converts files which contain other character encodings into files containing Latin-1 and/or Unicode-encoded charaters. <br />If outputfile is omitted, standard output is used for output. If, in addition, inputfile is omitted, standard input is used for input. <br /><br />OPTIONS<br />-reverse <br />Perform the reverse operation: convert a file with Latin-1 and/or Unicode encoded characters to one with native-encoded characters. <br /><br /><br />-encoding encoding_name <br />Specify the encoding name which is used by the conversion procedure. The default encoding is taken from System property file.encoding. The encoding_name string must be a string taken from the first column of the table below. <br /><br /><br />-------------------------------------------------------------<br /><br />Converter        Description<br />Class<br />-------------------------------------------------------------<br /><br />8859_1           ISO 8859-1<br />8859_2           ISO 8859-2<br />8859_3           ISO 8859-3<br />8859_4           ISO 8859-4<br />8859_5           ISO 8859-5<br />8859_6           ISO 8859-6<br />8859_7           ISO 8859-7<br />8859_8           ISO 8859-8<br />8859_9           ISO 8859-9<br />Big5             Big5, Traditional Chinese<br />CNS11643         CNS 11643, Traditional Chinese<br />Cp037            USA, Canada(Bilingual, French), Netherlands,<br />                               Portugal, Brazil, Australia<br />Cp1006           IBM AIX Pakistan (Urdu)<br />Cp1025           IBM Multilingual Cyrillic: Bulgaria, Bosnia,<br />                               Herzegovinia, Macedonia(FYR)<br />Cp1026           IBM Latin-5, Turkey<br />Cp1046           IBM Open Edition US EBCDIC<br />Cp1097           IBM Iran(Farsi)/Persian<br />Cp1098           IBM Iran(Farsi)/Persian (PC)<br />Cp1112           IBM Latvia, Lithuania<br />Cp1122           IBM Estonia<br />Cp1123           IBM Ukraine<br />Cp1124           IBM AIX Ukraine<br />Cp1125           IBM Ukraine (PC)<br />Cp1250           Windows Eastern European<br />Cp1251           Windows Cyrillic<br />Cp1252           Windows Latin-1<br />Cp1253           Windows Greek<br />Cp1254           Windows Turkish<br />Cp1255           Windows Hebrew<br />Cp1256           Windows Arabic<br />Cp1257           Windows Baltic<br />Cp1258           Windows Vietnamese<br />Cp1381           IBM OS/2, DOS People's Republic of China (PRC)<br />Cp1383           IBM AIX People's Republic of China (PRC)<br />Cp273            IBM Austria, Germany<br />Cp277            IBM Denmark, Norway<br />Cp278            IBM Finland, Sweden<br />Cp280            IBM Italy<br />Cp284            IBM Catalan/Spain, Spanish Latin America<br />Cp285            IBM United Kingdom, Ireland<br />Cp297            IBM France<br />Cp33722          IBM-eucJP - Japanese (superset of 5050)<br />Cp420            IBM Arabic<br />Cp424            IBM Hebrew<br />Cp437            MS-DOS United States, Australia, New Zealand,<br />                               South Africa<br />Cp500            EBCDIC 500V1<br />Cp737            PC Greek<br />Cp775            PC Baltic<br />Cp838            IBM Thailand extended SBCS<br />Cp850            MS-DOS Latin-1<br />Cp852            MS-DOS Latin-2<br />Cp855            IBM Cyrillic<br />Cp857            IBM Turkish<br />Cp860            MS-DOS Portuguese<br />Cp861            MS-DOS Icelandic<br />Cp862            PC Hebrew<br />Cp863            MS-DOS Canadian French<br />Cp864            PC Arabic<br />Cp865            MS-DOS Nordic<br />Cp866            MS-DOS Russian<br />Cp868            MS-DOS Pakistan<br />Cp869            IBM Modern Greek<br />Cp870            IBM Multilingual Latin-2<br />Cp871            IBM Iceland<br />Cp874            IBM Thai<br />Cp875            IBM Greek<br />Cp918            IBM Pakistan(Urdu)<br />Cp921            IBM Latvia, Lithuania (AIX, DOS)<br />Cp922            IBM Estonia (AIX, DOS)<br />Cp930            Japanese Katakana-Kanji mixed with 4370 UDC,<br />                               superset of 5026<br />Cp933            Korean Mixed with 1880 UDC, superset of 5029<br />Cp935            Simplified Chinese Host mixed with 1880 UDC,<br />                               superset of 5031<br />Cp937            Traditional Chinese Host miexed with 6204 UDC,<br />                         &amp;n0 <br /></font></p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/34855.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-03-11 20:17 <a href="http://www.blogjava.net/Jkallen/archive/2006/03/11/34855.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对DTO,DAO操作的一些肤浅理解</title><link>http://www.blogjava.net/Jkallen/archive/2006/03/09/34445.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Thu, 09 Mar 2006 03:51:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/03/09/34445.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/34445.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/03/09/34445.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/34445.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/34445.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#000080">进新公司快二个星期了,边看边做现在的项目.一头雾水的时候多亏有同事(BOSS)的帮忙.下面是我对系统中DTO,DAO的操作的一些肤浅理解(不知各位在四层化结构的处理中也是如此,也应该一般化吧),恳请各位提出指正.谢谢!<br /><br />业务逻辑处理放在service中,与DB的映射放到对应的entity实体类中,前台DB显示放到DTO中,对DB的操作放到DAO中.在此中可能要用彼此之间的相关转换,比如在DAO中通过相关操作DB中取得的实体可能要转成对应的DTO以便在前台显示.<br /><br />以前台到DB中取一组相关数据getNewsList(String args[])为例(Struts+Hibernate+Spring):<br /><br />1 :  前台触发一请求(getNewsList)事件,通过相关配置映射将其转发到对应的Action中(Struts).<br /><br />2 :  在此Action中找到与此功能模块对应的相关Service类,在service类中应有实现此功能的方(  当然也可能就是getNewsList(String args[])  ).</font>
				<font color="#000080">
						<u>每个模块功能都可能有对应着不同的service.这时每个模块的service可放到各自的XML配置文件中,在得到我们所需service时可能用到如org.springframework.aop.framework.ProxyFactoryBean(Spring)之类的方法.(these contents update on 2006/04/07)<br /></u>
						<br />3 :  service中的此方法调用DAO中对应能实现此功能的方法来直接对DB进行操作,可能在名类似于HibernateNewsDAO(Hibernate)的实例中.通过(Hibernate)对DB的相关持久化操作也就从DB中得到了我们想要的结果(entity).<br /><br />4 :  将结果转换成DTO以便在前台显示,</font>
				<font color="#000080">
						<u>我想这样做的目的应该是为了避免报表查询数据占用缓存,就将查询结果实例化(将从DB中查询出来的数据包装到JAVA对象中)..(these contents update on 2006/04/07)<br /><br /></u>
						<br />5 :  在service中将取回的结果(以DTO形式表现),经过一系统逻辑处理(也可以放到Action中处理),再将此结果返回到显示页面.<br /><br /><br />希望能够得到诸位的指点... ... </font>
		</p>
<img src ="http://www.blogjava.net/Jkallen/aggbug/34445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-03-09 11:51 <a href="http://www.blogjava.net/Jkallen/archive/2006/03/09/34445.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谈select列表框</title><link>http://www.blogjava.net/Jkallen/archive/2006/03/07/34151.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Tue, 07 Mar 2006 13:23:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/03/07/34151.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/34151.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/03/07/34151.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/34151.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/34151.html</trackback:ping><description><![CDATA[<P>在JSP中用到select列表框就如家常便饭般的常见!<BR>以下是我在JSP页面中对此的一些心得(通常会用到Struts+Hebernate+Spring):<BR>我想大概有以下几种方法可以在JSP中得到我们想要的select列表框<BR>1:通过使用HTML中使用普通的select定义<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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">select&nbsp;name</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">select</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">option&nbsp;value</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">aa</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">option</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">option&nbsp;value</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">bb</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">option</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">option&nbsp;value</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">cc</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">option</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">select</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN></DIV>
<P>当然这样可以实现,但是一旦用到相关的DB操作时,代码中的业务,持久化,显示处理各部分的代码就会全部混到一起.<BR><BR>2:通过Struts的logic标签<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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">logic:iterate&nbsp;id</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">types</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;name</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">cglist</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;type</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">com.jbbis.netedu.common.dto.BaseCategoryDTO</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" 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;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">option&nbsp;value</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">&lt;bean:write&nbsp;name="types"&nbsp;property="id"/&gt;</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">bean:write&nbsp;name</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">types</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;property</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">name</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">/&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">option</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">logic:iterate</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN></DIV>
<P>其中types代表了存放集合数据的一个句柄,在option中用到它.type是指你集合中的对象.在下面的option中的一些属性值实际上就是指此对象中的字段.比如说property="id", property="name".logic:iterate中的name属性一般是从session,request中得到的,所以对于cglist,很可能在你的action中,有如下的代码:<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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">request.setAttribute(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">cglist</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,categorys);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>or<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>session.setAttribute(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">cglist</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,categorys);</SPAN></DIV>
<P>然后就是将其在bean:write标签中输出来.这种方法相比前一种对于DB操作显然要方便,但是假如要在select中加入一些JS的话就比较麻烦了,比如要保存它上次的选择,用JS来实现显得有些麻烦!<BR><BR>3:通过Struts的html:select标签,将此标签内置于html:form内(个人认为,最大的好处莫过于它可以自动保存上次的记录了!).<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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">html:select&nbsp;property</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">typeId</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;onchange</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">gotothenews(this.value)</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">html:optionsCollection&nbsp;property</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">typeIds</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;label</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">name</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;value</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">id</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">html:select</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN></DIV><BR>typeId为你Struts的ActionForm中对应的一个属性,typeIds为ActionForm中的一个对象数组.name,id均为此数组中对象的属性.lable在optionsCollection表示在select中要显示的内容,value则表示其对应的值.<BR>要注意的是此对象数组记得要全部初始化,比如说你定义的此对象数组若长度为7而你只实例化了6个,则会出现类似<BR><FONT color=#ff0000>org.apache.jasper.JasperException: No bean specified<BR></FONT>的异常!<BR>此方法不但对DB操作方便,而且在对保存记录方面也做得不错呢.在Struts中JSP页面中使用JS时,还老是出现一些意想不到的错误(不知道为什么).<BR><BR>下次遇到了好的对策再贴上来......<img src ="http://www.blogjava.net/Jkallen/aggbug/34151.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-03-07 21:23 <a href="http://www.blogjava.net/Jkallen/archive/2006/03/07/34151.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>存储大数据</title><link>http://www.blogjava.net/Jkallen/archive/2006/03/05/33671.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Sun, 05 Mar 2006 03:49:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/03/05/33671.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/33671.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/03/05/33671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/33671.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/33671.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在持久化过程中我们往往要用到存储一些大数据的操作，比如说用户的靓照，还有用户的整个数据文件什么的啦！在oracle中提供了blog,clog等字段好象可以提供此功能呢（另外当然也可以直接放到如硬盘等其它存储设备上）。就我个的人一些实践记下：1：存放photo，比如gif的二进制数据：//在一个字节数据中存放此gif文件的二进制数据InputStream&nbsp;in&nbsp;=&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/Jkallen/archive/2006/03/05/33671.html'>阅读全文</a><img src ="http://www.blogjava.net/Jkallen/aggbug/33671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-03-05 11:49 <a href="http://www.blogjava.net/Jkallen/archive/2006/03/05/33671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java代码编写的30条建议（转载） - [转贴] </title><link>http://www.blogjava.net/Jkallen/archive/2006/02/26/32469.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Sun, 26 Feb 2006 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/02/26/32469.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/32469.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/02/26/32469.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/32469.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/32469.html</trackback:ping><description><![CDATA[<P><FONT color=#ff1493>(1)&nbsp;类名首字母应该大写。字段、方法以及对象（句柄）的首字母应小写。对于所有标&nbsp;<BR>识符，其中包含的所有单词都应紧靠在一起，而且大写中间单词的首字母。例如：&nbsp;<BR>ThisIsAClassName&nbsp;<BR>thisIsMethodOrFieldName&nbsp;<BR>若在定义中出现了常数初始化字符，则大写static&nbsp;final基本类型标识符中的所有字母&nbsp;<BR>。这样便可标志出它们属于编译期的常数。&nbsp;<BR>Java包（Package）属于一种特殊情况：它们全都是小写字母，即便中间的单词亦是如此&nbsp;<BR>。对于域名扩展名称，如com，org，net或者edu等，全部都应小写（这也是Java&nbsp;1.1和&nbsp;<BR>Java&nbsp;1.2的区别之一）。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(2)&nbsp;为了常规用途而创建一个类时，请采取"经典形式"，并包含对下述元素的定义：&nbsp;<BR>equals()&nbsp;<BR>hashCode()&nbsp;<BR>toString()&nbsp;<BR>clone()（implement&nbsp;Cloneable）&nbsp;<BR>implement&nbsp;Serializable&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(3)&nbsp;对于自己创建的每一个类，都考虑置入一个main()，其中包含了用于测试那个类的&nbsp;<BR>代码。为使用一个项目中的类，我们没必要删除测试代码。若进行了任何形式的改动，&nbsp;<BR>可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(4)&nbsp;应将方法设计成简要的、功能性单元，用它描述和实现一个不连续的类接口部分。&nbsp;<BR>理想情况下，方法应简明扼要。若长度很大，可考虑通过某种方式将其分割成较短的几&nbsp;<BR>个方法。这样做也便于类内代码的重复使用（有些时候，方法必须非常大，但它们仍应&nbsp;<BR>只做同样的一件事情）。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(5)&nbsp;设计一个类时，请设身处地为客户程序员考虑一下（类的使用方法应该是非常明确&nbsp;<BR>的）。然后，再设身处地为管理代码的人考虑一下（预计有可能进行哪些形式的修改，&nbsp;<BR>想想用什么方法可把它们变得更简单）。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(6)&nbsp;使类尽可能短小精悍，而且只解决一个特定的问题。下面是对类设计的一些建议：&nbsp;<BR>&nbsp;<BR>■一个复杂的开关语句：考虑采用"多形"机制&nbsp;<BR>■数量众多的方法涉及到类型差别极大的操作：考虑用几个类来分别实现&nbsp;<BR>■许多成员变量在特征上有很大的差别：考虑使用几个类&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(7)&nbsp;让一切东西都尽可能地"私有"--private。可使库的某一部分"公共化"（一个方法、&nbsp;<BR>类或者一个字段等等），就永远不能把它拿出。若强行拿出，就可能破坏其他人现有的&nbsp;<BR>代码，使他们不得不重新编写和设计。若只公布自己必须公布的，就可放心大胆地改变&nbsp;<BR>其他任何东西。在多线程环境中，隐私是特别重要的一个因素--只有private字段才能在&nbsp;<BR>非同步使用的情况下受到保护。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(8)&nbsp;谨惕"巨大对象综合症"。对一些习惯于顺序编程思维、且初涉OOP领域的新手，往往&nbsp;<BR>喜欢先写一个顺序执行的程序，再把它嵌入一个或两个巨大的对象里。根据编程原理，&nbsp;<BR>对象表达的应该是应用程序的概念，而非应用程序本身。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(9)&nbsp;若不得已进行一些不太雅观的编程，至少应该把那些代码置于一个类的内部。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(10)&nbsp;任何时候只要发现类与类之间结合得非常紧密，就需要考虑是否采用内部类，从而&nbsp;<BR>改善编码及维护工作（参见第14章14.1.2小节的"用内部类改进代码"）。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(11)&nbsp;尽可能细致地加上注释，并用javadoc注释文档语法生成自己的程序文档。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(12)&nbsp;避免使用"魔术数字"，这些数字很难与代码很好地配合。如以后需要修改它，无疑&nbsp;<BR>会成为一场噩梦，因为根本不知道"100"到底是指"数组大小"还是"其他全然不同的东西&nbsp;<BR>"。所以，我们应创建一个常数，并为其使用具有说服力的描述性名称，并在整个程序中&nbsp;<BR>都采用常数标识符。这样可使程序更易理解以及更易维护。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(13)&nbsp;涉及构建器和异常的时候，通常希望重新丢弃在构建器中捕获的任何异常--如果它&nbsp;<BR>造成了那个对象的创建失败。这样一来，调用者就不会以为那个对象已正确地创建，从&nbsp;<BR>而盲目地继续。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(14)&nbsp;当客户程序员用完对象以后，若你的类要求进行任何清除工作，可考虑将清除代码&nbsp;<BR>置于一个良好定义的方法里，采用类似于cleanup()这样的名字，明确表明自己的用途。&nbsp;<BR>除此以外，可在类内放置一个boolean（布尔）标记，指出对象是否已被清除。在类的f&nbsp;<BR>inalize()方法里，请确定对象已被清除，并已丢弃了从RuntimeException继承的一个类&nbsp;<BR>（如果还没有的话），从而指出一个编程错误。在采取象这样的方案之前，请确定fina&nbsp;<BR>lize()能够在自己的系统中工作（可能需要调用System.runFinalizersOnExit(true)，&nbsp;<BR>从而确保这一行为）。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(15)&nbsp;在一个特定的作用域内，若一个对象必须清除（非由垃圾收集机制处理），请采用&nbsp;<BR>下述方法：初始化对象；若成功，则立即进入一个含有finally从句的try块，开始清除&nbsp;<BR>工作。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(16)&nbsp;若在初始化过程中需要覆盖（取消）finalize()，请记住调用super.finalize()（&nbsp;<BR>若Object属于我们的直接超类，则无此必要）。在对finalize()进行覆盖的过程中，对&nbsp;<BR>super.finalize()的调用应属于最后一个行动，而不应是第一个行动，这样可确保在需&nbsp;<BR>要基础类组件的时候它们依然有效。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(17)&nbsp;创建大小固定的对象集合时，请将它们传输至一个数组（若准备从一个方法里返回&nbsp;<BR>这个集合，更应如此操作）。这样一来，我们就可享受到数组在编译期进行类型检查的&nbsp;<BR>好处。此外，为使用它们，数组的接收者也许并不需要将对象"造型"到数组里。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(18)&nbsp;尽量使用interfaces，不要使用abstract类。若已知某样东西准备成为一个基础类&nbsp;<BR>，那么第一个选择应是将其变成一个interface（接口）。只有在不得不使用方法定义或&nbsp;<BR>者成员变量的时候，才需要将其变成一个abstract（抽象）类。接口主要描述了客户希&nbsp;<BR>望做什么事情，而一个类则致力于（或允许）具体的实施细节。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(19)&nbsp;在构建器内部，只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其&nbsp;<BR>他方法，因为那些方法可能被其他人覆盖或取消，从而在构建过程中产生不可预知的结&nbsp;<BR>果（参见第7章的详细说明）。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(20)&nbsp;对象不应只是简单地容纳一些数据；它们的行为也应得到良好的定义。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(21)&nbsp;在现成类的基础上创建新类时，请首先选择"新建"或"创作"。只有自己的设计要求&nbsp;<BR>必须继承时，才应考虑这方面的问题。若在本来允许新建的场合使用了继承，则整个设&nbsp;<BR>计会变得没有必要地复杂。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(22)&nbsp;用继承及方法覆盖来表示行为间的差异，而用字段表示状态间的区别。一个非常极&nbsp;<BR>端的例子是通过对不同类的继承来表示颜色，这是绝对应该避免的：应直接使用一个"颜&nbsp;<BR>色"字段。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(23)&nbsp;为避免编程时遇到麻烦，请保证在自己类路径指到的任何地方，每个名字都仅对应&nbsp;<BR>一个类。否则，编译器可能先找到同名的另一个类，并报告出错消息。若怀疑自己碰到&nbsp;<BR>了类路径问题，请试试在类路径的每一个起点，搜索一下同名的.class文件。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(24)&nbsp;在Java&nbsp;1.1&nbsp;AWT中使用事件"适配器"时，特别容易碰到一个陷阱。若覆盖了某个适&nbsp;<BR>配器方法，同时拼写方法没有特别讲究，最后的结果就是新添加一个方法，而不是覆盖&nbsp;<BR>现成方法。然而，由于这样做是完全合法的，所以不会从编译器或运行期系统获得任何&nbsp;<BR>出错提示--只不过代码的工作就变得不正常了。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(25)&nbsp;用合理的设计方案消除"伪功能"。也就是说，假若只需要创建类的一个对象，就不&nbsp;<BR>要提前限制自己使用应用程序，并加上一条"只生成其中一个"注释。请考虑将其封装成&nbsp;<BR>一个"独生子"的形式。若在主程序里有大量散乱的代码，用于创建自己的对象，请考虑&nbsp;<BR>采纳一种创造性的方案，将些代码封装起来。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(26)&nbsp;警惕"分析瘫痪"。请记住，无论如何都要提前了解整个项目的状况，再去考察其中&nbsp;<BR>的细节。由于把握了全局，可快速认识自己未知的一些因素，防止在考察细节的时候陷&nbsp;<BR>入"死逻辑"中。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(27)&nbsp;警惕"过早优化"。首先让它运行起来，再考虑变得更快--但只有在自己必须这样做&nbsp;<BR>、而且经证实在某部分代码中的确存在一个性能瓶颈的时候，才应进行优化。除非用专&nbsp;<BR>门的工具分析瓶颈，否则很有可能是在浪费自己的时间。性能提升的隐含代价是自己的&nbsp;<BR>代码变得难于理解，而且难于维护。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(28)&nbsp;请记住，阅读代码的时间比写代码的时间多得多。思路清晰的设计可获得易于理解&nbsp;<BR>的程序，但注释、细致的解释以及一些示例往往具有不可估量的价值。无论对你自己，&nbsp;<BR>还是对后来的人，它们都是相当重要的。如对此仍有怀疑，那么请试想自己试图从联机&nbsp;<BR>Java文档里找出有用信息时碰到的挫折，这样或许能将你说服。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(29)&nbsp;如认为自己已进行了良好的分析、设计或者实施，那么请稍微更换一下思维角度。&nbsp;<BR>试试邀请一些外来人士--并不一定是专家，但可以是来自本公司其他部门的人。请他们&nbsp;<BR>用完全新鲜的眼光考察你的工作，看看是否能找出你一度熟视无睹的问题。采取这种方&nbsp;<BR>式，往往能在最适合修改的阶段找出一些关键性的问题，避免产品发行后再解决问题而&nbsp;<BR>造成的金钱及精力方面的损失。&nbsp;</FONT></P>
<P><BR><FONT color=#ff1493>(30)&nbsp;良好的设计能带来最大的回报。简言之，对于一个特定的问题，通常会花较长的时&nbsp;<BR>间才能找到一种最恰当的解决方案。但一旦找到了正确的方法，以后的工作就轻松多了&nbsp;<BR>，再也不用经历数小时、数天或者数月的痛苦挣扎。我们的努力工作会带来最大的回报&nbsp;<BR>（甚至无可估量）。而且由于自己倾注了大量心血，最终获得一个出色的设计方案，成&nbsp;<BR>功的快感也是令人心动的。坚持抵制草草完工的诱惑--那样做往往得不偿失&nbsp;</FONT></P><img src ="http://www.blogjava.net/Jkallen/aggbug/32469.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-02-26 09:58 <a href="http://www.blogjava.net/Jkallen/archive/2006/02/26/32469.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>国际化(i18n)心得</title><link>http://www.blogjava.net/Jkallen/archive/2006/01/24/29060.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Mon, 23 Jan 2006 16:41:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/01/24/29060.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/29060.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/01/24/29060.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/29060.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/29060.html</trackback:ping><description><![CDATA[<P><FONT color=#000080>本人在国际化中,常遇到的一些问题总结一下： </FONT></P>
<P><FONT color=#000080>存储显示相关信息的property文件，一般来说我们分一份中文与一份E文。然后再将其分别通过一定的命令将其转成unicode码。</FONT></P>
<P><FONT color=#000080>这样在页面显示的时候再将其显示。实际说来如下（我是用STRUTS+JDK1.5）</FONT></P>
<P><FONT color=#000080><STRONG>1：编写peoperty文档</STRONG></FONT></P>
<P><FONT color=#000080>首先用分别在二个方本文档中存放二份不同的property，可能分别如下：</FONT></P>
<P><FONT color=#000080>中文中：errors.required={0} 必须填写... （存为Application_zh.unicode.txt） </FONT></P>
<P><FONT color=#000080>英文中：errors.required={0} required...</FONT></P>
<P><FONT color=#000080>然后将其分别另存为unicode文档~记得不要搞错了，假如你存为其它类型如ANSI，那么你直接打开的时候可能是一团乱码！我就有过这个痛苦的经历，</FONT></P>
<P><FONT color=#000080>先将其放到CVS上，再导来来时却#%……￥*，虽然再写个不是难事，但却真正写起来却也有蛮郁闷的！</FONT></P>
<P><FONT color=#000080><STRONG>2:编译文档</STRONG></FONT></P>
<P><FONT color=#000080>OK，写好二个property文件并存为UNICODE格式的文本文档后，再JDK提供的一个命令将其转化。此工具在JDK_HOME/BIN下面，如下：</FONT></P>
<P><FONT color=#000080>native2ascii -encoding unicode Application_zh.unicode.txt Application_zh.properties</FONT></P>
<P><FONT color=#000080>你若项目比较大，有相当多的property文件，则可以再加一些命令如：</FONT></P>
<P><FONT color=#000080>native2ascii -encoding unicode contract_zh.unicode.txt contract_zh.properties</FONT></P>
<P><FONT color=#000080>将其全部加到一个文档文档里面，再将其保存为可执行脚本，直接运行就OK了，而无须每次都在command下面去native2ascii</FONT></P>
<P><FONT color=#000080>3：显示内容</FONT></P>
<P><FONT color=#000080>终于可以显示内容了，easy!</FONT></P>
<P><FONT color=#000080>&lt;bean:message key="errors.required"/&gt;</FONT></P>
<P><FONT color=#000080>具体用法可以参考STRUTS的相关资料。<BR></FONT></P>
<P><FONT color=#000080>在WEB中我们也可以指定一过滤文件（现以UTF-8为例）：<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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;SetCharacterEncodingFilter&nbsp;</SPAN><SPAN style="COLOR: #0000ff">implements</SPAN><SPAN style="COLOR: #000000">&nbsp;Filter<BR><IMG id=Codehighlighter1_58_382_Open_Image onclick="this.style.display='none'; Codehighlighter1_58_382_Open_Text.style.display='none'; Codehighlighter1_58_382_Closed_Image.style.display='inline'; Codehighlighter1_58_382_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_58_382_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_58_382_Closed_Text.style.display='none'; Codehighlighter1_58_382_Open_Image.style.display='inline'; Codehighlighter1_58_382_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_58_382_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_58_382_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;init(FilterConfig&nbsp;arg0)<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">throws</SPAN><SPAN style="COLOR: #000000">&nbsp;ServletException<BR><IMG id=Codehighlighter1_125_129_Open_Image onclick="this.style.display='none'; Codehighlighter1_125_129_Open_Text.style.display='none'; Codehighlighter1_125_129_Closed_Image.style.display='inline'; Codehighlighter1_125_129_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_125_129_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_125_129_Closed_Text.style.display='none'; Codehighlighter1_125_129_Open_Image.style.display='inline'; Codehighlighter1_125_129_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_125_129_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_125_129_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;doFilter(ServletRequest&nbsp;request,&nbsp;ServletResponse&nbsp;response,<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FilterChain&nbsp;chain)<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">throws</SPAN><SPAN style="COLOR: #000000">&nbsp;IOException,&nbsp;ServletException<BR><IMG id=Codehighlighter1_266_348_Open_Image onclick="this.style.display='none'; Codehighlighter1_266_348_Open_Text.style.display='none'; Codehighlighter1_266_348_Closed_Image.style.display='inline'; Codehighlighter1_266_348_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_266_348_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_266_348_Closed_Text.style.display='none'; Codehighlighter1_266_348_Open_Image.style.display='inline'; Codehighlighter1_266_348_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_266_348_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_266_348_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">UTF-8</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chain.doFilter(request,&nbsp;response);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;destroy()<BR><IMG id=Codehighlighter1_375_379_Open_Image onclick="this.style.display='none'; Codehighlighter1_375_379_Open_Text.style.display='none'; Codehighlighter1_375_379_Closed_Image.style.display='inline'; Codehighlighter1_375_379_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_375_379_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_375_379_Closed_Text.style.display='none'; Codehighlighter1_375_379_Open_Image.style.display='inline'; Codehighlighter1_375_379_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_375_379_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_375_379_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>
<P><BR>就这些吧，以后有新的感觉再补充上来！也欢迎各位指正！</FONT></P>
<P><FONT color=#000080>另外我也向大家推荐一款ECLIPSE下的小插件，编辑java的属性文件，并可以自动存盘为Unicode格式 <BR></FONT><A href="http://propedit.sourceforge.jp/index_en.html"><FONT color=#002c99>http://propedit.sourceforge.jp/index_en.html</FONT></A> <BR></P><img src ="http://www.blogjava.net/Jkallen/aggbug/29060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-01-24 00:41 <a href="http://www.blogjava.net/Jkallen/archive/2006/01/24/29060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EJB3.0新特性与基本结构(2)</title><link>http://www.blogjava.net/Jkallen/archive/2006/01/13/27875.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Fri, 13 Jan 2006 03:12:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/01/13/27875.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/27875.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/01/13/27875.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/27875.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/27875.html</trackback:ping><description><![CDATA[<SPAN class=style8><FONT color=#006600><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#a52a2a>&nbsp;&nbsp;&nbsp; EJB3.0的一些新特性: <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.使用注释,它是JDK1.5中的一个新特性 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b.POJO(plan old java object)服务,在EJB3.0程序设计中,一些老的组件模型已经去掉(如HOME接口),而新 的EJBS和服务对象通过窗口对POJOS的管理来实现,而窗口与POJO之间的通信则由注释来实现. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></FONT><FONT></FONT><FONT color=#a52a2a size=2>还有的再来补充啦.<BR></FONT></FONT></SPAN>
<UL>
<LI class=style6><SPAN class=style9><FONT color=#006600><FONT color=#a52a2a size=2>以下是关于注释学习的一些在线文章.</FONT> </FONT></SPAN>
<UL>
<LI><A href="http://java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html">Guide to Java Annotations (Sun)</A> 
<LI><A href="http://java.sys-con.com/read/48539.htm">Java Annotation Facility - A Primer (JDJ)</A> 
<LI><A href="http://www.onjava.com/pub/a/onjava/2004/04/21/declarative.html">Declarative Programming in Java (Onjava.com)</A> </LI></UL></LI></UL>
<P class=style8>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT color=#a52a2a size=2>下面是EJB3.0中的应该程序包的基本结构 一个发布好EJB包是.ear的形式(实际上他就是JAR包,只是后缀名不同而已).它结构就包有.ejb3, .par, .war, WETA-INF四个文件夹。它们分别如下：</FONT></P>
<P class=style8><FONT color=#a52a2a size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1：&nbsp;&nbsp; META-INF文件夹中有application.xml, MANIFEST.MF二个文件,其中的内容大致如下(相信一看就晓得它是做什么用的啦 ^-^ ): </FONT></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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&lt;?</SPAN><SPAN style="COLOR: #000000">xml&nbsp;version</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1.0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;encoding</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><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">application&nbsp;xmlns</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">http://java.sun.com/xml/ns/j2ee</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;version</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1.4</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>xmlns:xsi</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">http://www.w3.org/2001/XMLSchema-instance</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top>xsi:schemaLocation</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">http://java.sun.com&nbsp;/xml/ns/j2ee&nbsp;http://java.sun.com/xml/ns/j2ee/application_1_4.xsd</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">display</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">name</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">EJB3Trail</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">display</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">name</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">description</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">J2EE&nbsp;Made&nbsp;Easy&nbsp;Trail&nbsp;Map</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">description</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">module</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">ejb</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">entities.par</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">ejb</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">module</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">module</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">ejb</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">business.ejb3</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">ejb</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">module</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">module</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">web</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">web</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">uri</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">web.war</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">web</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">uri</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">context</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">root</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">EJB3Trail</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">context</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">root</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">web</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">module</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN></DIV>
<P class=style8>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT color=#a52a2a size=2>2：每个.PAR则包含了一系列的实体BEAN和一个<CODE>META-INF/persistence.xm</CODE>l配置文件,它包含了对数据库连接,对象映射等的一些设置.</FONT></P>
<P class=style8><FONT color=#a52a2a size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3：每个.EJB3包含了所有的 annotated session beans, message driven beans, JMX beans, message drive POJOs, 以及一些别的对象.</FONT></P>
<P class=style8><FONT color=#a52a2a size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;它没有<CODE>META-INF下的persistence.xm</CODE>l配置文件。</FONT></P>
<P class=style8><FONT color=#a52a2a size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3：.WAR是对WEB文件所打的包，如HTML，JSP，SERVLET等等。</FONT></P>
<P class=style8><FONT color=#a52a2a size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好了暂时就这些，本人也是刚刚接触EJB3.0甚至以对EJB2也不了解。有错误的地方欢迎指正。</FONT></P>
<P class=style7>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#a52a2a size=2> 参考资料：</FONT><A href="http://www.jboss.org">www.jboss.org</A><FONT color=#a52a2a size=2>相关文档</FONT></P>
<P class=style8><BR>&nbsp;</P><img src ="http://www.blogjava.net/Jkallen/aggbug/27875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-01-13 11:12 <a href="http://www.blogjava.net/Jkallen/archive/2006/01/13/27875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ejb3.0在JOSS4.0.3SP1 中的配置(1)</title><link>http://www.blogjava.net/Jkallen/archive/2006/01/13/27833.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Thu, 12 Jan 2006 16:29:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/01/13/27833.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/27833.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/01/13/27833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/27833.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/27833.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;<FONT color=#ffff00>&nbsp;&nbsp;</FONT><FONT color=#000080>&nbsp;&nbsp;&nbsp; 学习EJB3.0都二个多星期了，以前没有学过2.0，因为感觉它太麻烦！所以现在3.0我也是边学边用，快三个星期过去了，感觉接触了不少的东西。不多说了，首先看一下环境的安装配置，以后有时间也将自己在学习EJB3.0的一些心得全部敲上来...<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先到JBOSS的官方下一个JBOSS 4.0.2 or 更高版本的服务器！（JBOSS是第一个也是目前唯一的支持EJB3的SERVER，3.X的不支持EJB3）</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下载地址：</FONT><A href="http://www.jboss.com/products/jbossas/downloads">http://www.jboss.com/products/jbossas/downloads</A></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#ee82ee> </FONT><FONT color=#000080>注意：</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有一种是JAR的包下载，还有一种是ZIP的包。后者不能直接运行EJB3得加以配置，下面分别说明：</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JAR包：在控制台以：java -jar jboss-4.0.x.jar的命令行来启UI SETUP在此你可以选择完全，默认，最小等安装方式，注意的是只有ALL，EJB3.0才支持EJB3哦！千万不要错了！在后面的步骤中可以选择安装的组件（一般可以去CLIENT以减轻SERVER的负荷）。</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZIP包：解压后的ZIP做如下处理，首先得从JBOSS处再下个EJB3包，<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; URL：</FONT><A href="http://www.jboss.com/products/list/downloads#ejb3">&nbsp; http://www.jboss.com/products/list/downloads#ejb3</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#000080>&nbsp;&nbsp; 里面有很多的DOC相当有用哦！</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后将以包解压如下处理：</FONT></P>
<P><FONT color=#ee82ee>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT color=#000080>复制 ejb3.deployer 从 lib/ directory of the distribution to jboss-4.0.x/server/all/deploy&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复制 ejb3-clustered-sfsbcache-service.xml 从 lib/ directory of the distribution to jboss-4.0.x/server/all/deploy&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复制 ejb3-entity-cache-service.xml 从 lib/ directory of the distribution to jboss-4.0.x/server/all/deploy&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复制 ejb3-interceptors-aop.xml 从 lib/ directory of the distribution to jboss-4.0.x/server/all/deploy&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复制 jboss-aop-jdk50.deployer 从 lib/ directory of the distribution to jboss-4.0.x/server/all/deploy&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复制 jboss-xb.jar 从 lib/ directory of the distribution to jboss-4.0.x/server/all/lib&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Remove jboss-aop.deployer/ from jboss-4.0.x/server/all/deploy&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start jboss up with the all configuration run.sh -c all </FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 哈哈中E文相结合效果好哦！ ~~~：）</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以看到EJB3的包全部放到了ALL文件夹下，而不是DEFAULT下面，所以在RUN的时候记得要以：</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; run -c all</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 来启动哦！</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK ，到此你已经拥有了一个可以支持运行EJB3的SERVER了，只要将你的EAR包放到all/deploy 。不出意外你在IE里键入相关配置的URL，相信一切OK！至于ear包的结构与配置下次再托上来，时间不早啦！</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 参考：</FONT><A href="http://www.jboss.org/">http://www.jboss.org/</A><FONT color=#000080>相关文档</FONT></P><img src ="http://www.blogjava.net/Jkallen/aggbug/27833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-01-13 00:29 <a href="http://www.blogjava.net/Jkallen/archive/2006/01/13/27833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java容器集合学习心得</title><link>http://www.blogjava.net/Jkallen/archive/2006/01/12/27653.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Wed, 11 Jan 2006 16:21:00 GMT</pubDate><guid>http://www.blogjava.net/Jkallen/archive/2006/01/12/27653.html</guid><wfw:comment>http://www.blogjava.net/Jkallen/comments/27653.html</wfw:comment><comments>http://www.blogjava.net/Jkallen/archive/2006/01/12/27653.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/Jkallen/comments/commentRss/27653.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jkallen/services/trackbacks/27653.html</trackback:ping><description><![CDATA[<font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在Java中有许多的容器集合。初一看起来有些糊涂，特别是对刚接触Java来说（至少我当初就是这样的）！其实稍微细心，深入一点点就会发现原来一切都是有规律的。我想别的事情也会是如此。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Java中的容器，接口都是由一些接口，抽象类及它们的实现类所组成。而它们全部封装在java.util<br />
包中。<br />
<br />
<br />
</font>
<font color="#008000">
<strong>1：Collection接口。<br />
<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大多数的集合都实现了此接口，它基本方法是add（没有get()方法，实现类中可能有如Arrylist)，添加一对象。添加成功则返回true ,否则返回false。这是与Map不同的地方。还有一些常用的方法如iterator(),size(),toArray()(注：toArray()是返回一对象----object数组，而Arrays----也是java.util下的一个类，有一个asList方法它们通常认为是各集合之间转换的桥梁)等等！具体用法可以参考API文档。<br />
<br />
<br />
<strong>2：Map</strong>(映射)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Map接口跟Collection接口实际上没有半点关系。<font color="#008000">集合中的每一个元素都包含一对键对对象和值对象，集合中没有重复的键对象，值对象可以重复。它的有些实现类能对集合中的键对象进行排序。</font>与Collection截然不同的是，它其中所存取的是一些值与名相对应的数据。也就是一个Key对应一个Value的方式来存储。所以它就有与之对应的一些方法如：put (K key, V value)等等，更多可以参考API文档。<br />
<br />
<font color="#008000"><strong>3：List(列表)</strong></font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;集合中的对象按索引位置排序，可以有重复对象，允许按照对象在集合中的索引位置检索对象<br />
<br />
<strong><font color="#008000">4：Set(集)</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;集合中的对象中按特定的方式排序，并且没有重复对象。它的有些实现类能对集合中的对象<br />
按特定的方式排序<br />
<br />
<strong>5：迭代器：Iterator</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 它是一个接口，只有三个方法hasnext(),next(),remove()只有最后一个是可选的,也就是remove()是可选（在实现的时候）。其可选性也意味着它的实现类中，remove方法是可有可无的。例如，若有一个如下的List 实例。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;Arrylist&nbsp;al&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Arrylist();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;Object[]&nbsp;ob&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;al.toArray();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Arrays.asList(ob);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;Iterator&nbsp;itor&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;list.iterator();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;itor.remove();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">Error&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当调用Ierator itr = list.iterator()方法返回一迭代器的时候，便不支持remove方法，所以当你再使用irt.remove()时程序就是异常！<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用此迭代器要注意的是remove()方法。它所删除的是指指针（暂这么叫着）上次所移经过的位置（Removes from the underlying collection the last element returned by the iterator (optional operation).）。我个人觉得有点象在JDBC中的ResultSet rs = ....;rs.last();rowsCount=rs.getRow();类似呢。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前面所讲的，由于clollection提供了iterator()方法，所以迭代器是很容易实现的！<br />
</font>
<br />
<font color="#008000">
<strong>6：常用实现类的一些继承关系：</strong>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>Collections</strong>，它是Java.util下的一个类。它为我们提供了许多有用的方法，如sort(...),max()等其具体用法可以参考API文档，比如sort(List list);中list内的所有元素都必须实现<font face="Courier New">Comparable接口（All elements in the list must implement the <tt>Comparable</tt> interface）。<br />
</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>
<font color="#008000">
<em>
<strong>Arrylist</strong>
</em>，它是List接口的实现类，而List则是继承于Collection。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><em>LinkedList</em></strong>，它也是间接对Colections的实现。用linkedlist的一些方法如addfirst(),removefirst(),addlast()等等可以用来实现如C中的堆栈，链表。（对于频繁使用插入与删除操作使用linkedlist是个不错的选择，对于经常进行索引操作则arrylist较好）。</font>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#008000"><strong><em>HashSet</em></strong>（散列表），它实现了Set接口，也就意味着它的元素不能有重复值出现。并且在HashSet中没有get()方法，但可以通过iterator()来实现。要注意的是假如要在HasSet中存放一些对象，那么你得重定义hashCode()与equals()二个方法来保不可以存放相同的内容的元素。对于hashcode()所返回的值，hashset用它来计算（通过特定的函数）该对象在内存中的存放位置；后者主要用来判断二个对象的内容是否相等而返回对应的boolen型。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>TreeSet</em></strong>，主要用来对元素进行排序操作，假如要往其中添加对象，则对象得实现</font><font color="#008000" face="Courier New"><font color="#008000">Comparable接口。（假如不要对元素排序，则一般可选用HashSet）。</font><br />
<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000"><strong><em>HashMap</em></strong>，主要特点是存放的一个键值对，一些有用的方法是可返回视图（我觉得可以把它理解为一个集合）如：keyset(),values(),entyset()等。<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#008000">关于对HashMap的小步深入理解：<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#008000">HashMap是由键值对组成的，关于HashMap有二点要注意：1. 它的键只能是一个Object对象。 2. 当二个HashMap用equals方法比较时，实际的比较是它的Key，而与Value无关。<br />
<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#008000">HashMap的主要特点是其底层的物理存放与查找用到了hash函数相关的原理。根据java窗口的查找原理，查找最快的应该是由数组经过工具类Arrays的Arrays.sort方法排序后，再用此工具类的Arrays.binarySearch方法进行查找。对于HashMap的数据查找就是用这个原理实现的，另外由于数组的致命缺点就是它是定长的，而HashMap却是可以动态增加，所以查找过程其实不是将Key本身放在一个Object[]的数组中，而是将与Key有密切相关的信息做为索引Object[]数组的下标，然后根据此下标去Object[]数组中查找数据，这个所谓密切相关的信息就是通过Key.hashCode()函数所产生的数字。可想而知，当HashMap中的Key很多时，各Key所产生的hashCode肯定会有重合的现象发生，为了防止此情况发生，所以根据这个索引在数组中得到的对象并不是最终要查找的数据，查到的其实是一个list列表，在这列表中列出了由于HashMap中的Key通过散列后具有相同hashCode的全部对像。可以想像得到，这个列表中的对像应该是相当少的。对于对Object[]数据下下标定位后，就得到了这个列表，接下来equals函数粉墨登场了，若能返回true则表示此对象已经存在，这时HashMap会用新的值覆盖旧值，若不存在则会做添加操作了。<br />
<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#008000">在HashMap的初始化中，会涉及到二个比较重要的值，也是影响其性能的二个重要值：Object[]的长度(v1)、Object[]中实际已经存放了多少object对象(v2)。在我们初始化HashMap时会有：HashMap(int initialCapacity, float loadFactor) 这个方法，initialCapacity表示object[]的初始化长度，loadFactor表示允许此在Object[]存放数据的百分比(loadFactor＝v2/v1)，系统默认的是0.75（也就是可以存放占object[]数组3/4的数据）。当HashMap里的数据不断增加时，它会自动地按数量级扩展Object[]的长度（应该尽量阻止Object[]的自动增加，这样不但消费资源对于以后的查找、插入操作也不利）。<br />
HashMap结论：对于Key一定要实现hashCode() and equals方法，且尽量要让hashCode散布得均匀。这样才能充分利用Object[]数组，不然，会导致Object[]得不到充分利用，而在Object[index]具体对应的对象list列表中存放很多Key对像，而在list中进行查找操作是比较耗时的。<br />
<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#008000">根据以上原理，HashMap的简单实现：<br />
</font><font color="#008000">import java.util.*;<br />
import com.bruceeckel.util.*;<br />
<br />
public class SimpleHashMap extends AbstractMap {<br />
&nbsp; // Choose a prime number for the hash table<br />
&nbsp; // size, to achieve a uniform distribution:<br />
&nbsp; private static final int SZ = 997;<br />
&nbsp; private LinkedList[] bucket = new LinkedList[SZ];<br />
&nbsp; public Object put(Object key, Object value) {<br />
&nbsp;&nbsp;&nbsp; Object result = null;<br />
&nbsp;&nbsp;&nbsp; int index = key.hashCode() % SZ;<br />
&nbsp;&nbsp;&nbsp; if(index &lt; 0) index = -index;<br />
&nbsp;&nbsp;&nbsp; if(bucket[index] == null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bucket[index] = new LinkedList();<br />
&nbsp;&nbsp;&nbsp; LinkedList pairs = bucket[index];<br />
&nbsp;&nbsp;&nbsp; MPair pair = new MPair(key, value);<br />
&nbsp;&nbsp;&nbsp; ListIterator it = pairs.listIterator();<br />
&nbsp;&nbsp;&nbsp; boolean found = false;<br />
&nbsp;&nbsp;&nbsp; while(it.hasNext()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object iPair = it.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(iPair.equals(pair)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = ((MPair)iPair).getValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; it.set(pair); // Replace old with new<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; found = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; if(!found)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bucket[index].add(pair);<br />
&nbsp;&nbsp;&nbsp; return result;<br />
&nbsp; }<br />
&nbsp; public Object get(Object key) {<br />
&nbsp;&nbsp;&nbsp; int index = key.hashCode() % SZ;<br />
&nbsp;&nbsp;&nbsp; if(index &lt; 0) index = -index;<br />
&nbsp;&nbsp;&nbsp; if(bucket[index] == null) return null;<br />
&nbsp;&nbsp;&nbsp; LinkedList pairs = bucket[index];<br />
&nbsp;&nbsp;&nbsp; MPair match = new MPair(key, null);<br />
&nbsp;&nbsp;&nbsp; ListIterator it = pairs.listIterator();<br />
&nbsp;&nbsp;&nbsp; while(it.hasNext()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object iPair = it.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(iPair.equals(match))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ((MPair)iPair).getValue();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return null;<br />
&nbsp; }<br />
&nbsp; public Set entrySet() {<br />
&nbsp;&nbsp;&nbsp; Set entries = new HashSet();<br />
&nbsp;&nbsp;&nbsp; for(int i = 0; i &lt; bucket.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(bucket[i] == null) continue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator it = bucket[i].iterator();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(it.hasNext())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; entries.add(it.next());<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return entries;<br />
&nbsp; }<br />
&nbsp; public static void main(String[] args) {<br />
&nbsp;&nbsp;&nbsp; SimpleHashMap m = new SimpleHashMap();<br />
&nbsp;&nbsp;&nbsp; Collections2.fill(m, Collections2.geography, 25);<br />
&nbsp;&nbsp;&nbsp; System.out.println(m);<br />
&nbsp; }<br />
} ///:~</font><font color="#008000"><br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>TreeMap</em></strong>，它与HashMap差不多，不过是增加了对元素的排序功能，所以运行速度也就当然没有hashmap来得快了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以下是HashMap的一个实例(在对DB进行操作的时候很有用):<br />
</font>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000;">HashMap&nbsp;valueMap;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000;">//</span><span style="color: #008000;">this&nbsp;function&nbsp;just&nbsp;get&nbsp;key-value&nbsp;form&nbsp;DB&nbsp;,defined&nbsp;by&nbsp;yourself</span><span style="color: #008000;"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000;">valueMap&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;commondb.getElementStringValues(</span><span style="color: #000000;">"</span><span style="color: #000000;">COMMENT_ID</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">content</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.util.Set&nbsp;tempkeys&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;valueMap.entrySet();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.util.Iterator&nbsp;keys&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;tempkeys.iterator();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">while</span><span style="color: #000000;">(keys.hasNext())<br />
<img id="Codehighlighter1_273_390_Open_Image" onclick="this.style.display='none'; Codehighlighter1_273_390_Open_Text.style.display='none'; Codehighlighter1_273_390_Closed_Image.style.display='inline'; Codehighlighter1_273_390_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_273_390_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_273_390_Closed_Text.style.display='none'; Codehighlighter1_273_390_Open_Image.style.display='inline'; Codehighlighter1_273_390_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_273_390_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.blogjava.net/images/dot.gif"  alt="" /></span><span id="Codehighlighter1_273_390_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.util.Map.Entry&nbsp;me</span><span style="color: #000000;">=</span><span style="color: #000000;">(java.util.Map.Entry)keys.next();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;me.getValue();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;key&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;me.getKey();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000;"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff1493">要注意的是entrySet()所返回的每一个元素都是Map.Entry类型的!(<font color="#000000">Returns a collection view of the mappings contained in this map. Each element in the returned collection is a <tt>Map.Entry</tt>.</font>)</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;<br />
<font color="#008000"><strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Properties</em></strong>，继承于hashtable。这个东东相信我们比较的喜欢了（在i18n,ant中可以是常见得很），呵呵。它可以从外部导入属性文件。文件中的键值都是String类型。just like this:<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000;">company</span><span style="color: #000000;">=</span><span style="color: #000000;">study<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />author</span><span style="color: #000000;">=</span><span style="color: #000000;">Jkallen<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />copyright</span><span style="color: #000000;">=</span><span style="color: #000000;">2005</span><span style="color: #000000;">-</span><span style="color: #000000;">2006</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#008000">&nbsp;操作如下：<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.util.</span><span style="color: #000000;">*</span><span style="color: #000000;">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.</span><span style="color: #000000;">*</span><span style="color: #000000;">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;PropTest<br />
<img id="Codehighlighter1_53_545_Open_Image" onclick="this.style.display='none'; Codehighlighter1_53_545_Open_Text.style.display='none'; Codehighlighter1_53_545_Closed_Image.style.display='inline'; Codehighlighter1_53_545_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_53_545_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_53_545_Closed_Text.style.display='none'; Codehighlighter1_53_545_Open_Image.style.display='inline'; Codehighlighter1_53_545_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_53_545_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.blogjava.net/images/dot.gif"  alt="" /></span><span id="Codehighlighter1_53_545_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main(String[]&nbsp;args)<br />
<img id="Codehighlighter1_96_543_Open_Image" onclick="this.style.display='none'; Codehighlighter1_96_543_Open_Text.style.display='none'; Codehighlighter1_96_543_Closed_Image.style.display='inline'; Codehighlighter1_96_543_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_96_543_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_96_543_Closed_Text.style.display='none'; Codehighlighter1_96_543_Open_Image.style.display='inline'; Codehighlighter1_96_543_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_96_543_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.blogjava.net/images/dot.gif"  alt="" /></span><span id="Codehighlighter1_96_543_Open_Text"><span style="color: #000000;">{<br />
<img id="Codehighlighter1_100_165_Open_Image" onclick="this.style.display='none'; Codehighlighter1_100_165_Open_Text.style.display='none'; Codehighlighter1_100_165_Closed_Image.style.display='inline'; Codehighlighter1_100_165_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_100_165_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_100_165_Closed_Text.style.display='none'; Codehighlighter1_100_165_Open_Image.style.display='inline'; Codehighlighter1_100_165_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_100_165_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">/**/</span><span id="Codehighlighter1_100_165_Open_Text"><span style="color: #008000;">/*</span><span style="color: #008000;">Properties&nbsp;pps=System.getProperties();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pps.list(System.out);</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Properties&nbsp;pps</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Properties();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;"><br />
<img id="Codehighlighter1_210_487_Open_Image" onclick="this.style.display='none'; Codehighlighter1_210_487_Open_Text.style.display='none'; Codehighlighter1_210_487_Closed_Image.style.display='inline'; Codehighlighter1_210_487_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_210_487_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_210_487_Closed_Text.style.display='none'; Codehighlighter1_210_487_Open_Image.style.display='inline'; Codehighlighter1_210_487_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_210_487_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.blogjava.net/images/dot.gif"  alt="" /></span><span id="Codehighlighter1_210_487_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pps.load(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileInputStream(</span><span style="color: #000000;">"</span><span style="color: #000000;">winsun.ini</span><span style="color: #000000;">"</span><span style="color: #000000;">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enumeration&nbsp;</span><span style="color: #0000ff;">enum</span><span style="color: #000000;">=</span><span style="color: #000000;">pps.propertyNames();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #0000ff;">enum</span><span style="color: #000000;">.hasMoreElements())<br />
<img id="Codehighlighter1_337_483_Open_Image" onclick="this.style.display='none'; Codehighlighter1_337_483_Open_Text.style.display='none'; Codehighlighter1_337_483_Closed_Image.style.display='inline'; Codehighlighter1_337_483_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_337_483_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_337_483_Closed_Text.style.display='none'; Codehighlighter1_337_483_Open_Image.style.display='inline'; Codehighlighter1_337_483_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_337_483_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.blogjava.net/images/dot.gif"  alt="" /></span><span id="Codehighlighter1_337_483_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;strKey</span><span style="color: #000000;">=</span><span style="color: #000000;">(String)</span><span style="color: #0000ff;">enum</span><span style="color: #000000;">.nextElement();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;strValue</span><span style="color: #000000;">=</span><span style="color: #000000;">pps.getProperty(strKey);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(strKey</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;">strValue);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(Exception&nbsp;e)<br />
<img id="Codehighlighter1_512_540_Open_Image" onclick="this.style.display='none'; Codehighlighter1_512_540_Open_Text.style.display='none'; Codehighlighter1_512_540_Closed_Image.style.display='inline'; Codehighlighter1_512_540_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_512_540_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_512_540_Closed_Text.style.display='none'; Codehighlighter1_512_540_Open_Image.style.display='inline'; Codehighlighter1_512_540_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_512_540_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.blogjava.net/images/dot.gif"  alt="" /></span><span id="Codehighlighter1_512_540_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000"> 其用法可以查看API文档呢。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java中的集合容器确实不少呢...其中有些我们也许一直都用不到，（我也是查看了些相关的资料再加上自己的一些想法整理了一下，希望对相关朋友有用！）可是重要的是知道我们在实现一个功能时应该选用哪种集合类来实现就OK了。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong> 参考资料：JDK1.5文档，Think in Java，孙鑫/张孝祥JAVA资料</strong></font> 
<img src ="http://www.blogjava.net/Jkallen/aggbug/27653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jkallen/" target="_blank">Jkallen</a> 2006-01-12 00:21 <a href="http://www.blogjava.net/Jkallen/archive/2006/01/12/27653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>