﻿<?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-風向逆轉 - 就要爪哇-文章分类-Others</title><link>http://www.blogjava.net/iKingQu/category/8129.html</link><description>Java菜鸟升级中...</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 11:26:03 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 11:26:03 GMT</pubDate><ttl>60</ttl><item><title>[收藏]Web 2.0 编程思想：16条法则</title><link>http://www.blogjava.net/iKingQu/articles/47123.html</link><dc:creator>風向逆轉 - 就要爪哇</dc:creator><author>風向逆轉 - 就要爪哇</author><pubDate>Fri, 19 May 2006 14:42:00 GMT</pubDate><guid>http://www.blogjava.net/iKingQu/articles/47123.html</guid><wfw:comment>http://www.blogjava.net/iKingQu/comments/47123.html</wfw:comment><comments>http://www.blogjava.net/iKingQu/articles/47123.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iKingQu/comments/commentRss/47123.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iKingQu/services/trackbacks/47123.html</trackback:ping><description><![CDATA[来自：blogbeta.com　  indigo<br /><br /><p>原文：<a href="http://web2.wsj2.com/thinking_in_web_20_sixteen_ways.htm">Thinking in Web 2.0: Sixteen Ways</a><br />作者：<a href="http://web2.wsj2.com/">Dion Hinchcliffe</a></p><p>1、在你开始之前，先定一个简单的目标。无论你是一个Web 2.0应用的创建者还是用户，请清晰的构思你的目标。就像“我需要保存一个书签”或者“我准备帮助人们创建可编辑的、共享的页面”这样的目标，让你保持最基础的需求。很多Web 2.0应用的最初吸引之处就是它的简单，避免并隐藏了那些多余的复杂性。站在创建者的立场，可以想象Google的几乎没有内容的主页，还有del.icio.us的简单的线条。从最终用户的角度来看，与之齐名的就是Diggdot.us所提供的初始化页面。你能够并且希望加入更多功能，但是先做好最开始的。在一个时候只做一个特性，完成一个目标。这听起来很太过于单纯化了，但它将使你更加专注，而且你也会明白我的意思。</p><p>2、链接是最基础的思想。这就是我们称之为Web的一个理由。链接是把Web中各种实体连接起来的最基本的元素。你的信息、你的关系、你的导航，甚至是能够被写成URL的任何内容。这里有一个链接应该遵循的规则（其实你也不必严格的遵守）：</p><p>    1. Web上的任何东西都是可以被URI或者是URL所连接的。<br />    2. 把所有的链接都保存为他的原始出处，这样可以让你与任何人、在任何地方、任何时候都能分享它。<br />    3. 第二条中任何时候的前提是链接必须是持久的，它不会在没有任何缘由的情况下被改变或者是消失。<br />    4. 链接应该是人类可读的、稳定的、并且能够自我诠释的。 </p><p>3、数据应该属于创建它的人。是的，你听我的。任何用户创建的、贡献的或分享的都是他们自己的，除非他们很明显的放弃这个权力来让你自由处置。他们贡献到Web上的任何信息都应该是可编辑的、能被删除的、并且能够取消共享，无论在任何时候，只要用户愿意。这也包含了那些间接的数据，像他们所关心的记录、日志、浏览历史、网站访问信息，或者是任何可以被跟踪的信息。所有的网站必须清晰简单的陈诉那些信息是用户创建的，并且提供他们停止创建的方法，甚至是清除的方法。</p><p>4、数据优先，体验与功能其次。无论它是文本、图片、音频还是视频，Web最终还是把这些解析为数据。换句话说，你无法脱离数据去呈现内容。所有这些数据都通过那些易于发现的URL来定位（参见第2条）。通过另一种形式来看待这些，Web最终是名词优先，动词其次，虽然最近正在向动词偏移。来看看名词的例子：日历的条目、家庭照片、股票价格。还有一些动词的例子：定一个约会、共享一张图片、买一份股票。</p><p>5、做好积极分享一切的准备。尽可能的分享一切，你所拥有的所有数据，你所提供的所有服务。鼓励不遵循原有意图的使用，提倡贡献，不要那些需要分享的内容坚持设置为私有的。在分享与发现之后，提供易于使用的浏览方式是显而易见的需求。为什么呢：话说回来，你会从别人的共享之中受益匪浅。注意：这里没有许可让你去侵犯版权保护的法律，你不能够去分享你刻录的DVD或者是拥有商业版权音乐，因为你已经同意不会去分享这些东西。但是你可以发现并分享那些完全开放的媒体内容。一个小小的建议，你可以学习一下Creative Commons license（共创协议）.</p><p>6、Web是一个平台；要让它成长。当然，我们还有很多其他的平台（Windows、Linux、Mac），但是那些已经不是重点了。换句话说，Web是无法脱离的平台，不会中断的平台，你可以通过各种方式去扩展的平台。你在Web上提供的数据与服务将会成为Web一部分，最终你会在Web平台的某一处扮演你的角色。扮演好你的角色并照顾好后来者。</p><p>7、理解与信奉“阶梯性”。现在的Web越来越大，几乎蔓延到了全世界的所有国家，并且已经拥有了10亿用户。我的观点是Web的各个组成部分存在着细微的区别和不同，就像不同地方的用户那样。例如Web的设计部分：易用性永远优先于速度、可靠性、重用性与可集成性。你也应该提供同样的体验给你的用户。它已经被一次又一次的被人们在文档中强调，忠诚的用户很快会成为专业的用户，他们期待更快的速度还有更多。退一步支持他们。同样，也有很多很多的用户会进入这个阶梯的底端，如你所期待的那样。他们可能不会说你的语言，不熟悉你的文化，甚至不知道是如何到这里的。所以你需要向他们表达清楚。</p><p>8、任何东西都是可编辑的。或者是它应该被编织的更好。要确定的是，只有很少的东西是不能被编辑的，剩下的都可以，这是一个可写的Web。这并不意味着原始内容的丢失，而通常被理解为用户能够很容易的对内容加以评论，或者评注内容是在那里发现的。如果你对此应用的好，他们能够比你所想象的做的更多（把内容串起来并且给予原始内容来创建自己的，等等）。</p><p>9、Web上的身份是神圣的。不幸的是，这并不意味着你能够得到更多的隐私（这完全是上个世纪的想法）。但对身份的验证是必要的，你应该感谢那些只需一个邮件地址就能确定你身份的服务。这意味只要你对你的用户承诺了，你就必须保证他们的隐私安全。必要的时候，在这个世界的某处你还得为你的用户挺身而出，向当地的权威挑战。如果你没有打算那样做，你就得把实际情况告诉你的用户。另一方面，如果身份是必须的，不要试图伪装它，不然在某一天我们将会在Web上放弃我们的最后一点点隐私的权利。</p><p>10、了解流行的标准并且使用他们。从一个消费者或者是创作者的立场来看，数据将会以不同的格式与任何一个人交换。同时这样的数据也会反过来促进标准的完善与采纳。这通常意味像RSS、 OPML、XHTML、Simple XML、JSON等简单标准的流行，而避免SOAP、XSD，还有RDF、ATOM也一样，使用它们会给我的内心带来痛苦。请你也为你所钟爱的标准投上一票来支持它们。</p><p>11、遵循无意使用的规律。如果你把非常有趣的数据和服务用广泛使用的格式开放和共享出去，你将会得到你所应得的，其他人也将会基于你的那一块Web平台来构建。或许还会从别人那里得到更多，所以为这个做一下准备比较好。我已记不清有多少次我看到一个播客（podcasting）服务因为流行过渡而导致服务垮掉，就是因为他们被 Slashdot和del.icio.us给收录了。这一点要知道：网络上的大量化意味着如果一个内容非常有趣，即使是一个很小的角落也会得到惊人的访问量。鼓励使用这种方式，它还是非常有价值的，前提是你要有所准备。</p><p>12、粒化你的数据与服务。我们应该在很早以前就明白这些，大规模集成的数据仅仅适用于无需管理的下载与批量操作。分解你的数据，让他们独立成可描述的URL地址，对你的服务也一样。反过来说，你不要创建一些巨大的、复杂的、像圣诞树那样的数据结构和服务。保持简单，要非常的简单。让这些分离的片断能够容易的被重组和发现。</p><p>13、提供用户能够单独受益的数据和服务。渐渐依赖于这种社会化参与是存在风险的，你需要让你的用户有一点点动机来贡献时间、热情和信息，除非他们能够直接受益。社会化分享比个体行为的利益大很多，除非你能够激发用户的个人动机，否这你将无法享受这份厚礼。</p><p>14、让用户组织并过滤信息。不一定是必须的，但却是非常重要的。让用户以他们自己的方式来标注和组织数据，因为你自己是永远无法及时的处理他们的。用户会按照他们自己理解的最佳方式来处理并构建。要保证你的Web服务能够按照用户所需所想的方式来工作。这也是标签（tagging）和通俗分类（folksonomies ）的方式如此成功的主要因素。</p><p>15、提供丰富的用户体验。Web一直都在和本地的应用程序进行着激烈的竞争。为什么？因为本地程序还是感觉上好一些，速度也快一些。但是这不会长久的（确信在5年或者15年后，这种竞争就不存在了）。是的，我在谈论Rich Internet Applications, Ajax, 还有那些不可思议的交互应用。他们让Web成为了一个真正的“无平台”的平台，如果你知道我是怎么想的。</p><p>16、信奉并支持快速改进和反馈。这个通常意味着加快步伐，但也意味着使用轻量级的工具、技术和不要做出那些适得其反的痛苦决定（例如使用一个被层层环绕的Ajax框架来代替可以通过混合来实现的，或者用C++来构建所有的东西，其实使用Ruby会更好一些）。这同时也意味着需要一个非常快速的方式来处理错误报告，修复Bug，释放新版本。从一个用户的角度来看，报告你所发现的任何问题，还有那些你经常抱怨的地方，甚至那些都不是一个Bug。</p><p>当然，Web 2.0是一个极其广泛和深奥的话题，没有一个人能够列举出它的所有重点和特征。如果你对此充满了兴趣，请花一点时间来补充我没有提到的地方。我想这就是Web 2.0的参与性吧！</p><p>原作者的这个标题借鉴了Bruce Eckel的两本畅销书的名字：《Thinking in C++》和《Thinking in Java》，《C++编程思想》与《Java编程思想》，在此说明一下为什么要这样翻译这个题目:)</p><p>indigo 翻译整理</p><p>原文出处：<a href="http://chn.blogbeta.com/119.html">http://chn.blogbeta.com/119.html</a></p><img src ="http://www.blogjava.net/iKingQu/aggbug/47123.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iKingQu/" target="_blank">風向逆轉 - 就要爪哇</a> 2006-05-19 22:42 <a href="http://www.blogjava.net/iKingQu/articles/47123.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]Hibernate学习---通过XDoclet(ant)生成Hibernate映射文件</title><link>http://www.blogjava.net/iKingQu/articles/40312.html</link><dc:creator>風向逆轉 - 就要爪哇</dc:creator><author>風向逆轉 - 就要爪哇</author><pubDate>Mon, 10 Apr 2006 11:42:00 GMT</pubDate><guid>http://www.blogjava.net/iKingQu/articles/40312.html</guid><wfw:comment>http://www.blogjava.net/iKingQu/comments/40312.html</wfw:comment><comments>http://www.blogjava.net/iKingQu/articles/40312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iKingQu/comments/commentRss/40312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iKingQu/services/trackbacks/40312.html</trackback:ping><description><![CDATA[
		<div class="postText">
				<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 />参考资料：Hibernate持久化技术详解</p>
		</div>
<img src ="http://www.blogjava.net/iKingQu/aggbug/40312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iKingQu/" target="_blank">風向逆轉 - 就要爪哇</a> 2006-04-10 19:42 <a href="http://www.blogjava.net/iKingQu/articles/40312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]Struts自定义标签库-----列表显示</title><link>http://www.blogjava.net/iKingQu/articles/39683.html</link><dc:creator>風向逆轉 - 就要爪哇</dc:creator><author>風向逆轉 - 就要爪哇</author><pubDate>Thu, 06 Apr 2006 14:10:00 GMT</pubDate><guid>http://www.blogjava.net/iKingQu/articles/39683.html</guid><wfw:comment>http://www.blogjava.net/iKingQu/comments/39683.html</wfw:comment><comments>http://www.blogjava.net/iKingQu/articles/39683.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iKingQu/comments/commentRss/39683.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iKingQu/services/trackbacks/39683.html</trackback:ping><description><![CDATA[在Struts应用中，到<a href="/Jkallen/archive/2006/03/07/34151.html" target="_blank">JSP页面上显示下拉列表框</a>应该是常有的事。<br />　　在基于是Struts的MVC框架中显示下拉框，有好些方法，用自定义标签库就是其中之一。<br /><br />　　若我们的此下拉框是放在基于HtmlForm中的。Struts可以通过ActionForm来保存其历史记录（不排除我们人为地给此ActionForm清理一下）。然而此自定义标签库却没有此功能！因为它没有通过过ActionForm中的字段来保存其记录。所以选择的时候可以根据自己的需要来定（我觉得在ActionForm中处理List列表框真的是一件非常庞大的工程:) ）。<br /><br />　　JSP中对标签的应用：
<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_53_Open_Image" style="DISPLAY: inline" onclick="this.style.display='none'; Codehighlighter1_2_53_Open_Text.style.display='none'; Codehighlighter1_2_53_Closed_Image.style.display='inline'; Codehighlighter1_2_53_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_2_53_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2_53_Closed_Text.style.display='none'; Codehighlighter1_2_53_Open_Image.style.display='inline'; Codehighlighter1_2_53_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_53_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_53_Open_Text" style="DISPLAY: inline"><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">@ taglib uri</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">/WEB-INF/self-html.tld</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> prefix</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">test</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </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" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div </span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="formitem"</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">span </span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="parameter_name"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">所属栏目：</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">span</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">span </span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="parameter_value"</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">test:category </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="dto.id"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="17"</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">span</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">div</span><span style="COLOR: #0000ff">&gt;</span></div><p>　　<br />　　web.xml配置文件中：</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">&lt;!--</span><span style="COLOR: #008000"> self Tag Library Descriptors </span><span style="COLOR: #008000">--&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">taglib</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">taglib-uri</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/WEB-INF/self-html.tld</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">taglib-uri</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">taglib-location</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/WEB-INF/self-html.tld</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">taglib-location</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">taglib</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />self-html.tld定义：<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">taglib</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">tlibversion</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">1.0</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">tlibversion</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">jspversion</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">1.1</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">jspversion</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">shortname</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">netedu</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">shortname</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><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" /> </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">tag</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">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">category</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">name</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">tagclass</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">com.CategoryTag</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">tagclass</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">bodycontent</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">empty</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bodycontent</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">info</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">tag here</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">info</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">attribute</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">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">name</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">name</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">required</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">false</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">required</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">rtexprvalue</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">false</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">rtexprvalue</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">attribute</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">attribute</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">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">id</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><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" /> </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">tag</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">taglib</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 /><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 id="Codehighlighter1_0_23_Open_Image" style="DISPLAY: inline" onclick="this.style.display='none'; Codehighlighter1_0_23_Open_Text.style.display='none'; Codehighlighter1_0_23_Closed_Image.style.display='inline'; Codehighlighter1_0_23_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_23_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_23_Closed_Text.style.display='none'; Codehighlighter1_0_23_Open_Image.style.display='inline'; Codehighlighter1_0_23_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_23_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_23_Open_Text" style="DISPLAY: inline"><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"> test <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_69_2245_Open_Image" style="DISPLAY: inline" onclick="this.style.display='none'; Codehighlighter1_69_2245_Open_Text.style.display='none'; Codehighlighter1_69_2245_Closed_Image.style.display='inline'; Codehighlighter1_69_2245_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_69_2245_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_69_2245_Closed_Text.style.display='none'; Codehighlighter1_69_2245_Open_Image.style.display='inline'; Codehighlighter1_69_2245_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"> CategoryTag </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> TagSupport </span><span id="Codehighlighter1_69_2245_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_69_2245_Open_Text" style="DISPLAY: inline"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_72_149_Open_Image" onclick="this.style.display='none'; Codehighlighter1_72_149_Open_Text.style.display='none'; Codehighlighter1_72_149_Closed_Image.style.display='inline'; Codehighlighter1_72_149_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_72_149_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_72_149_Closed_Text.style.display='none'; Codehighlighter1_72_149_Open_Image.style.display='inline'; Codehighlighter1_72_149_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span><span id="Codehighlighter1_72_149_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_72_149_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> (non-Javadoc)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * @see javax.servlet.jsp.tagext.Tag#doStartTag()<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_199_2242_Open_Image" onclick="this.style.display='none'; Codehighlighter1_199_2242_Open_Text.style.display='none'; Codehighlighter1_199_2242_Closed_Image.style.display='inline'; Codehighlighter1_199_2242_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_199_2242_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_199_2242_Closed_Text.style.display='none'; Codehighlighter1_199_2242_Open_Image.style.display='inline'; Codehighlighter1_199_2242_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">int</span><span style="COLOR: #000000"> doStartTag() </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> JspException </span><span id="Codehighlighter1_199_2242_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_199_2242_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"> TODO Auto-generated method stub</span><span style="COLOR: #008000"><br /><img id="Codehighlighter1_256_2058_Open_Image" onclick="this.style.display='none'; Codehighlighter1_256_2058_Open_Text.style.display='none'; Codehighlighter1_256_2058_Closed_Image.style.display='inline'; Codehighlighter1_256_2058_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_256_2058_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_256_2058_Closed_Text.style.display='none'; Codehighlighter1_256_2058_Open_Image.style.display='inline'; Codehighlighter1_256_2058_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_256_2058_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_256_2058_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            JspWriter out </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> pageContext.getOut();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">jspwriter是一个隐含对象，用于向jsp网页输出内容。输出的目标由</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            CategoryManager manager </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> getManager();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            List options</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" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(type</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">Constants.SORT_VALUE_ARCHIVE_YEAR)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                options</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">getArchiveYear();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(options</span><span style="COLOR: #000000">==</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">options.size()</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/InBlock.gif" align="top" />                options</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">UMParameterUtil.getParameters(type);<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">(options</span><span style="COLOR: #000000">==</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">options.size()</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/InBlock.gif" align="top" />               options</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> manager.getCategorys(type);<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" />            BaseCategoryDTO dto;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            ParametersDTO param;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            Object o </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" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (bean </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" />                    o </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> RequestUtils.lookup(pageContext, bean, property, scope);<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"> (o </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> (( </span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">(o </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> Integer))</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">( </span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">(o </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> Long))</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">(o </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> List))</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">(o <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">instanceof</span><span style="COLOR: #000000"> Long[])) ))<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> JspException(<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                            </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">bean or property must be instanceof Long or List</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" />            out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;select </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, name));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            out.print(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</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/InBlock.gif" align="top" />            out.print(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">multiple</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, multiple));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            out.print(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">class</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, styleClass));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            out.print(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">size</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, String.valueOf(size)));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            out.print(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">onchange</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, onchange));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            out.print(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">style</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, style));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            out.print(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">disable</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, disable));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">"</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"> (showAll) out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;option value=-1&gt;不限&lt;/option&gt;</span><span style="COLOR: #000000">"</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"> (showNull) out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;option value=''&gt;&lt;/option&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                printOption(out, options, o);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;/select&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img id="Codehighlighter1_2092_2164_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2092_2164_Open_Text.style.display='none'; Codehighlighter1_2092_2164_Closed_Image.style.display='inline'; Codehighlighter1_2092_2164_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2092_2164_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2092_2164_Closed_Text.style.display='none'; Codehighlighter1_2092_2164_Open_Image.style.display='inline'; Codehighlighter1_2092_2164_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"> (IOException ioException) </span><span id="Codehighlighter1_2092_2164_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_2092_2164_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> JspException(ioException.getMessage());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">catch</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> (SKIP_BODY);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">return super.doStartTag();</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><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" /></span></span></div><p><br />　　注：<br />　　有options= manager.getCategorys(type);其中manager是CategoryManager类。此方法返回的一个List就是下拉框的值。具体实现可由我们自己来定义好了！记得在JSP中也有&lt;test:category name="dto..id" type="17"/&gt;，其中的type="17"（比如说可以是传一个DB中的一个表的一个外键）就是此方法中的初始化参数值了（关于此标签库的定义的一些setter and getter方法中也舍了）.既然是库当然要通用。这个type就是通用的一个关键入口，不过显然这样一样可读性打了几分折扣。<br /><br />　　TaglibUtil.attrFormat("name", name)的方法如下：</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_24_223_Open_Image" onclick="this.style.display='none'; Codehighlighter1_24_223_Open_Text.style.display='none'; Codehighlighter1_24_223_Closed_Image.style.display='inline'; Codehighlighter1_24_223_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_24_223_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_24_223_Closed_Text.style.display='none'; Codehighlighter1_24_223_Open_Image.style.display='inline'; Codehighlighter1_24_223_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> TaglibUtil </span><span id="Codehighlighter1_24_223_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_24_223_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_95_221_Open_Image" onclick="this.style.display='none'; Codehighlighter1_95_221_Open_Text.style.display='none'; Codehighlighter1_95_221_Closed_Image.style.display='inline'; Codehighlighter1_95_221_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_95_221_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_95_221_Closed_Text.style.display='none'; Codehighlighter1_95_221_Open_Image.style.display='inline'; Codehighlighter1_95_221_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">static</span><span style="COLOR: #000000"> String attrFormat(String attrName, Object attrValue) </span><span id="Codehighlighter1_95_221_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_95_221_Open_Text"><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"> (attrValue</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: #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"> attrName </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</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"> + attrValue + </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" />     </span><span style="COLOR: #0000ff">else</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: #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/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><br />　　还有一个就是printOption，这个方法应该比较重要了。它负责生成了列表框的选择的值与名称。如：</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_19_934_Open_Image" onclick="this.style.display='none'; Codehighlighter1_19_934_Open_Text.style.display='none'; Codehighlighter1_19_934_Closed_Image.style.display='inline'; Codehighlighter1_19_934_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_19_934_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_19_934_Closed_Text.style.display='none'; Codehighlighter1_19_934_Open_Image.style.display='inline'; Codehighlighter1_19_934_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">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">excludeFlag) </span><span id="Codehighlighter1_19_934_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_19_934_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;option </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">value</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, id<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                            .toString()));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            out.println(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sysValue</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, sysValue));<br /><img id="Codehighlighter1_246_766_Open_Image" onclick="this.style.display='none'; Codehighlighter1_246_766_Open_Text.style.display='none'; Codehighlighter1_246_766_Closed_Image.style.display='inline'; Codehighlighter1_246_766_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_246_766_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_246_766_Closed_Text.style.display='none'; Codehighlighter1_246_766_Open_Image.style.display='inline'; Codehighlighter1_246_766_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(o</span><span style="COLOR: #000000">!=</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_246_766_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_246_766_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_285_365_Open_Image" onclick="this.style.display='none'; Codehighlighter1_285_365_Open_Text.style.display='none'; Codehighlighter1_285_365_Closed_Image.style.display='inline'; Codehighlighter1_285_365_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_285_365_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_285_365_Closed_Text.style.display='none'; Codehighlighter1_285_365_Open_Image.style.display='inline'; Codehighlighter1_285_365_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(o </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> Long)</span><span id="Codehighlighter1_285_365_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_285_365_Open_Text"><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"> (id.equals(o)) out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">selected </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/InBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_429_558_Open_Image" onclick="this.style.display='none'; Codehighlighter1_429_558_Open_Text.style.display='none'; Codehighlighter1_429_558_Closed_Image.style.display='inline'; Codehighlighter1_429_558_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_429_558_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_429_558_Closed_Text.style.display='none'; Codehighlighter1_429_558_Open_Image.style.display='inline'; Codehighlighter1_429_558_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(o </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> List)</span><span id="Codehighlighter1_429_558_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_429_558_Open_Text"><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"> (((List)o).contains(id)) <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                            out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">selected </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: #0000ff">else</span><span style="COLOR: #000000"> <br /><img id="Codehighlighter1_612_752_Open_Image" onclick="this.style.display='none'; Codehighlighter1_612_752_Open_Text.style.display='none'; Codehighlighter1_612_752_Closed_Image.style.display='inline'; Codehighlighter1_612_752_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_612_752_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_612_752_Closed_Text.style.display='none'; Codehighlighter1_612_752_Open_Image.style.display='inline'; Codehighlighter1_612_752_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(o </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> Long[])</span><span id="Codehighlighter1_612_752_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_612_752_Open_Text"><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">(isSelected(id,(Long[])o))<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                                out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">selected </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/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: #008000">//</span><span style="COLOR: #008000"> if (dto.getId().equals(o)) out.print("selected ");</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            out.print(name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;/option&gt;</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" /></span></div><p><br />　　不要郁闷id是如何来的。当然是从options= manager.getCategorys(type)中来的了。</p><p>　　也许说得不是太详细，代码也有些残缺。不过实现过程基本全在这里了。我觉得它非常棒，直到我用到它的onchange,style时！简直在直接跟使用html中的list一样！</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">out.print(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">size</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, String.valueOf(size)));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            out.print(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">onchange</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, onchange));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            out.print(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">style</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, style));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            out.print(TaglibUtil.attrFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">disable</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, disable));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><p><br />　　至少给我们指明了一些自定义标签库的经验！</p><img src ="http://www.blogjava.net/iKingQu/aggbug/39683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iKingQu/" target="_blank">風向逆轉 - 就要爪哇</a> 2006-04-06 22:10 <a href="http://www.blogjava.net/iKingQu/articles/39683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]瞎掰开源派系</title><link>http://www.blogjava.net/iKingQu/articles/39561.html</link><dc:creator>風向逆轉 - 就要爪哇</dc:creator><author>風向逆轉 - 就要爪哇</author><pubDate>Thu, 06 Apr 2006 04:54:00 GMT</pubDate><guid>http://www.blogjava.net/iKingQu/articles/39561.html</guid><wfw:comment>http://www.blogjava.net/iKingQu/comments/39561.html</wfw:comment><comments>http://www.blogjava.net/iKingQu/articles/39561.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iKingQu/comments/commentRss/39561.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iKingQu/services/trackbacks/39561.html</trackback:ping><description><![CDATA[原文转自：javaeye<br /><br /><h3><a name="Java%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6%E5%85%AD%E5%A4%A7%E5%B8%AE%E6%B4%BE-%E4%B8%90%E5%B8%AEApacheSoftwareFoundation"></a>丐帮 - Apache Software Foundation</h3><p>在我开始学习Java的时候，Apache的Jakarta子项目还很弱小，Apache的头牌是Apache HTTPD Server(至今也还是头牌)，如今已经成了江湖第一大帮。Apache势力庞大，背后有众多大厂商的支持，例如IBM资助了apache的好几个 project，Sun则和tomcat合作密切，而BEA砸下重资在Beehive上面。有了官府的支持，Apache理所当然了成了第一大帮。不过 Apache的问题就是组织成员太复杂了，旗下各个project来自三山五岳，良莠不齐，甚至各个门下子弟还经常发生冲突，漫无纪律。例如ant是构建工具头牌，Maven又要抢山头；OJB是持久层头牌，但是Torque还不肯让位，他两位还没有把座次安排好，iBATIS也要加入丐帮......</p><p>对于这样一个没有组织纪律，自己内部互相冲突的丐帮来说，我已经不存什么好感了，除了丐帮还时不时有几个优秀的弟子，例如log4j，ant，common，他注定永远不能成为武林盟主。</p><h3><a name="Java%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6%E5%85%AD%E5%A4%A7%E5%B8%AE%E6%B4%BE-%E5%B0%91%E6%9E%97EclipseFoundation"></a>少林 - Eclipse Foundation</h3><p>Eclipse来头不小，直接来自IBM，并且已经得到业界众多厂商的支持，由于有官府的大力支持，Eclipse成为武林盟主的可能性很大。 Eclipse下属的各个子项目也都身怀绝技，SWT，EMF，GEF，RCP，SDO，每个都是独当一面的好手。最关键的是Eclipse是WSAD的基础，IBM很多开发人员直接为Eclipse开发，这意味着帮派和官府的直接勾结，待到IBM把Rose XDE的功能放入Eclipse，号令天下也是指日可待。</p><h3><a name="Java%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6%E5%85%AD%E5%A4%A7%E5%B8%AE%E6%B4%BE-%E6%AD%A6%E5%BD%93JBossInc"></a>武当 - JBoss Inc</h3><p>JBoss来自草莽，没有丐帮的人多势众，没有少林的官府支持，然而经过自身的努力，已经跻身江湖顶级帮派行列，并且具备了很大的发言权。 JBoss的特点是武功自成一派，旗下每个子项目都具备非常强悍的实力，但是各个子项目又可以组成一个有机的整体，组成一个阵势，发挥意想不到的威力。其中JBoss的独门武功－Hibernate则是威力最大的杀手锏，凭借这一功夫，JBoss虽然不算很大，但是已经成为了Java企业界的巨头之一，能够以自己的声音影响整个武林。</p><h3><a name="Java%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6%E5%85%AD%E5%A4%A7%E5%B8%AE%E6%B4%BE-%E5%B3%A8%E5%B5%8BOpensymphony"></a>峨嵋 - Opensymphony</h3><p>opensymphony不能跟上述三大帮派相比，但是她独具特色，门下弟子不多，但是各个都有绝活，因此在武林当中也站稳了脚跟。例如Webwork成为了下一代MVC框架Struts Ti的核心，OSCache是颇受欢迎的Cache产品，Quartz则是很有名的Java Job软件，Sitemesh也是一款灵巧易用的软件。所有这些虽然都不算重量级武功，但是都独当一面，在整个武林都独树一帜，令人侧目。</p><h3><a name="Java%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6%E5%85%AD%E5%A4%A7%E5%B8%AE%E6%B4%BE-%E9%80%8D%E9%81%A5%E6%B4%BEcodehaus"></a>逍遥派 - codehaus</h3><p>codehaus下面的Groovy, DamageControl, XStream, Nano, Pico, AspectWerkz武功都是犹如凌波微步般, 既实用又优雅，并且该组织背后有有ThoughWorks这样一个技术至上的咨询公司撑腰，所以它的武功都是讲究敏捷，优雅，易用，于繁重的开发工作中体味出一丝丝悠闲的乐趣，真正符合了逍遥的意境。</p><h3><a name="Java%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6%E5%85%AD%E5%A4%A7%E5%B8%AE%E6%B4%BE-%E6%98%86%E4%BB%91objectweb"></a>昆仑 - objectweb</h3><p>objectweb僻处法国，远离IT全球中心，就好像昆仑远处西域一样。因而objectweb也和中原武学有很大的不同，剑走偏锋。例如objectweb的项目偏重于cluster和分布式方面的支持，例如c-jdbc，rmi-jdbc，Perseus，XAPool等等。正是因为他的剑走偏锋，才使得他不那么知名于中原武林，也正是因为剑走偏锋，才使得他独树一帜，保持了自己独有的特色。<br /></p><img src ="http://www.blogjava.net/iKingQu/aggbug/39561.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iKingQu/" target="_blank">風向逆轉 - 就要爪哇</a> 2006-04-06 12:54 <a href="http://www.blogjava.net/iKingQu/articles/39561.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]Hibernate获取数据方式与缓存使用</title><link>http://www.blogjava.net/iKingQu/articles/39560.html</link><dc:creator>風向逆轉 - 就要爪哇</dc:creator><author>風向逆轉 - 就要爪哇</author><pubDate>Thu, 06 Apr 2006 04:46:00 GMT</pubDate><guid>http://www.blogjava.net/iKingQu/articles/39560.html</guid><wfw:comment>http://www.blogjava.net/iKingQu/comments/39560.html</wfw:comment><comments>http://www.blogjava.net/iKingQu/articles/39560.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iKingQu/comments/commentRss/39560.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iKingQu/services/trackbacks/39560.html</trackback:ping><description><![CDATA[
		<p>Hibernate获取数据的方式有不同的几种，其与缓存结合使用的效果也不尽相同，而Hibernate中具体怎么使用缓存其实是我们很关心的一个问题，直接涉及到性能方面。<br />缓存在Hibernate中主要有三个方面：一级缓存、二级缓存和查询缓存；一级缓存在Hibernate中对应的即为session范围的缓存，也就是当session关闭时缓存即被清除，一级缓存在Hibernate中是不可配置的部分；二级缓存在Hibernate中对应的即为SessionFactory范围的缓存，通常来讲SessionFactory的生命周期和应用的生命周期相同，所以可以看成是进程缓存或集群缓存，二级缓存在Hibernate中是可以配置的，可以通过class-cache配置类粒度级别的缓存(class-cache在class中数据发生任何变化的情况下自动更新)，同时也可通过collection-cache配置集合粒度级别的缓存(collection-cache仅在collection中增加了元素或者删除了元素的情况下才自动更新，也就是当collection中元素发生值的变化的情况下它是不会自动更新的)，缓存自然会带来并发的访问问题，这个时候相应的就要根据应用来设置缓存所采用的事务隔离级别，和数据库的事务隔离级别概念基本一样，没什么多介绍的，^_^；查询缓存在Hibernate同样是可配置的，默认是关闭的，可以通过设置cache.use_ query_cache为true来打开查询缓存。根据缓存的通常实现策略，我们可以来理解Hibernate的这三种缓存，缓存的实现通过是通过key/value的Map方式来实现，在Hibernate的一级、二级和查询缓存也同样如此，一级、二级缓存使用的key均为po的主键ID，value即为po实例对象，查询缓存使用的则为查询的条件、查询的参数、查询的页数，value有两种情况，如果采用的是select po.property这样的方式那么value为整个结果集，如采用的是from这样的方式那么value为获取的结果集中各po对象的主键ID，这样的作用很明显，节省内存，^_^<br />简单介绍完Hibernate的缓存后，再结合Hibernate的获取数据方式来说明缓存的具体使用方式，在Hibernate中获取数据常用的方式主要有四种：Session.load、Session.get、Query.list、Query.iterator。<br />1、Session.load<br />      在执行session.load时，Hibernate首先从当前session的一级缓存中获取id对应的值，在获取不到的情况下，将根据该对象是否配置了二级缓存来做相应的处理，如配置了二级缓存，则从二级缓存中获取id对应的值，如仍然获取不到则还需要根据是否配置了延迟加载来决定如何执行，如未配置延迟加载则从数据库中直接获取，在从数据库获取到数据的情况下，Hibernate会相应的填充一级缓存和二级缓存，如配置了延迟加载则直接返回一个代理类，只有在触发代理类的调用时才进行数据库查询的操作。<br />      在这样的情况下我们就可以看到，在session一直打开的情况下，要注意在适当的时候对一级缓存进行刷新操作，通常是在该对象具有单向关联维护的时候，在Hibernate中可以使用象session.clear、session.evict的方式来强制刷新一级缓存。<br />      二级缓存则在数据发生任何变化(新增、更新、删除)的情况下都会自动的被更新。<br />2、Session.get<br />      在执行Session.get时，和Session.load不同的就是在当从缓存中获取不到时，直接从数据库中获取id对应的值。<br />3、Query.list<br />      在执行Query.list时，Hibernate的做法是首先检查是否配置了查询缓存，如配置了则从查询缓存中查找key为查询语句+查询参数+分页条件的值，如获取不到则从数据库中进行获取，从数据库获取到后Hibernate将会相应的填充一级、二级和查询缓存，如获取到的为直接的结果集，则直接返回，如获取到的为一堆id的值，则再根据id获取相应的值(Session.load)，最后形成结果集返回，可以看到，在这样的情况下，list也是有可能造成N次的查询的。<br />      查询缓存在数据发生任何变化的情况下都会被自动的清空。<br />4、Query.iterator<br />      在执行Query.iterator时，和Query.list的不同的在于从数据库获取的处理上，Query.iterator向数据库发起的是select id from这样的语句，也就是它是先获取符合查询条件的id，之后在进行iterator.next调用时才再次发起session.load的调用获取实际的数据。<br />      可见，在拥有二级缓存并且查询参数多变的情况下，Query.iterator会比Query.list更为高效。<br /><br />这四种获取数据的方式都各有适用的场合，要根据实际情况做相应的决定，^_^，最好的方式无疑就是打开show_sql选项看看执行的情况来做分析，系统结构上只用保证这种调整是容易实现的就好了，在cache这个方面的调整自然是非常的容易，只需要调整配置文件里的设置，而查询的方式则可对外部进行屏蔽，这样要根据实际情况调整也非常容易。<br /><br />推荐两篇关于Hibernate缓存机制介绍的文章：<br /><a href="http://gocom.primeton.com/blog/index.php?op=ViewArticle&amp;articleId=467&amp;blogId=37&amp;src=jdon&amp;srcforum=62"><font color="#000080">http://gocom.primeton.com/blog/index.php?op=ViewArticle&amp;articleId=467&amp;blogId=37&amp;src=jdon&amp;srcforum=62</font></a><br /><a href="http://club.gamvan.com/club/clubPage.jsp?ccStyle=0&amp;tID=10456&amp;ccID=37"><font color="#000080">http://club.gamvan.com/club/clubPage.jsp?ccStyle=0&amp;tID=10456&amp;ccID=37</font></a></p>
<img src ="http://www.blogjava.net/iKingQu/aggbug/39560.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iKingQu/" target="_blank">風向逆轉 - 就要爪哇</a> 2006-04-06 12:46 <a href="http://www.blogjava.net/iKingQu/articles/39560.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]dom4j(Version 1.6.1)快速入门</title><link>http://www.blogjava.net/iKingQu/articles/39350.html</link><dc:creator>風向逆轉 - 就要爪哇</dc:creator><author>風向逆轉 - 就要爪哇</author><pubDate>Wed, 05 Apr 2006 04:35:00 GMT</pubDate><guid>http://www.blogjava.net/iKingQu/articles/39350.html</guid><wfw:comment>http://www.blogjava.net/iKingQu/comments/39350.html</wfw:comment><comments>http://www.blogjava.net/iKingQu/articles/39350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iKingQu/comments/commentRss/39350.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iKingQu/services/trackbacks/39350.html</trackback:ping><description><![CDATA[
		<div class="postTitle">Parsing XML</div>
		<br />    或许你想要做的第一件事情就是解析一个某种类型的XML文档，用dom4j很容易做到。请看下面的示范代码：<br /><br />import java.net.URL;<br /><br />import org.dom4j.Document;<br />import org.dom4j.DocumentException;<br />import org.dom4j.io.SAXReader;<br /><br />public class Foo {<br /><br />    public Document parse(URL url) throws DocumentException {<br />        SAXReader reader = new SAXReader();<br />        Document document = reader.read(url);<br />        return document;<br />    }<br />}<br /><br /><h4>使用迭代器（Iterators）</h4><br />    我们可以通过多种方法来操作XML文档，这些方法返回java里标准的迭代器（Iterators）。例如：<br /><br />public void bar(Document document) throws DocumentException {<br />        Element root = document.getRootElement();<br />        //迭代根元素下面的所有子元素<br />        for ( Iterator i = root.elementIterator(); i.hasNext(); ) {<br />            Element element = (Element) i.next();<br />            //处理代码<br />        }<br /><br />        //迭代根元素下面名称为"foo"的子元素<br />        for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) {<br />            Element foo = (Element) i.next();<br />            //处理代码<br />        }<br /><br />        // 迭代根元素的属性attributes）元素<br />        for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {<br />            Attribute attribute = (Attribute) i.next();<br />            // do something<br />        }<br />     }<br /><br /><h4>强大的XPath导航</h4><br />    在dom4j中XPath可以表示出在XML树状结构中的Document或者任意的节点（Node）（例如：Attribute，Element 或者ProcessingInstruction等）。它可以使在文档中复杂的操作仅通过一行代码就可以完成。例如：<br /><br />public void bar(Document document) {<br />        List list = document.selectNodes( "//foo/bar" );<br /><br />        Node node = document.selectSingleNode( "//foo/bar/author" );<br /><br />        String name = node.valueOf( "@name" );<br />    }<br /><br />    如果你想得到一个XHTML文档中的所有超文本链接（hypertext links）你可以使用下面的代码：<br /><br />    public void findLinks(Document document) throws DocumentException {<br /><br />        List list = document.selectNodes( "//a/@href" );<br /><br />        for (Iterator iter = list.iterator(); iter.hasNext(); ) {<br />            Attribute attribute = (Attribute) ite