﻿<?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-IT精英俱乐部</title><link>http://www.blogjava.net/suplayer/</link><description>方便自己查阅，仅此而已！</description><language>zh-cn</language><lastBuildDate>Tue, 04 Aug 2026 09:13:35 GMT</lastBuildDate><pubDate>Tue, 04 Aug 2026 09:13:35 GMT</pubDate><ttl>60</ttl><item><title>RBAC用户角色权限设计方案</title><link>http://www.blogjava.net/suplayer/archive/2011/07/30/355406.html</link><dc:creator>suplayer</dc:creator><author>suplayer</author><pubDate>Sat, 30 Jul 2011 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/suplayer/archive/2011/07/30/355406.html</guid><wfw:comment>http://www.blogjava.net/suplayer/comments/355406.html</wfw:comment><comments>http://www.blogjava.net/suplayer/archive/2011/07/30/355406.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/suplayer/comments/commentRss/355406.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/suplayer/services/trackbacks/355406.html</trackback:ping><description><![CDATA[<a href="http://www.iteye.com/topic/930648">http://www.iteye.com/topic/930648</a><br /><br />
<p>RBAC（Role-Based Access Control，基于角色的访问控制），就是用户通过角色与权限进行关联。简单地说，一个用户拥有若干角色，每一个角色拥有若干权限。这样，就构造成&#8220;用户-角色-权限&#8221;的授权模型。在这种模型中，用户与角色之间，角色与权限之间，一般者是多对多的关系。（如下图）</p>
<p><img alt="" src="http://dl.iteye.com/upload/attachment/425543/d2573c4d-dca7-380f-b2fc-6cda19d6eaf5.jpg" /><br /><br />角色是什么？可以理解为一定数量的权限的集合，权限的载体。例如：一个论坛系统，&#8220;超级管理员&#8221;、&#8220;版主&#8221;都是角色。版主可管理版内的帖子、可管理版内的用户等，这些是权限。要给某个用户授予这些权限，不需要直接将权限授予用户，可将&#8220;版主&#8221;这个角色赋予该用户。&nbsp;</p>
<p>&nbsp;</p>
<p>当用户的数量非常大时，要给系统每个用户逐一授权（授角色），是件非常烦琐的事情。这时，就需要给用户分组，每个用户组内有多个用户。除了可给用户授权外，还可以给用户组授权。这样一来，用户拥有的所有权限，就是用户个人拥有的权限与该用户所在用户组拥有的权限之和。（下图为用户组、用户与角色三者的关联关系）</p>
<p><img alt="" src="http://dl.iteye.com/upload/attachment/425558/90bf9805-c29d-3199-a905-c6ddc7fd4e81.jpg" /></p>
<p>在应用系统中，权限表现成什么？对功能模块的操作，对上传文件的删改，菜单的访问，甚至页面上某个按钮、某个图片的可见性控制，都可属于权限的范畴。有些权限设计，会把功能操作作为一类，而把文件、菜单、页面元素等作为另一类，这样构成&#8220;用户-角色-权限-资源&#8221;的授权模型。而在做数据表建模时，可把功能操作和资源统一管理，也就是都直接与权限表进行关联，这样可能更具便捷性和易扩展性。（见下图）</p>
<p><br /><img alt="" src="http://dl.iteye.com/upload/attachment/425567/53bc63c4-52e6-3c6f-91d8-7e23a9aefe4a.jpg" /><br />请留意权限表中有一列&#8220;权限类型&#8221;，我们根据它的取值来区分是哪一类权限，如&#8220;MENU&#8221;表示菜单的访问权限、&#8220;OPERATION&#8221;表示功能模块的操作权限、&#8220;FILE&#8221;表示文件的修改权限、&#8220;ELEMENT&#8221;表示页面元素的可见性控制等。</p>
<p>&nbsp;</p>
<p>这样设计的好处有二。其一，不需要区分哪些是权限操作，哪些是资源，（实际上，有时候也不好区分，如菜单，把它理解为资源呢还是功能模块权限呢？）。其二，方便扩展，当系统要对新的东西进行权限控制时，我只需要建立一个新的关联表&#8220;权限XX关联表&#8221;，并确定这类权限的权限类型字符串。</p>
<p>&nbsp;</p>
<p>这里要注意的是，权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。（文件、页面权限点、功能操作等同理）。也就是每添加一个菜单，就得同时往这三个表中各插入一条记录。这样，可以不需要权限菜单关联表，让权限表与菜单表直接关联，此时，须在权限表中新增一列用来保存菜单的ID，权限表通过&#8220;权限类型&#8221;和这个ID来区分是种类型下的哪条记录。</p>
<p>&nbsp;</p>
<p>到这里，RBAC权限模型的扩展模型的完整设计图如下：</p>
<p><br /><img class="magplus" title="点击查看原始大小图片" alt="" src="http://dl.iteye.com/upload/attachment/425569/c07d99bc-e19d-302d-8dea-dc98309bf919.jpg" width="760" height="429" /><br />随着系统的日益庞大，为了方便管理，可引入角色组对角色进行分类管理，跟用户组不同，角色组不参与授权。例如：某电网系统的权限管理模块中，角色就是挂在区局下，而区局在这里可当作角色组，它不参于权限分配。另外，为方便上面各主表自身的管理与查找，可采用树型结构，如菜单树、功能树等，当然这些可不需要参于权限分配。</p><img src ="http://www.blogjava.net/suplayer/aggbug/355406.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/suplayer/" target="_blank">suplayer</a> 2011-07-30 16:36 <a href="http://www.blogjava.net/suplayer/archive/2011/07/30/355406.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iBATIS操作Blob与Clob浅析</title><link>http://www.blogjava.net/suplayer/archive/2011/07/30/355405.html</link><dc:creator>suplayer</dc:creator><author>suplayer</author><pubDate>Sat, 30 Jul 2011 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/suplayer/archive/2011/07/30/355405.html</guid><wfw:comment>http://www.blogjava.net/suplayer/comments/355405.html</wfw:comment><comments>http://www.blogjava.net/suplayer/archive/2011/07/30/355405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/suplayer/comments/commentRss/355405.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/suplayer/services/trackbacks/355405.html</trackback:ping><description><![CDATA[<a href="http://developer.51cto.com/art/200907/136668.htm">http://developer.51cto.com/art/200907/136668.htm</a><br /><br /><br />spring 中已经提供了很好的实现，所以这又省去了很多的功夫，接下来看看<font style="background-color: #ffffff">iBATIS</font>是如何支持<font style="background-color: #ffffff">Clob</font>和blob的。 
<p>iBATIS提供了TypeHandler接口，用于处理数据类型，基本的实现类为BaseTypeHandler</p>
<p>在spring 中，提供了AbstractLobTypeHandler作为基础类，并且提供了相应的模版方法，所有的工作由LobHandler处理。</p>
<p>BlobByteArrayTypeHandler 主要用于处理blob类型数据，使用byte[]来映射相应的Blob</p>
<p>ClobStringTypeHandler 用于处理<font style="background-color: #ffffff">Clob</font>类型数据，使用字符串来映射Clob</p>
<p>有一点需要注意的是，AbstractLobTypeHandler中实现了事务支持，需要用来释放相应的资源，所以一定需要在事务环境中进行。</p>
<p>下面是一个简单的例子：</p><pre><ol class="dp-j"><li class="alt"><span class="keyword"><strong><font color="#006699">public</font></strong></span><span>&nbsp;</span><span class="keyword"><strong><font color="#006699">class</font></strong></span><span>&nbsp;Food&nbsp;{&nbsp; &nbsp;</span></li><li><span class="keyword"><strong><font color="#006699">private</font></strong></span><span>&nbsp;String&nbsp;content;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;</span></li><li><span class="keyword"><strong><font color="#006699">private</font></strong></span><span>&nbsp;String&nbsp;id;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;</span></li><li><span class="keyword"><strong><font color="#006699">private</font></strong></span><span>&nbsp;</span><span class="keyword"><strong><font color="#006699">byte</font></strong></span><span>[]&nbsp;image;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;</span></li><li><span class="keyword"><strong><font color="#006699">private</font></strong></span><span>&nbsp;String&nbsp;name;&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp; &nbsp;</span></li><li><span>}&nbsp;&nbsp;</span></li></ol></pre>
<p>xml如下：说明一下，在resultMap中可以通过typeHandler来指定具体的handler.在inline变量中，可以通过handler来定义相应的typeHandler</p><pre><ol class="dp-xml"><li class="alt"><span>﹤sqlMap&nbsp;</span><span class="attribute"><font color="#ff0000">namespace</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"Food"</font></span><span>﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤typeAlias&nbsp;</span><span class="attribute"><font color="#ff0000">alias</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"Food"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">type</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"org.esoft.hdb.bo.Food"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;﹤resultMap&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"foodResult"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">class</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"Food"</font></span><span>﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤result&nbsp;</span><span class="attribute"><font color="#ff0000">property</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"id"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">column</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"C_ID"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;﹤result&nbsp;</span><span class="attribute"><font color="#ff0000">property</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"name"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">column</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"C_NAME"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤result&nbsp;</span><span class="attribute"><font color="#ff0000">property</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"content"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">column</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"C_content"</font></span><span>&nbsp; &nbsp;</span></li><li><span>&nbsp;</span><span class="attribute"><font color="#ff0000">typeHandler</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"org.springframework.orm.ibatis.support.ClobStringTypeHandler"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤result&nbsp;</span><span class="attribute"><font color="#ff0000">property</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"image"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">column</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"C_image"</font></span><span>&nbsp; &nbsp;</span></li><li><span>&nbsp;</span><span class="attribute"><font color="#ff0000">typeHandler</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤/resultMap﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;﹤sql&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"foodFragment"</font></span><span>﹥select&nbsp;C_ID,C_NAME,C_CONTENT,C_IMAGE&nbsp;from&nbsp;T_FOOD﹤/sql﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤select&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"getAll"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">resultMap</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"foodResult"</font></span><span>﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;﹤include&nbsp;</span><span class="attribute"><font color="#ff0000">refid</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"foodFragment"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤/select﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;﹤select&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"selectById"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">parameterClass</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"string"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">resultMap</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"foodResult"</font></span><span>﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤include&nbsp;</span><span class="attribute"><font color="#ff0000">refid</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"foodFragment"</font></span><span>/﹥&nbsp;where&nbsp;</span><span class="attribute"><font color="#ff0000">C_ID</font></span><span>=#id#﹤/select﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤insert&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"insert"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">parameterClass</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"Food"</font></span><span>﹥&nbsp;insert&nbsp;into&nbsp;T_FOOD&nbsp;(&nbsp;C_ID,&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;C_NAME,C_CONTENT,&nbsp;C_IMAGE)&nbsp;values&nbsp;(&nbsp;#id#,&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;#name#,#content,</span><span class="attribute"><font color="#ff0000">handler</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">org</font></span><span>.springframework.orm.ibatis.support.ClobStringTypeHandler#,&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;#image,</span><span class="attribute"><font color="#ff0000">handler</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">org</font></span><span>.springframework.orm.ibatis.support.BlobByteArrayTypeHandler#)&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤/insert﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤update&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"update"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">parameterClass</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"Food"</font></span><span>﹥&nbsp;update&nbsp;T_FOOD&nbsp;set&nbsp;</span><span class="attribute"><font color="#ff0000">C_NAME</font></span><span>&nbsp;=&nbsp;#name#,&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;</span><span class="attribute"><font color="#ff0000">C_CONTENT</font></span><span>&nbsp;=&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;#content,</span><span class="attribute"><font color="#ff0000">handler</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">org</font></span><span>.springframework.orm.ibatis.support.ClobStringTypeHandler#,&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;</span><span class="attribute"><font color="#ff0000">C_IMAGE</font></span><span>&nbsp;=&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;#image,</span><span class="attribute"><font color="#ff0000">handler</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">org</font></span><span>.springframework.orm.ibatis.support.BlobByteArrayTypeHandler#&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;where&nbsp;</span><span class="attribute"><font color="#ff0000">C_ID</font></span><span>&nbsp;=&nbsp;#id#&nbsp;﹤/update﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;﹤delete&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"deleteById"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">parameterClass</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"string"</font></span><span>﹥&nbsp;delete&nbsp;from&nbsp;T_FOOD&nbsp;where&nbsp;</span><span class="attribute"><font color="#ff0000">C_ID</font></span><span>&nbsp;=&nbsp;#id#&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤/delete﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>﹤/sqlMap﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;</span></li><li class="alt"><span>&nbsp;</span></li><li><span>public&nbsp;interface&nbsp;FoodService&nbsp;{&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>void&nbsp;save(Food&nbsp;food);&nbsp; &nbsp;</span></li><li><span>Food&nbsp;get(String&nbsp;id);&nbsp; &nbsp;</span></li><li class="alt"><span>/**&nbsp; &nbsp;</span></li><li><span>*&nbsp;@param&nbsp;food&nbsp; &nbsp;</span></li><li class="alt"><span>*/&nbsp; &nbsp;</span></li><li><span>void&nbsp;update(Food&nbsp;food);&nbsp; &nbsp;</span></li><li class="alt"><span>}&nbsp; &nbsp;</span></li><li><span>&nbsp;</span></li><li class="alt"><span>public&nbsp;class&nbsp;FoodServiceImpl&nbsp;implements&nbsp;FoodService&nbsp;{&nbsp; &nbsp;</span></li><li><span>private&nbsp;FoodDAO&nbsp;foodDAO;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;</span></li><li><span>private&nbsp;DaoCreator&nbsp;creator;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;</span></li><li><span>public&nbsp;void&nbsp;setCreator(DaoCreator&nbsp;creator)&nbsp;{&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute"><font color="#ff0000">this.creator</font></span><span>&nbsp;=&nbsp;creator;&nbsp; &nbsp;</span></li><li><span>}&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;</span></li><li><span>protected&nbsp;FoodDAO&nbsp;getFoodDAO()&nbsp;{&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span class="attribute"><font color="#ff0000">foodDAO</font></span><span>&nbsp;==&nbsp;null)&nbsp;{&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;</span><span class="attribute"><font color="#ff0000">foodDAO</font></span><span>&nbsp;=&nbsp;(FoodDAO)&nbsp;creator.createDao(FoodDAO.class,&nbsp;Food.class);&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;foodDAO;&nbsp; &nbsp;</span></li><li class="alt"><span>}&nbsp; &nbsp;</span></li><li><span>&nbsp;</span></li><li class="alt"><span>public&nbsp;Food&nbsp;get(String&nbsp;id)&nbsp;{&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;getFoodDAO().get(id);&nbsp; &nbsp;</span></li><li class="alt"><span>}&nbsp; &nbsp;</span></li><li><span>public&nbsp;void&nbsp;save(Food&nbsp;food)&nbsp;{&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;getFoodDAO().save(food);&nbsp; &nbsp;</span></li><li><span>}&nbsp; &nbsp;</span></li><li class="alt"><span>public&nbsp;void&nbsp;update(Food&nbsp;food)&nbsp;{&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;getFoodDAO().update(food);&nbsp; &nbsp;</span></li><li class="alt"><span>}&nbsp; &nbsp;</span></li><li><span>&nbsp;</span></li><li class="alt"><span>}&nbsp; &nbsp;</span></li><li><span>&nbsp;</span></li><li class="alt"><span>spring&nbsp;xml&nbsp;配置： &nbsp;</span></li><li><span>&nbsp; &nbsp;</span></li><li class="alt"><span>。。。&nbsp; &nbsp;</span></li><li><span>&nbsp;﹤bean&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"lobHandler"</font></span><span>&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span><span class="attribute"><font color="#ff0000">class</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"org.springframework.jdbc.support.lob.DefaultLobHandler"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤bean&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"transactionManager"</font></span><span>&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;</span><span class="attribute"><font color="#ff0000">class</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"org.springframework.jdbc.datasource.DataSourceTransactionManager"</font></span><span>﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤property&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"dataSource"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">ref</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"dataSource"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;﹤/bean﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;﹤bean&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"sqlMapClient"</font></span><span>&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span><span class="attribute"><font color="#ff0000">class</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"org.springframework.orm.ibatis.SqlMapClientFactoryBean"</font></span><span>﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;﹤property&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"dataSource"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">ref</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"dataSource"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤property&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"configLocation"</font></span><span>﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;﹤value﹥SqlMapConfig.xml﹤/value﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤/property﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;﹤property&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"lobHandler"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">ref</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"lobHandler"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤/bean﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤bean&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"daoCreate"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">class</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"org.esoft.hdb.ibatis.IbatisDaoCreator"</font></span><span>﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;﹤property&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"sqlMapClient"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">ref</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"sqlMapClient"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤/bean﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤bean&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"foodService"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">class</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"org.esoft.hdb.service.FoodServiceImpl"</font></span><span>﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;﹤property&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"creator"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">ref</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"daoCreate"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤/bean﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;﹤aop:config﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤aop:pointcut&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"foodServiceMethods"</font></span><span>&nbsp; &nbsp;</span></li><li><span>&nbsp;</span><span class="attribute"><font color="#ff0000">expression</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"execution(*&nbsp;org.esoft.hdb.service.FoodService.*(..))"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;﹤aop:advisor&nbsp;</span><span class="attribute"><font color="#ff0000">advice-ref</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"txAdvice"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">pointcut-ref</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"foodServiceMethods"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;﹤/aop:config﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤tx:advice&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"txAdvice"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">transaction-manager</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"transactionManager"</font></span><span>﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;﹤tx:attributes﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;﹤tx:method&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"*"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">propagation</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"REQUIRED"</font></span><span>/﹥&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;﹤/tx:attributes﹥&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;﹤/tx:advice﹥&nbsp;&nbsp;</span></li></ol></pre>
<p>简单的测试：</p><pre><ol class="dp-xml"><li class="alt"><span>save&nbsp;:&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;Food&nbsp;</span><span class="attribute"><font color="#ff0000">food</font></span><span>&nbsp;=&nbsp;</span><span class="attribute-value"><font color="#0000ff">new</font></span><span>&nbsp;Food();&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;food.setPk("1");&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;food.setName("food1");&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;BufferedInputStream&nbsp;</span><span class="attribute"><font color="#ff0000">in</font></span><span>&nbsp;=&nbsp;</span><span class="attribute-value"><font color="#0000ff">new</font></span><span>&nbsp;BufferedInputStream(getClass()&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;.getResourceAsStream("/1.gif"));&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;</span><span class="attribute"><font color="#ff0000">b</font></span><span>&nbsp;=&nbsp;</span><span class="attribute-value"><font color="#0000ff">FileCopyUtils</font></span><span>.copyToByteArray(in);&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;food.setImage(b);&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span><span class="attribute"><font color="#ff0000">in</font></span><span>&nbsp;=&nbsp;</span><span class="attribute-value"><font color="#0000ff">new</font></span><span>&nbsp;BufferedInputStream(getClass().getResourceAsStream(&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;"/hibernate.cfg.xml"));&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute"><font color="#ff0000">b</font></span><span>&nbsp;=&nbsp;</span><span class="attribute-value"><font color="#0000ff">FileCopyUtils</font></span><span>.copyToByteArray(in);&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;food.setContent(new&nbsp;String(b));&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;foodService.save(food);&nbsp; &nbsp;</span></li><li><span>update:&nbsp; &nbsp;</span></li><li class="alt"><span>Food&nbsp;</span><span class="attribute"><font color="#ff0000">food</font></span><span>&nbsp;=&nbsp;</span><span class="attribute-value"><font color="#0000ff">foodService</font></span><span>.get("1");&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;BufferedInputStream&nbsp;</span><span class="attribute"><font color="#ff0000">in</font></span><span>&nbsp;=&nbsp;</span><span class="attribute-value"><font color="#0000ff">new</font></span><span>&nbsp;BufferedInputStream(getClass()&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;.getResourceAsStream("/jdbc.properties"));&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;</span><span class="attribute"><font color="#ff0000">b</font></span><span>&nbsp;=&nbsp;</span><span class="attribute-value"><font color="#0000ff">FileCopyUtils</font></span><span>.copyToByteArray(in);&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;food.setContent(new&nbsp;String(b));&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;foodService.update(food);&nbsp; &nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute"><font color="#ff0000">food</font></span><span>&nbsp;=&nbsp;</span><span class="attribute-value"><font color="#0000ff">foodService</font></span><span>.get("1");&nbsp; &nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;assertNotNull(food.getImage()); &nbsp;</span></li></ol></pre><img src ="http://www.blogjava.net/suplayer/aggbug/355405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/suplayer/" target="_blank">suplayer</a> 2011-07-30 16:35 <a href="http://www.blogjava.net/suplayer/archive/2011/07/30/355405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE表解锁</title><link>http://www.blogjava.net/suplayer/archive/2011/07/30/355404.html</link><dc:creator>suplayer</dc:creator><author>suplayer</author><pubDate>Sat, 30 Jul 2011 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/suplayer/archive/2011/07/30/355404.html</guid><wfw:comment>http://www.blogjava.net/suplayer/comments/355404.html</wfw:comment><comments>http://www.blogjava.net/suplayer/archive/2011/07/30/355404.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/suplayer/comments/commentRss/355404.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/suplayer/services/trackbacks/355404.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;sess.sid,<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;sess.serial#,<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;lo.oracle_username,<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;lo.os_user_name,<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;ao.</span><span style="color: #ff00ff">object_name</span><span style="color: #000000">,<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;lo.locked_mode<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;v$locked_object&nbsp;lo,<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;dba_objects&nbsp;ao,<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;v$session&nbsp;sess<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;ao.</span><span style="color: #ff00ff">object_id</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;lo.</span><span style="color: #ff00ff">object_id</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;lo.session_id&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;sess.SID;</span></div>获得未提交的事物的列表和基础信息 <br />然后根据 sessionID和serial#号强制关闭事物：<br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">ALTER</span><span style="color: #000000">&nbsp;SYSTEM&nbsp;</span><span style="color: #0000ff">KILL</span><span style="color: #000000">&nbsp;SESSION&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">9,108</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">'9,108'为sessionID和serial#号,逗号分开</span></div><br /><br /><img src ="http://www.blogjava.net/suplayer/aggbug/355404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/suplayer/" target="_blank">suplayer</a> 2011-07-30 16:33 <a href="http://www.blogjava.net/suplayer/archive/2011/07/30/355404.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UML类与类之间的关系</title><link>http://www.blogjava.net/suplayer/archive/2010/05/07/320267.html</link><dc:creator>suplayer</dc:creator><author>suplayer</author><pubDate>Fri, 07 May 2010 04:47:00 GMT</pubDate><guid>http://www.blogjava.net/suplayer/archive/2010/05/07/320267.html</guid><wfw:comment>http://www.blogjava.net/suplayer/comments/320267.html</wfw:comment><comments>http://www.blogjava.net/suplayer/archive/2010/05/07/320267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/suplayer/comments/commentRss/320267.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/suplayer/services/trackbacks/320267.html</trackback:ping><description><![CDATA[<p><font size="+0">http://www.javaeye.com/topic/37302<br />
<br />
类与类之间的关系对于理解面向对象具有很重要的作用，以前在面试的时候也经常被问到这个问题，在这里我就介绍一下。<br />
类与类之间存在以下关系:<br />
<strong><font color="#3366ff">(1)泛化(Generalization)<br />
(2)关联(Association)<br />
(3)依赖(Dependency)<br />
(4)聚合(Aggregation)</font></strong></font></p>
<p><font size="+0"><strong>UML图与应用代码例子:</strong><br />
<strong><font color="#ff9900" size="4"><font color="#3366ff">1.泛化(Generalization)</font><br />
</font><font color="#339966" size="3">[泛化]</font><br />
</strong>表示类与类之间的继承关系，接口与接口之间的继承关系，或类对接口的实现关系。一般化的关系是从子类指向父类的，与继承或实现的方法相反。<br />
<font color="#339966" size="3"><strong>[具体表现]<br />
</strong></font><font color="#ff0000">父类</font> 父类实例＝new <font color="#ff0000">子类</font>()<br />
<strong><font color="#339966" size="3">[UML图](图1.1)<br />
</font><img alt="" src="http://seagar.javaeye.com/upload/picture/pic/1320/10bfdb9d-ed2d-4226-bab2-f814d2e10a82.jpg " /><img alt="" src="http://seagar.javaeye.com/upload/picture/pic/1320/10bfdb9d-ed2d-4226-bab2-f814d2e10a82.jpg " /><br />
</strong><font size="+0"><font color="#339966"><strong>图1.1</strong></font> <strong>Animal类与Tiger类,Dog类的泛化关系<br />
</strong></font><br />
<strong><font color="#339966" size="3">[代码表现]</font><br />
<br />
</strong></font></p>
<div class="dp-highlighter">
<div class="bar"><strong></div>
<strong>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">class</span><span><strong>&nbsp;Animal{} &nbsp;&nbsp;</strong></span></span><strong> </strong>
    <li><span><span class="keyword">class</span><strong><span>&nbsp;Tiger&nbsp;</span><span class="keyword">extends</span><span>&nbsp;Animal{} &nbsp;&nbsp;</span> </strong></span>
    <li class="alt"><span><span class="keyword">public</span><strong><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Test &nbsp;&nbsp;</span> </strong></span>
    <li><strong><span>{ &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;test() &nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Animal&nbsp;a=</span><span class="keyword">new</span><span>&nbsp;Tiger(); &nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>}&nbsp;&nbsp;</span> </strong></li>
</ol>
</strong></div>
<strong><br />
<font size="+0"><strong><font color="#3366ff" size="4">2.依赖(Dependency)</font><br />
</strong><font color="#339966" size="3"><strong>[依赖]<br />
</strong></font>对于两个相对独立的对象，当一个对象负责构造另一个对象的实例，或者依赖另一个对象的服务时，这两个对象之间主要体现为依赖关系。<br />
<font color="#339966" size="3"><strong>[具体表现]<br />
</strong></font>依赖关系表现在<font color="#ff0000">局部变量</font>，<font color="#ff0000">方法的参数</font>，以及对<font color="#ff0000">静态方法的调用</font><br />
<font color="#339966" size="3"><strong>[现实例子]<br />
</strong></font>比如说你要去拧螺丝，你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作<br />
<font color="#339966" size="3"><strong>[UML表现](图1.2)</strong></font><br />
<p align="left"><strong><img alt="" src="http://seagar.javaeye.com/upload/picture/pic/1319/ec7bca6c-c01a-4772-a91b-3a695773ddfb.jpg " /></strong></p>
<p align="left"><br />
<font size="+0"><strong><font color="#339966">图1.2 </font>Person类与Screwdriver类的依赖关系</strong><br />
<font size="+0"><font color="#339966" size="3"><strong><br />
[代码表现] </strong></font></font></font></p>
<div class="dp-highlighter">
<div class="bar"><strong></div>
<strong>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><strong><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Person{ &nbsp;&nbsp;</span></strong></span><strong> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;拧螺丝&nbsp;*/</span><span>&nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;screw(Screwdriver&nbsp;screwdriver){ &nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;screwdriver.screw(); &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </strong>
    <li><strong><span>}&nbsp;&nbsp;</span> </strong></li>
</ol>
</strong></div>
<strong><br />
<font size="+0"><strong><font color="#3366ff" size="4">3.关联(Association)</font><br />
</strong><font color="#339966" size="3"><strong>[关联]<br />
</strong></font>对于两个相对独立的对象，当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时，这两个对象之间为关联关系。<br />
<font color="#339966" size="3"><strong>[具体表现]<br />
</strong></font>关联关系是使用<font color="#ff0000">实例变量</font>来实现<br />
<font color="#339966" size="3"><strong>[现实例子]<br />
</strong></font>比如客户和订单，每个订单对应特定的客户，每个客户对应一些特定的订单；再例如公司和员工，每个公司对应一些特定的员工，每个员工对应一特定的公司<br />
<strong><font color="#339966" size="3">[UML图] (图1.3)<br />
</font><img alt="" src="http://seagar.javaeye.com/upload/picture/pic/1318/d4b10677-364d-4c34-beb7-416f8e835d8c.jpg " /><br />
<font size="+0"><strong><font color="#339966">图1.3 </font></strong>公司和员工的关联关系</font></strong></font><br />
<font size="+0"><strong><br />
<font color="#339966" size="3">[代码表现]</font></strong>
<div class="dp-highlighter">
<div class="bar"><strong></div>
<strong>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><strong><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Company{ &nbsp;&nbsp;</span></strong></span><strong> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;Employee&nbsp;employee; &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;Employee&nbsp;getEmployee(){ &nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;employee; &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setEmployee(Employee&nbsp;employee){ &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.employee=employee; &nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//公司运作 </span><span>&nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;run(){ &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employee.startWorking(); &nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>}&nbsp;&nbsp;</span> </strong></li>
</ol>
</strong></div>
<strong></strong></font></strong></font><strong><strong><font size="+0"><strong><font color="#3366ff" size="4">(4)聚合（Aggregation）</font><br />
<font color="#339966" size="3">[聚合]<br />
</font></strong>当对象A被加入到对象B中，成为对象B的组成部分时，对象B和对象A之间为聚集关系。聚合是关联关系的一种，是较强的关联关系，强调的是<font color="#ff0000">整体</font>与<font color="#ff0000">部分</font>之间的关系。<br />
<font color="#339966" size="3"><strong>[具体表现]<br />
</strong></font>与关联关系一样，聚合关系也是通过<font color="#ff0000">实例变量</font>来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的，从<font color="#ff0000">语义</font>上才能<font color="#ff0000">更好的区分</font>两者的区别。<br />
<font color="#339966" size="3"><strong>[关联与聚合的区别]</strong></font><br />
(1)关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系，而不是聚合关系，因为人不是由自行车组成的。<br />
聚合关系涉及的两个对象处于不平等的层次上，一个代表整体，一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系，因为主板是电脑的组成部分。<br />
(2)对于具有聚集关系（尤其是强聚集关系）的两个对象，整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在，它的生命周期依赖于整体类的对象的生命周期，当整体消失，部分也就随之消失。比如张三的电脑被偷了，那么电脑的所有组件也不存在了，除非张三事先把一些电脑的组件（比如硬盘和内存）拆了下来。<br />
<font color="#339966" size="3"><strong>[UML图](图1.4)</strong></font><br />
<strong><img alt="" src="http://seagar.javaeye.com/upload/picture/pic/1326/7032798b-36ca-4b89-a462-97ba056cbe48.jpg " /><br />
<font size="+0"><strong><font color="#339966">图1.3 </font><font color="#000000">电脑和组件的聚合关系</font></strong></font><br />
<br />
<font size="+0"><font color="#339966" size="3"><strong>[代码表现]</strong></font></font></strong>
<div class="dp-highlighter">
<div class="bar"><strong></div>
<strong>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><strong><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Computer{ &nbsp;&nbsp;</span></strong></span><strong> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;CPU&nbsp;cpu; &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;CPU&nbsp;getCPU(){ &nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;cpu; &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setCPU(CPU&nbsp;cpu){ &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.cpu=cpu; &nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//开启电脑 </span><span>&nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;start(){ &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//cpu运作 </span><span>&nbsp;&nbsp;</span> </strong>
    <li><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpu.run(); &nbsp;&nbsp;</span> </strong>
    <li class="alt"><strong><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </strong>
    <li><strong><span>}&nbsp;&nbsp;</span> </strong></li>
</ol>
</strong></div>
<strong><br />
</strong></strong></font></strong></strong></strong></strong></strong></strong>
<img src ="http://www.blogjava.net/suplayer/aggbug/320267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/suplayer/" target="_blank">suplayer</a> 2010-05-07 12:47 <a href="http://www.blogjava.net/suplayer/archive/2010/05/07/320267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决eclipse与360启动冲突</title><link>http://www.blogjava.net/suplayer/archive/2010/04/13/318104.html</link><dc:creator>suplayer</dc:creator><author>suplayer</author><pubDate>Tue, 13 Apr 2010 00:45:00 GMT</pubDate><guid>http://www.blogjava.net/suplayer/archive/2010/04/13/318104.html</guid><wfw:comment>http://www.blogjava.net/suplayer/comments/318104.html</wfw:comment><comments>http://www.blogjava.net/suplayer/archive/2010/04/13/318104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/suplayer/comments/commentRss/318104.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/suplayer/services/trackbacks/318104.html</trackback:ping><description><![CDATA[在快捷方式属性-目标里加入 -vm "%JAVA_HOME%/jre/bin/javaw.exe"
<img src ="http://www.blogjava.net/suplayer/aggbug/318104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/suplayer/" target="_blank">suplayer</a> 2010-04-13 08:45 <a href="http://www.blogjava.net/suplayer/archive/2010/04/13/318104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 10g Express Edition字符集修改</title><link>http://www.blogjava.net/suplayer/archive/2009/11/27/303968.html</link><dc:creator>suplayer</dc:creator><author>suplayer</author><pubDate>Fri, 27 Nov 2009 11:56:00 GMT</pubDate><guid>http://www.blogjava.net/suplayer/archive/2009/11/27/303968.html</guid><wfw:comment>http://www.blogjava.net/suplayer/comments/303968.html</wfw:comment><comments>http://www.blogjava.net/suplayer/archive/2009/11/27/303968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/suplayer/comments/commentRss/303968.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/suplayer/services/trackbacks/303968.html</trackback:ping><description><![CDATA[<p>&nbsp;Oracle 10g Express Edition是Oracle专门为小型用户提供的免费版本。Oracle XE十分小巧，安装简单，可供第三方软件开发商部署较小的应用。&nbsp; </p>
<p>　　不过Oracle XE目前的beta2缺省安装的字符集是WE8MSWIN1252，不是中文字符集，并且不能通过直接运行 alter&nbsp; database&nbsp; character&nbsp; set&nbsp; ZHS16GBK&nbsp; ; 来修改，因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改sys用户下的PROPS$表的方法,也会给字符集的变更留下很多潜在的问题.&nbsp; </p>
<p>　　不过在安装完Oracle XE后，可以在sqlplus(即Oracle XE的run SQL command line)中， 进行如下的操作来修改字符集：&nbsp; </p>
<p>connect&nbsp; system/oracle9i&nbsp; as&nbsp; sysdba&nbsp; </p>
<p>shutdown&nbsp; immediate&nbsp; </p>
<p>startup&nbsp; mount&nbsp; </p>
<p>alter&nbsp; system&nbsp; enable&nbsp; restricted&nbsp; session&nbsp; ;&nbsp; </p>
<p>alter&nbsp; system&nbsp; set&nbsp; JOB_QUEUE_PROCESSES=0;&nbsp; </p>
<p>alter&nbsp; system&nbsp; set&nbsp; AQ_TM_PROCESSES=0;&nbsp; </p>
<p>alter&nbsp; database&nbsp; open&nbsp; ;&nbsp; </p>
<p>alter&nbsp; database&nbsp; character&nbsp; set&nbsp; internal_use&nbsp; ZHS16GBK&nbsp; ;&nbsp; </p>
<p>shutdown&nbsp; immediate&nbsp; </p>
<p>startup&nbsp; </p>
<p>这样字符集的修改就完成了</p>
<p><br />
摘自红色黑客联盟(www.7747.net) 原文：http://www.7747.net/px/200902/34068.html</p>
<img src ="http://www.blogjava.net/suplayer/aggbug/303968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/suplayer/" target="_blank">suplayer</a> 2009-11-27 19:56 <a href="http://www.blogjava.net/suplayer/archive/2009/11/27/303968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决Oracle XE允许连接的用户数不足问题</title><link>http://www.blogjava.net/suplayer/archive/2009/11/27/303967.html</link><dc:creator>suplayer</dc:creator><author>suplayer</author><pubDate>Fri, 27 Nov 2009 11:54:00 GMT</pubDate><guid>http://www.blogjava.net/suplayer/archive/2009/11/27/303967.html</guid><wfw:comment>http://www.blogjava.net/suplayer/comments/303967.html</wfw:comment><comments>http://www.blogjava.net/suplayer/archive/2009/11/27/303967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/suplayer/comments/commentRss/303967.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/suplayer/services/trackbacks/303967.html</trackback:ping><description><![CDATA[<p><br />
<br />
在数据库服务器上运行 sqlplus system/password@xe (其中 system 是数据库用户无需改变；password 是数据库密码应指定为实际密码；xe 是数据库实例名称) ，然后执行：</p>
<p>alter system set session_cached_cursors=200 scope=spfile;<br />
alter system set session_max_open_files=200 scope=spfile;<br />
alter system set sessions=20 scope=spfile;<br />
alter system set license_max_sessions=200 scope=spfile;<br />
alter system set license_sessions_warning=200 scope=spfile;<br />
alter system set processes=200 scope=spfile;</p>
<p>执行后，重启 Oracle XE 数据库实例即可。要重启 Oracle XE 数据库实例：</p>
<p>1. 如安装于 Windows 上，先运行 net stop oracleservicexe，再运行 net start oracleservicexe 即可。也可通过&#8220;服务&#8221;管理控制台重启 OracleServiceXE 服务。<br />
2. 如安装于 Linux 上，先运行 /etc/init.d/oracle-xe start，再运行 /etc/init.d/oracle-xe stop 即可。</p>
<p>此时，可以支持 179 个额外的连接会话。<br />
</p>
<img src ="http://www.blogjava.net/suplayer/aggbug/303967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/suplayer/" target="_blank">suplayer</a> 2009-11-27 19:54 <a href="http://www.blogjava.net/suplayer/archive/2009/11/27/303967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何改变Oracle 10g Express Edition默认的8080端口</title><link>http://www.blogjava.net/suplayer/archive/2009/11/27/303966.html</link><dc:creator>suplayer</dc:creator><author>suplayer</author><pubDate>Fri, 27 Nov 2009 11:53:00 GMT</pubDate><guid>http://www.blogjava.net/suplayer/archive/2009/11/27/303966.html</guid><wfw:comment>http://www.blogjava.net/suplayer/comments/303966.html</wfw:comment><comments>http://www.blogjava.net/suplayer/archive/2009/11/27/303966.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/suplayer/comments/commentRss/303966.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/suplayer/services/trackbacks/303966.html</trackback:ping><description><![CDATA[<p>选择&#8220;运行SQL命令&#8221;，进入如下提示符<br />
SQL&gt;<br />
首先连接到服务器<br />
connect 用户名/密码<br />
登陆后输入如下命令：<br />
sql 代码<br />
1.call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),'/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()',8081));&nbsp;&nbsp;&nbsp;&nbsp; <br />
其中8081是修改后的端口，可以任意。<br />
&nbsp; <br />
这样你就不会与Tomcat的默认端口冲突了，方便开发。</p>
<p>ftp服务占用2100端口，更改命令是：<br />
sql 代码<br />
1.call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get() , '/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()', 2111));&nbsp;&nbsp;&nbsp; </p>
<img src ="http://www.blogjava.net/suplayer/aggbug/303966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/suplayer/" target="_blank">suplayer</a> 2009-11-27 19:53 <a href="http://www.blogjava.net/suplayer/archive/2009/11/27/303966.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件安装的3种方法</title><link>http://www.blogjava.net/suplayer/archive/2009/09/06/294063.html</link><dc:creator>suplayer</dc:creator><author>suplayer</author><pubDate>Sun, 06 Sep 2009 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/suplayer/archive/2009/09/06/294063.html</guid><wfw:comment>http://www.blogjava.net/suplayer/comments/294063.html</wfw:comment><comments>http://www.blogjava.net/suplayer/archive/2009/09/06/294063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/suplayer/comments/commentRss/294063.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/suplayer/services/trackbacks/294063.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>&nbsp;&nbsp; 1. 把插件文件直接覆盖到eclipse目录里<br />
&nbsp;&nbsp; 2. 使用link文件，就是把插件存放到任一的地方（例如/eclipse/MyPuls）,然后 在eclipse的文件夹里新建一个links的文件，在里面添加一些后追名为.link的文件（例如emfPlugins.link）结构是这样的：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /eclipse/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; links/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emfPlugins.link<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; webtools.link<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; updateManager.link<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; link文件的里包含这样一条　&#8220;path=D:\\JavaDev\\plugins\\vssplugin&#8221;这个路径就是插件的存放路径。</p>
<p>&nbsp;&nbsp; 3. 使用eclipse自带的图形界面的插件安装方法：选择Help &gt; Software Updates &gt; Manager Configuration</p>
<p>&nbsp;&nbsp;&nbsp; 在选择Add &gt; Extension Location 找到你要安装插件的目录就可以了。强烈推荐这种方法，优点很多比如可以方便的添加删除，也不用自己写link文件！</p>
<p>备注：Eclipse插件的目录结构</p>
<p>&nbsp;&nbsp;&nbsp; /eclipse-plugins/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eclipse/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .eclipseextension<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; features/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; plugins/</p>
<p>&nbsp;&nbsp;&nbsp; 第2、3种方法所指向的目录都指的是"eclipse"目录，</p>
<p>&nbsp;&nbsp;&nbsp; 如果用第3种方法，在eclipse这个目录下必须有文件.eclipseextension，如果你下的插件没有这个文件，那就随便eclipse安装目录下的那个文件靠过去就行了！只有有这么个文件就可以了，内容没什么用，主要是一些版本信息！例如：</p>
<p>&nbsp;&nbsp;&nbsp; id=org.eclipse.platform name=Eclipse Platformversion=3.3.1</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/suplayer/aggbug/294063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/suplayer/" target="_blank">suplayer</a> 2009-09-06 15:21 <a href="http://www.blogjava.net/suplayer/archive/2009/09/06/294063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创建XMLHtttRequest对象</title><link>http://www.blogjava.net/suplayer/archive/2009/09/04/293938.html</link><dc:creator>suplayer</dc:creator><author>suplayer</author><pubDate>Fri, 04 Sep 2009 13:18:00 GMT</pubDate><guid>http://www.blogjava.net/suplayer/archive/2009/09/04/293938.html</guid><wfw:comment>http://www.blogjava.net/suplayer/comments/293938.html</wfw:comment><comments>http://www.blogjava.net/suplayer/archive/2009/09/04/293938.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/suplayer/comments/commentRss/293938.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/suplayer/services/trackbacks/293938.html</trackback:ping><description><![CDATA[<p>创建XMLHtttRequest对象(针对mozilla，IE8,FF,IE5,IE5.5,IE6,IE7)<br />
//2、创建XMLHttpRequest对象<br />
&nbsp;&nbsp;&nbsp; //这其实是XMLHttpReqest对象使用最复杂的一步<br />
&nbsp;&nbsp;&nbsp; //针对IE和其他类型浏览器建立这个对象的不同方式写不同的代码<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; if(window.XMLHttpRequest){<br />
&nbsp;&nbsp;&nbsp; //针对firefox,mozillaz,opera,IE7,IE8<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlhttp = new XMLHttpRequest();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //用于修复某些Mozillaz浏览器bug<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(xmlhttp.overrideMimeType)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlhttp.overrideMimeType("text/xml");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; else if(window.ActiveXObject){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //针对IE6，IE5.5，IE5<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //两个都可以创建XMLHttpRequest对象，保存在js数组中<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var activeName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];</p>
<p>//var activeName= ['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0', //'MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0', //'MSXML2.XMLHTTP','Microsoft.XMLHTTP']; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var i =0;i&lt;activeName.length;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {//取出一个控件名来创建XMLHttpRequest对象，创建成功就终止循环，如果创建失败可以继续创建<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //可以抛出异常，继续创建<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlhttp= new ActiveXObject(activeName[i]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; //确认XMLHttpRequest对象已经创建成功<br />
&nbsp;&nbsp;&nbsp; if(!xmlhttp)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("XmlHttpRequest创建失败");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; //3、注册回调函数，函数名后面不要加括号<br />
&nbsp;&nbsp;&nbsp; //如果加了括号，就变成了调用函数，会把函数的返回值发挥给xmlhttp，没有达到我们的目的&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; xmlhttp.onreadystatechange=callback;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; //4、设置连接信息<br />
&nbsp;&nbsp;&nbsp; //第一个参数设置http请求方式，主要是get和post两种方式<br />
&nbsp;&nbsp;&nbsp; //第二个参数是uri地址<br />
&nbsp;&nbsp;&nbsp; //第三个参数表示异步交互还是同步交互方式，true表示异步，false表示同步<br />
&nbsp;&nbsp;&nbsp; xmlhttp.open("GET","/JQuery/servlet/AjaxServlet?name="+username,true);<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; //5、发送数据开始和服务器端交互<br />
&nbsp;&nbsp;&nbsp; //同步方式下，send这句话会在服务器端的数据回来后，才执行完<br />
&nbsp;&nbsp;&nbsp; //异步方式下，send会立即执行完<br />
&nbsp;&nbsp;&nbsp; xmlhttp.send(null);<br />
}<br />
//5、写回调函数<br />
//回调函数<br />
function callback(){<br />
&nbsp;&nbsp;&nbsp; //接收相应的相应数据<br />
&nbsp;&nbsp;&nbsp; //判断交互状态已经完成<br />
&nbsp;&nbsp;&nbsp; if(xmlhttp.readyState ==4)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //判断http的交互状态<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(xmlhttp.status == 200)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获取服务器端返回的数据<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获取服务器端纯文本数据<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var responseText = xmlhttp.responseText;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //将数据显示在页面上<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //通过dom获取div元素节点<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var divNode =document.getElementById("result");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置元素节点的html内容<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; divNode.innerHTML=responseText;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;<br />
</p>
<img src ="http://www.blogjava.net/suplayer/aggbug/293938.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/suplayer/" target="_blank">suplayer</a> 2009-09-04 21:18 <a href="http://www.blogjava.net/suplayer/archive/2009/09/04/293938.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>