??xml version="1.0" encoding="utf-8" standalone="yes"?>成人亚洲性情网站www在线观看,欧美亚洲视频在线观看,亚洲成人原创http://www.aygfsteel.com/redcoatjk/category/48593.html万物皆对?万事归节?/description>zh-cnFri, 27 May 2011 21:37:00 GMTFri, 27 May 2011 21:37:00 GMT60[转]java中hashcode()和equals()的详?/title><link>http://www.aygfsteel.com/redcoatjk/archive/2011/05/27/351200.html</link><dc:creator>redcoatjk</dc:creator><author>redcoatjk</author><pubDate>Fri, 27 May 2011 10:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/redcoatjk/archive/2011/05/27/351200.html</guid><wfw:comment>http://www.aygfsteel.com/redcoatjk/comments/351200.html</wfw:comment><comments>http://www.aygfsteel.com/redcoatjk/archive/2011/05/27/351200.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/redcoatjk/comments/commentRss/351200.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/redcoatjk/services/trackbacks/351200.html</trackback:ping><description><![CDATA[摘自:<div>http://www.iteye.com/topic/257191</div><br />-----------------<br /><div>今天下午研究了半天hashcode()和equals()ҎQ终于有了一点点的明白,写下来与大家分nQzhaoxudong 2008.10.23?1.36Q? <br />1. 首先equals()和hashcode()q两个方法都是从objectcMl承q来的? <br />equals()Ҏ在objectcM定义如下Q? <br />  public boolean equals(Object obj) { <br />return (this == obj); <br />} <br />很明显是对两个对象的地址D行的比较Q即比较引用是否相同Q。但是我们必需清楚Q当String 、Math、还有Integer、Double。。。。等q些装cd使用equals()ҎӞ已经覆盖了objectcȝequalsQ)Ҏ。比 如在StringcM如下Q? <br />  public boolean equals(Object anObject) { <br />if (this == anObject) { <br />    return true; <br />} <br />if (anObject instanceof String) { <br />    String anotherString = (String)anObject; <br />    int n = count; <br />    if (n == anotherString.count) { <br />char v1[] = value; <br />char v2[] = anotherString.value; <br />int i = offset; <br />int j = anotherString.offset; <br />while (n-- != 0) { <br />    if (v1[i++] != v2[j++]) <br />return false; <br />} <br />return true; <br />    } <br />} <br />return false; <br />} <br />很明显,q是q行的内Ҏ较,而已l不再是地址的比较。依ơ类推Double、Integer、Math。。。。等{这些类都是重写了equals()Ҏ的,从而进行的是内容的比较。当然了基本cd是进行值的比较Q这个没有什么好说的? <br />我们q应该注意,Java语言对equals()的要求如下,q些要求是必遵循的Q? <br />• 对称性:如果x.equals(y)q回?#8220;true”Q那么y.equals(x)也应该返回是“true”? <br />• 反射性:x.equals(x)必须q回?#8220;true”? <br />• cL性:如果x.equals(y)q回?#8220;true”Q而且y.equals(z)q回?#8220;true”Q那么z.equals(x)也应该返回是“true”? <br />• q有一致性:如果x.equals(y)q回?#8220;true”Q只要x和y内容一直不变,不管你重复x.equals(y)多少ơ,q回都是“true”? <br />• M情况下,x.equals(null)Q永q返回是“false”Qx.equals(和x不同cd的对?永远q回?#8220;false”? <br />以上q五Ҏ重写equals()ҎӞ必须遵守的准则,如果q反会出现意想不到的l果Q请大家一定要遵守? <br />2. 其次是hashcode() ҎQ在objectcM定义如下Q? <br />  public native int hashCode(); <br />说明是一个本地方法,它的实现是根据本地机器相关的。当然我们可以在自己写的cM覆盖hashcode()ҎQ比如String?Integer、Double。。。。等{这些类都是覆盖了hashcode()Ҏ的。例如在StringcM定义的hashcode()Ҏ如下Q? <br />    public int hashCode() { <br />int h = hash; <br />if (h == 0) { <br />    int off = offset; <br />    char val[] = value; <br />    int len = count; <br /> <br />            for (int i = 0; i < len; i++) { <br />                h = 31*h + val[off++]; <br />            } <br />            hash = h; <br />        } <br />        return h; <br />} <br />解释一下这个程序(String的API中写刎ͼQ? <br />s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] <br />使用 int 法Q这?s[i] 是字W串的第 i 个字W,n 是字W串的长度,^ 表示求幂。(I字W串的哈希码?0。) <br /> <br />3.q里我们首先要明白一个问题: <br />equals()相等的两个对象,hashcode()一定相{; <br />equalsQ)不相{的两个对象Q却q不能证明他们的hashcode()不相{。换句话_equals()Ҏ不相{的两个对象Qhashcode()有可能相{。(我的理解是由于哈希码在生成的时候生冲H造成的)? <br />反过来:hashcode()不等Q一定能推出equals()也不{;hashcode()相等Qequals()可能相等Q也可能不等。解?下第3点的使用范围Q我的理解是在object、String{类中都能用。在objectcMQhashcode()Ҏ是本地方法,q回的是对象?地址|而objectcM的equals()Ҏ比较的也是两个对象的地址|如果equals()相等Q说明两个对象地址g相等Q当?hashcode()也就相等了;在StringcMQequals()q回的是两个对象内容的比较,当两个对象内容相{时Q? <br />Hashcode()ҎҎStringcȝ重写Q第2炚w面已l分析了Q代码的分析Q也可知道hashcode()q回l果也会相等。以此类 推,可以知道Integer、Double{封装类中经q重写的equals()和hashcode()Ҏ也同样适合于这个原则。当然没有经q重写的 c,在承了objectcȝequals()和hashcode()Ҏ后,也会遵守q个原则? <br /> <br />4.谈到hashcode()和equals()׃能不说到hashset,hashmap,hashtable中的使用Q具体是怎样呢,L如下分析Q? <br />Hashset是承Set接口QSet接口又实现Collection接口Q这是层ơ关pR那么hashset是根据什么原理来存取对象的呢Q? <br />在hashset中不允许出现重复对象Q元素的位置也是不确定的。在hashset中又是怎样判定元素是否重复的呢Q这是问题的关键所在,l过一下午的查询求证终于获得了一点启C,和大家分享一下,在java的集合中Q判断两个对象是否相{的规则是: <br />1)Q判断两个对象的hashCode是否相等 <br />      如果不相{,认ؓ两个对象也不相等Q完? <br />      如果相等Q{?) <br />Q这一点只是ؓ了提高存储效率而要求的Q其实理Z没有也可以,但如果没有,实际使用时效率会大大降低Q所以我们这里将其做为必需的。后面会重点讲到q个问题。) <br />2)Q判断两个对象用equalsq算是否相等 <br />      如果不相{,认ؓ两个对象也不相等 <br />      如果相等Q认Z个对象相{(equals()是判断两个对象是否相{的关键Q? <br />Z么是两条准则Q难道用W一条不行吗Q不行,因ؓ前面已经说了Qhashcode()相等Ӟequals()Ҏ也可能不{,所以必ȝW?条准则进行限Ӟ才能保证加入的ؓ非重复元素? <br />比如下面的代码: <br /> <br />public static void main(String args[]){ <br />String s1=new String("zhaoxudong"); <br />String s2=new String("zhaoxudong"); <br />System.out.println(s1==s2);//false <br />System.out.println(s1.equals(s2));//true <br />System.out.println(s1.hashCode());//s1.hashcode(){于s2.hashcode() <br />System.out.println(s2.hashCode()); <br />Set hashset=new HashSet(); <br />hashset.add(s1); <br />hashset.add(s2); <br />/*实质上在ds1,s2Ӟq用上面说到的两点准则,可以知道hashset认ؓs1和s2是相{的Q是在添加重复元素,所以让s2覆盖了s1;*/ <br />Iterator it=hashset.iterator(); <br />            while(it.hasNext()) <br />            { <br />             System.out.println(it.next()); <br />            } <br />最后在while循环的时候只打印Z一?#8221;zhaoxudong”? <br />输出l果为:false <br />            true <br />            -967303459 <br />            -967303459 <br />q是因ؓStringcdl重写了equals()Ҏ和hashcode()ҎQ所以在Ҏ上面的第1.2条原则判定时Qhashset认ؓ它们是相{的对象Q进行了重复d? <br />但是看下面的E序Q? <br />import java.util.*; <br />public class HashSetTest <br />{ <br />   public static void main(String[] args) <br />    { <br />                 HashSet hs=new HashSet(); <br />                 hs.add(new Student(1,"zhangsan")); <br />                 hs.add(new Student(2,"lisi")); <br />                 hs.add(new Student(3,"wangwu")); <br />                 hs.add(new Student(1,"zhangsan")); <br />  <br />                 Iterator it=hs.iterator(); <br />                 while(it.hasNext()) <br />                 { <br />                        System.out.println(it.next()); <br />                 } <br />     } <br />} <br />class Student <br />   { <br />     int num; <br />     String name; <br />     Student(int num,String name) <br />                { <br />                this.num=num; <br />                 this.name=name; <br />                 } <br />              public String toString() <br />                { <br />                    return num+":"+name; <br />                 } <br />           }      <br />输出l果为: <br />                      1:zhangsan <br />                   1:zhangsan <br />                   3:wangwu <br />                   2:lisi <br />问题出现了,Z么hashsetd了相{的元素呢,q是不是和hashset的原则违背了呢?回答是:没有 <br />因ؓ在根据hashcode()对两ơ徏立的new Student(1,"zhangsan")对象q行比较Ӟ生成的是不同的哈希码|所以hashset把他当作不同的对象对待了Q当然此时的 equals()Ҏq回的g不等Q这个不用解释了吧)。那么ؓ什么会生成不同的哈希码值呢Q上面我们在比较s1和s2的时候不是生成了同样的哈希码 吗?原因在于我们自己写的Studentcdƈ没有重新自己的hashcode()和equals()ҎQ所以在比较Ӟ是承的objectcM?hashcode()ҎQ呵呵,各位q记得objectcM的hashcode()Ҏ比较的是什么吧Q! <br />它是一个本地方法,比较的是对象的地址Q引用地址Q,使用newҎ创徏对象Q两ơ生成的当然是不同的对象了(q个大家都能理解吧。。。)Q造成 的结果就是两个对象的hashcode()q回的g一栗所以根据第一个准则,hashset会把它们当作不同的对象对待,自然也用不着W二个准则进?判定了。那么怎么解决q个问题呢?Q? <br />{案是:在StudentcM重新hashcode()和equals()Ҏ? <br />例如Q? <br />  class Student <br />{ <br />int num; <br />String name; <br />Student(int num,String name) <br />{ <br />            this.num=num; <br />            this.name=name; <br />} <br />public int hashCode() <br />{ <br />            return num*name.hashCode(); <br />} <br />public boolean equals(Object o) <br />{ <br />            Student s=(Student)o; <br />            return num==s.num && name.equals(s.name); <br />} <br />public String toString() <br />{ <br />            return num+":"+name; <br />} <br />} <br />Ҏ重写的方法,即便两次调用了new Student(1,"zhangsan")Q我们在获得对象的哈希码ӞҎ重写的方法hashcode()Q获得的哈希码肯定是一LQ这一点应该没有疑问吧Q? <br />当然Ҏequals()Ҏ我们也可判断是相同的。所以在向hashset集合中添加时把它们当作重复元素看待了。所以运行修改后的程序时Q我们会发现q行l果是: <br />                      1:zhangsan <br />                   3:wangwu <br />                   2:lisi <br />可以看到重复元素的问题已l消除? <br />关于在hibernate的pojocMQ重新equals()和hashcode()的问题: <br />1)Q重ҎequalsQ重写hashCode只是技术要求(Z提高效率Q? <br />2)Qؓ什么要重写equals呢,因ؓ在java的集合框架中Q是通过equals来判断两个对象是否相{的 <br />3)Q在hibernate中,l常使用set集合来保存相兛_象,而set集合是不允许重复的。我们再来谈谈前面提到在向hashset集合中添加元素时,怎样判断对象是否相同的准则,前面说了两条Q其实只要重写equals()q一条也可以? <br />但当hashset中元素比较多Ӟ或者是重写的equals()Ҏ比较复杂Ӟ我们只用equals()Ҏq行比较判断Q效率也会非怽Q?所以引入了hashcode()q个ҎQ只是ؓ了提高效率,但是我觉得这是非常有必要的(所以我们在前面以两条准则来q行hashset的元素是否重?的判断)? <br />比如可以q样写: <br />public int hashCode(){ <br />   return  1;}//{h于hashcode无效 <br />q样做的效果是在比较哈希码的时候不能进行判断,因ؓ每个对象q回的哈希码都是1Q每ơ都必须要经q比较equals()Ҏ后才能进行判断是否重复,q当然会引v效率的大大降低? <br />我有一个问题,如果像前面提到的在hashset中判断元素是否重复的必要Ҏ是equals()ҎQ根据网上找到的观点Q,但是q里q没有涉及到关于哈希表的问题Q可是这个集合却叫hashsetQ这是ؓ什么?Q? <br />我想Q在hashmap,hashtable中的存储操作Q依焉守上面的准则。所以这里不再多说。这些是今天看书Q网上查询资料,自己ȝ出来 的,部分代码和语a是引qͼ但是千真万确是自己ȝ出来的。有错误之处和不详细不清楚的地方q请大家指出Q我也是初学者,所以难免会有错误的地方Q希望大 家共同讨论? </div><img src ="http://www.aygfsteel.com/redcoatjk/aggbug/351200.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/redcoatjk/" target="_blank">redcoatjk</a> 2011-05-27 18:15 <a href="http://www.aygfsteel.com/redcoatjk/archive/2011/05/27/351200.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]JNDI到底是什么,有什么作?/title><link>http://www.aygfsteel.com/redcoatjk/archive/2011/05/22/350754.html</link><dc:creator>redcoatjk</dc:creator><author>redcoatjk</author><pubDate>Sun, 22 May 2011 02:34:00 GMT</pubDate><guid>http://www.aygfsteel.com/redcoatjk/archive/2011/05/22/350754.html</guid><wfw:comment>http://www.aygfsteel.com/redcoatjk/comments/350754.html</wfw:comment><comments>http://www.aygfsteel.com/redcoatjk/archive/2011/05/22/350754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/redcoatjk/comments/commentRss/350754.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/redcoatjk/services/trackbacks/350754.html</trackback:ping><description><![CDATA[摘自:<div>http://shitou521.iteye.com/blog/696006</div><div><h3>JNDI的一文?/h3> <p style="padding-right: 0px; padding-left: 0px; font-size: 16px; padding-bottom: 0px; margin: 0px 0px 0.5em; color: black; line-height: 1.5em; padding-top: 10px;">前端旉L在搞不清JNDI到底是干什么,虽然是一值在用,却不知道他最初出现的原因Q用来,说不清是用来q什么,下面我相信介能解开q个q雾里?/p> <div>?strong style="font-weight: bold;">转脓一?/strong>?nbsp;<br />------------ <br />JNDI?Java 命名与目录接口(Java Naming and Directory InterfaceQ,在J2EE规范中是重要的规范之一Q不专家认为,没有透彻理解JNDI的意义和作用Q就没有真正掌握J2EE特别是EJB的知识?nbsp;<br /><br />那么QJNDI到底起什么作用?<span style="color: red;">//带着问题看文章是最有效?/span> <br /><br />要了解JNDI的作用,我们可以?#8220;如果不用JNDI我们怎样做?用了JNDI后我们又怎样做?”q个问题来探讨?nbsp;<br /><br />没有JNDI的做法: <br /><br />E序员开发时Q知道要开发访问MySQL数据库的应用Q于是将一个对 MySQL JDBC 驱动E序cȝ引用q行了编码,q过使用适当?JDBC URL q接到数据库?nbsp;<br />像以下代码q样Q?nbsp;<br /><br /><div style="font-size: 12px; margin-left: 9px; width: 694px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; padding: 1px;"> <div> <div style="font-weight: bold; margin: 0px; color: black; text-align: left; padding: 3px;">Java代码  </div> </div> <ol style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 2px; margin: 0px 0px 1px; color: #2b91af; line-height: 1.4em; padding-top: 2px; background-color: #ffffff; border: #d1d7dc 1px solid;"><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><span style="color: black;">Connection conn=</span><span style="font-weight: bold; color: #7f0055;">null</span><span style="color: black;">;  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><span style="font-weight: bold; color: #7f0055;">try</span><span style="color: black;"> {  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  Class.forName(<span style="color: blue;">"com.mysql.jdbc.Driver"</span><span style="color: black;">,  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">                <span style="font-weight: bold; color: #7f0055;">true</span><span style="color: black;">, Thread.currentThread().getContextClassLoader());  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  conn=DriverManager.  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    getConnection(<span style="color: blue;">"jdbc:mysql://MyDBServer?user=qingfeng&password=mingyue"</span><span style="color: black;">);  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  ......  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  conn.close();  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">} <span style="font-weight: bold; color: #7f0055;">catch</span><span style="color: black;">(Exception e) {  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  e.printStackTrace();  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">} <span style="font-weight: bold; color: #7f0055;">finally</span><span style="color: black;"> {  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  <span style="font-weight: bold; color: #7f0055;">if</span><span style="color: black;">(conn!=</span><span style="font-weight: bold; color: #7f0055;">null</span><span style="color: black;">) {  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    <span style="font-weight: bold; color: #7f0055;">try</span><span style="color: black;"> {  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">      conn.close();  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    } <span style="font-weight: bold; color: #7f0055;">catch</span><span style="color: black;">(SQLException e) {}  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  }  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">}  </span></li></ol> </div> <br /><br /><br />q是传统的做法,也是以前非JavaE序员(如Delphi、VB{)常见的做法。这U做法一般在规模的开发过E中不会产生问题Q只要程序员熟悉Java语言、了解JDBC技术和MySQLQ可以很快开发出相应的应用程序?nbsp;<br /><br />没有JNDI的做法存在的问题Q?nbsp;<br />1、数据库服务器名UMyDBServer 、用户名和口令都可能需要改变,由此引发JDBC URL需要修改; <br />2、数据库可能改用别的产品Q如改用DB2或者OracleQ引发JDBC驱动E序包和cd需要修改; <br />3、随着实际使用l端的增加,原配|的q接池参数可能需要调_ <br />4?..... <br /><br />解决办法Q?nbsp;<br />E?序员应该不需要关?#8220;具体的数据库后台是什么?JDBC驱动E序是什么?JDBC URL格式是什么?讉K数据库的用户名和口o是什么?”{等q些问题Q程序员~写的程序应该没有对 JDBC 驱动E序的引用,没有服务器名Uͼ没有用户名称或口?—— 甚至没有数据库池或连接管理。而是把这些问题交lJ2EE容器来配|和理Q程序员只需要对q些配置和管理进行引用即可?nbsp;<br /><br />由此Q就有了JNDI?nbsp;<br /><span style="color: red;">//看的出来Q是Z一个最最核心的问题:是ؓ了解耦,是ؓ了开发出更加可维护、可扩展//的系l?/span> <br /><br />用了JNDI之后的做法: <br />首先Q?span style="color: red;">在在J2EE容器中配|JNDI参数</span>Q定义一个数据源Q也是JDBC引用参数Q给q个数据源设|一个名Uͼ然后Q在E序中,通过数据源名U引用数据源从而访问后台数据库?nbsp;<br /><br /><span style="color: red;">//U色的字可以看出QJNDI是由j2ee容器提供的功?/span> <br /><br />具体操作如下Q以JBossZQ: <br />1、配|数据源 <br />在JBoss ?D:\jboss420GA\docs\examples\jca 文g夹下面,有很多不同数据库引用的数据源定义模板。将其中? mysql-ds.xml 文gCopyC使用的服务器下,?D:\jboss420GA\server\default\deploy?nbsp;<br />修改 mysql-ds.xml 文g的内容,使之能通过JDBC正确讉K你的MySQL数据库,如下Q?nbsp;<br /><div style="font-size: 12px; margin-left: 9px; width: 694px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; padding: 1px;"> <div> <div style="font-weight: bold; margin: 0px; color: black; text-align: left; padding: 3px;">Java代码  </div> </div> <ol style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 2px; margin: 0px 0px 1px; color: #2b91af; line-height: 1.4em; padding-top: 2px; background-color: #ffffff; border: #d1d7dc 1px solid;"><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><span style="color: black;"><?xml version=</span><span style="color: blue;">"1.0"</span><span style="color: black;"> encoding=</span><span style="color: blue;">"UTF-8"</span><span style="color: black;">?>  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><datasources>  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><local-tx-datasource>  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    <jndi-name>MySqlDS</jndi-name>  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    <connection-url>jdbc:mysql:<span style="color: #008200;">//localhost:3306/lw</connection-url></span><span style="color: black;">  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    <driver-<span style="font-weight: bold; color: #7f0055;">class</span><span style="color: black;">>com.mysql.jdbc.Driver</driver-</span><span style="font-weight: bold; color: #7f0055;">class</span><span style="color: black;">>  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    <user-name>root</user-name>  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    <password>rootpassword</password>  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><exception-sorter-<span style="font-weight: bold; color: #7f0055;">class</span><span style="color: black;">-name>  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"></exception-sorter-<span style="font-weight: bold; color: #7f0055;">class</span><span style="color: black;">-name>  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    <metadata>  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">       <type-mapping>mySQL</type-mapping>  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    </metadata>  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"></local-tx-datasource>  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"></datasources>  </span></li></ol> </div> <br /><br />q里Q定义了一个名为MySqlDS的数据源Q其参数包括JDBC的URLQ驱动类名,用户名及密码{?nbsp;<br /><br />2、在E序中引用数据源Q?nbsp;<br /><br /><div style="font-size: 12px; margin-left: 9px; width: 694px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; padding: 1px;"> <div> <div style="font-weight: bold; margin: 0px; color: black; text-align: left; padding: 3px;">Java代码  </div> </div> <ol style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 2px; margin: 0px 0px 1px; color: #2b91af; line-height: 1.4em; padding-top: 2px; background-color: #ffffff; border: #d1d7dc 1px solid;"><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><span style="color: black;">Connection conn=</span><span style="font-weight: bold; color: #7f0055;">null</span><span style="color: black;">;  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><span style="font-weight: bold; color: #7f0055;">try</span><span style="color: black;"> {  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  Context ctx=<span style="font-weight: bold; color: #7f0055;">new</span><span style="color: black;"> InitialContext();  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  Object datasourceRef=ctx.lookup(<span style="color: blue;">"java:MySqlDS"</span><span style="color: black;">); </span><span style="color: #008200;">//引用数据?/span><span style="color: black;">  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  DataSource ds=(Datasource)datasourceRef;  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  conn=ds.getConnection();  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  ......  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  c.close();  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">} <span style="font-weight: bold; color: #7f0055;">catch</span><span style="color: black;">(Exception e) {  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  e.printStackTrace();  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">} <span style="font-weight: bold; color: #7f0055;">finally</span><span style="color: black;"> {  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  <span style="font-weight: bold; color: #7f0055;">if</span><span style="color: black;">(conn!=</span><span style="font-weight: bold; color: #7f0055;">null</span><span style="color: black;">) {  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    <span style="font-weight: bold; color: #7f0055;">try</span><span style="color: black;"> {  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">      conn.close();  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">    } <span style="font-weight: bold; color: #7f0055;">catch</span><span style="color: black;">(SQLException e) { }  </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">  }  </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">}  </span></li></ol> </div> <br /><br />直接使用JDBC或者通过JNDI引用数据源的~程代码量相差无几,但是现在的程序可以不用关心具体JDBC参数了?span style="color: red;">//解藕了,可扩展了</span> <br />在系l部|后Q如果数据库的相兛_数变_只需要重新配|?mysql-ds.xml 修改其中的JDBC参数Q只要保证数据源的名UC变,那么E序源代码就无需修改?nbsp;<br /><br />由此可见Q?span style="color: red;">JNDI避免了程序与数据库之间的紧耦合Q应用更加易于配置、易于部|?/span>?nbsp;<br /><br />JNDI的扩展: <br />JNDI在满了数据源配|的要求的基上,q进一步扩充了作用Q所有与pȝ外部的资源的引用Q都可以通过JNDI定义和引用?nbsp;<br /><span style="color: red;">//注意什么叫资源</span> <br /><br />所以,在J2EE规范中,J2EE 中的资源q不局限于 JDBC 数据源。引用的cd有很多,其中包括资源引用Q已l讨Q、环境实体和 EJB 引用。特别是 EJB 引用Q它暴露?JNDI ?J2EE 中的另外一关键角Ԍ查找其他应用E序lg?nbsp;<br /><br />EJB ?JNDI 引用非常cM?JDBC 资源的引用。在服务于转换的环境中Q这是一U很有效的方法。可以对应用E序架构中所得到的所有组件进行这c配|管理,?EJB lg?JMS 队列和主题,再到单配|字W串或其他对象,q可以降低随旉的推UL务变更所产生的维护成本,同时q可以简化部|Ԍ减少集成工作。外部资?#8221;?nbsp;<br /><br /><br />ȝQ?nbsp;<br /><span style="color: red;">J2EE 规范要求所?J2EE 容器都要提供 JNDI 规范的实现?/span><span style="color: red;">//sun 果然喜欢制定规范</span>JNDI ?J2EE 中的角色是“交换?#8221; —— J2EE lg在运行时间接地查扑օ他组件、资源或服务的通用机制。在多数情况下,提供 JNDI 供应者的容器可以充当有限的数据存储,q样理员就可以讄应用E序的执行属性,q让其他应用E序引用q些属性(Java 理扩展QJava Management ExtensionsQJMXQ也可以用作q个目的Q。JNDI ?J2EE 应用E序中的主要角色是提供间接层,q样lg可以发现所需要的资源Q而不用了解这些间接性?nbsp;<br /><br />?J2EE 中,JNDI 是把 J2EE 应用E序合在一L_合剂,JNDI 提供的间接寻址允许跨企业交付可伸羃的、功能强大且很灵zȝ应用E序。这?J2EE 的承诺,而且l过一些计划和预先考虑Q这个承诺是完全可以实现的?nbsp;<br /><br /><strong style="font-weight: bold;"><br />从上面的文章中可以看出: <br />1、JNDI 提出的目的是Z解藕Q是Z开发更加容易维护,Ҏ扩展Q容易部|的应用?nbsp;<br />2、JNDI 是一个sun提出的一个规?cM于jdbc),具体的实现是各个j2ee容器提供商,sun   只是要求Qj2ee容器必须有JNDIq样的功能?nbsp;<br />3、JNDI 在j2eepȝ中的角色?#8220;交换?#8221;Q是J2EElg在运行时间接地查扑օ他组件、资源或服务的通用机制?nbsp;<br />4、JNDI 是通过资源的名字来查找的,资源的名字在整个j2ee应用?j2ee容器?是唯一的?nbsp;<br /><br />再{一文章: <br /></strong><br /><br />JNDI全称 Java Naming and Directory Interface <br />JNDI 是Javaq_的一个标准扩展,提供了一l接口、类和关于命名空间的概念。如同其它很多Java技术一PJDNI是provider-based的技 术,暴露了一个API和一个服务供应接口(SPIQ。这意味着MZ名字的技术都能通过JNDI而提供服务,只要JNDI支持q项技术。JNDI目前所 支持的技术包括LDAP、CORBA Common Object ServiceQCOSQ名字服务、RMI、NDS、DNS、Windows注册表等{。很多J2EE技术,包括EJB都依靠JNDI来组l和定位实体?nbsp;<br />JDNI通过l定的概念将对象和名U联pv来。在一个文件系l中Q文件名被绑定给文g。在DNS中,一个IP地址l定一个URL。在目录服务中,一个对象名被绑定给一个对象实体?nbsp;<br />JNDI 中的一l绑定作Z下文来引用。每个上下文暴露的一l操作是一致的。例如,每个上下文提供了一个查找操作,q回指定名字的相应对象。每个上下文都提供了l?定和撤除l定名字到某个对象的操作。JNDI使用通用的方式来暴露命名I间Q即使用分层上下文以及用相同命名语法的子上下文?nbsp;<br />jndi的用途: <br />1。你可以用jndi来得到objectcȝ属?nbsp;<br />如: <br /><div style="font-size: 12px; margin-left: 9px; width: 694px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; padding: 1px;"> <div> <div style="font-weight: bold; margin: 0px; color: black; text-align: left; padding: 3px;">Java代码  </div> </div> <ol style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 2px; margin: 0px 0px 1px; color: #2b91af; line-height: 1.4em; padding-top: 2px; background-color: #ffffff; border: #d1d7dc 1px solid;"><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><span style="color: black;">Attribute attr =directory.getAttributes(personName).get(</span><span style="color: blue;">"email"</span><span style="color: black;">);   </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">String email = (String)attr.get();   </span></li></ol> </div> <br />2。你可以用jndi来搜索对?nbsp;<br />如: <br /><div style="font-size: 12px; margin-left: 9px; width: 694px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; padding: 1px;"> <div> <div style="font-weight: bold; margin: 0px; color: black; text-align: left; padding: 3px;">Java代码  </div> </div> <ol style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 2px; margin: 0px 0px 1px; color: #2b91af; line-height: 1.4em; padding-top: 2px; background-color: #ffffff; border: #d1d7dc 1px solid;"><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><span style="color: black;">foxes = directory.search(</span><span style="color: blue;">"o=Wiz,c=US"</span><span style="color: black;">, </span><span style="color: blue;">"sn=Fox"</span><span style="color: black;">, controls);   </span></span></li></ol> </div> <br />查找谁的名字叫Fox在wiz部门的员工? <br />3。你可以用jndi通过naming/directory服务查询像printers和databases的对?nbsp;<br />如:查询 Printer <br /><div style="font-size: 12px; margin-left: 9px; width: 694px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; padding: 1px;"> <div> <div style="font-weight: bold; margin: 0px; color: black; text-align: left; padding: 3px;">Java代码  </div> </div> <ol style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 2px; margin: 0px 0px 1px; color: #2b91af; line-height: 1.4em; padding-top: 2px; background-color: #ffffff; border: #d1d7dc 1px solid;"><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><span style="color: black;">Printer printer = (Printer)namespace.lookup(printerName);   </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">printer.print(document);   </span></li></ol> </div> <br />4。你可以用jndi列表出命名空间的ҎU别的内?nbsp;<br />如: <br /><div style="font-size: 12px; margin-left: 9px; width: 694px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; padding: 1px;"> <div> <div style="font-weight: bold; margin: 0px; color: black; text-align: left; padding: 3px;">Java代码  </div> </div> <ol style="padding-right: 0px; padding-left: 0px; font-size: 1em; padding-bottom: 2px; margin: 0px 0px 1px; color: #2b91af; line-height: 1.4em; padding-top: 2px; background-color: #ffffff; border: #d1d7dc 1px solid;"><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><span style="color: black;">NamingEnumeration list = namespace.list(</span><span style="color: blue;">"o=Widget, c=US"</span><span style="color: black;">;   </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;"><span style="font-weight: bold; color: #7f0055;">while</span><span style="color: black;"> (list.hasMore()) {   </span></span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">NameClassPair entry = (NameClassPair)list.next();   </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">display(entry.getName(), entry.getClassName());   </span></li><li style="padding-right: 0px; padding-left: 10px; font-size: 1em; padding-bottom: 0px; margin: 0px 0px 0px 38px; border-left: #d1d7dc 1px solid; line-height: 18px; padding-top: 0px; background-color: #fafafa;"><span style="color: black;">}   <br /></span></li></ol> </div> </div></div><img src ="http://www.aygfsteel.com/redcoatjk/aggbug/350754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/redcoatjk/" target="_blank">redcoatjk</a> 2011-05-22 10:34 <a href="http://www.aygfsteel.com/redcoatjk/archive/2011/05/22/350754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ӱʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ָɽ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ľ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">º</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʩ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank">ʮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank">ԫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ӻ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">Ѱ</a>| <a href="http://" target="_blank">Ƥ</a>| <a href="http://" target="_blank">ʡ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>