<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>tcrct</title>
    <description></description>
    <link>http://tcrct.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>用swing制作一个流氓窗口!</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/200742" style="color:red;">http://tcrct.javaeye.com/blog/200742</a>&nbsp;
          发表时间: 2008年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          有些时候，我们可能会制作一个不能缩少，不能移动的，总是在最前面并不能切换出去的一个“流氓”窗口。用swing可以按以下代码来实现！<br /><br />import java.awt.event.WindowEvent;<br />import java.awt.event.WindowAdapter;<br />import javax.swing.JFrame;<br />public class topJFrame extends WindowAdapter {<br />    private JFrame frame; <br />    public topJFrame(){<br />        frame = new JFrame("流氓窗口");<br />        frame.pack();<br />        frame.setAlwaysOnTop(true);//设置为最顶层<br />        frame.setResizable(false);    //不能改变大小<br />        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);   //最大化<br />        frame.setVisible(true);//显示<br />        frame.addWindowFocusListener(this);<br />        frame.addWindowListener(this);<br />    }<br />    public static void main(String[] args){<br />        new topJFrame();<br />    }<br />     //关闭窗口时<br />    @Override<br />    public void windowClosing(WindowEvent e) {<br />       System.exit(0);      //关闭窗口，退出程序<br />    } <br />    //最小化<br />    @Override<br />    public void windowIconified(WindowEvent e) {<br />         frame.setExtendedState(JFrame.MAXIMIZED_BOTH);   //最大化<br />    }    <br />    @Override<br />    public void windowLostFocus(WindowEvent e) {<br />        frame.requestFocus();<br />        frame.setLocation(0,0);<br />    }<br />}<br /><br />哈哈...有时打开会出现最小化的情况，点击一下最小化的按钮就OK了。
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/200742#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 06 Jun 2008 08:46:27 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/200742</link>
        <guid>http://tcrct.javaeye.com/blog/200742</guid>
      </item>
      <item>
        <title>改变Eclipse及NetBeans的字体样式,及添加中文javadoc</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/197489" style="color:red;">http://tcrct.javaeye.com/blog/197489</a>&nbsp;
          发表时间: 2008年05月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          安装了中文版的NetBeans后，那些中文字太少及不好看，后来上网查了一下，作出以下更改，发觉好看很多了。写一份在这里备忘：<br /><br />在NB中，点工具->选项->字体，将字体改为Courier New，大小为13。<br />窗口中的字体就打开NB安装目录下的etc文件夹里的netbeans.conf文件，找到netbeans_default_options行，在这行的最后加上“--fontsize 13” 请注意，是两个-<br /><br />Eclipse里是：<br />window->首选项->General->Appearance->Colors and Fonts->Java Editor Text Font<br /><br />代码的样式<br />菜单windows>属性>java>editor>syntax coloring> <br /><br /><br />在netbeans中添加中文javadoc,一般情况下如果在工具-&gt;java平台-&gt;javadoc里选取你的中文javadoc路径,javadoc的路径一直选取到api目录下,即x:/javadoc/html/zh_CN/api,后关闭退出就可以了.但有时候还是不能显示中文的,这样就将源里的src.zip文件移除,再添加上x:/javadoc/html/zh_CN/api路径就可以在NB中出现中文的浮动提示窗了. <br /><br /><br />Eclipse：<br />1.打开首选项：Window-Perferences<br />2.定位到jre：Java-Installed JREs 选中你已有的要添加java API的jre或jdk（如果你有多个jre和jdk）。<br />3.编辑属性：单击右方的Edit，出现Edit JRE对话框，如果你是新建，出现New JRE对话框也一样。这时下方会出现一列jar包，例如X:\Program Files\Java\(jre/jdk版本)\jre\lib\rt.jar。单击rt.jar包选中，然后单击右方的Javadoc Location。<br />4.填写Java API位置，Javadoc URL方式是Java API的网络地址或本地Javadoc解压后的地址。Javadoc in archive是下载到本地的Javadoc压缩包地址，然后在Path within archive中填写API在压缩包内部的结构，一般为docs/API，也可以通过Browse更方便地导入。<br />5.试试在Eclipse中写几句代码，然后单击你要查API的类或方法名，F1一下，是不是能很快地定位到help，第一项应该就是javadoc for你选择的类或方法了。你可以在Eclipse中查看，也能快速定位到浏览器了，不用你自己查找。<br />说明：一般定位rt.jar包就可以了。不放心的化你也可以把别的包都配置下。<br />在eclipse3.2和eclipse3.3中调试通过。
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/197489#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 27 May 2008 15:44:16 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/197489</link>
        <guid>http://tcrct.javaeye.com/blog/197489</guid>
      </item>
      <item>
        <title>以LinkedHashMap和ArrayList的结合使用，返回一个类似记录集的ArrayList</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/188248" style="color:red;">http://tcrct.javaeye.com/blog/188248</a>&nbsp;
          发表时间: 2008年04月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          通过LinkedHashMap和ArrayList的结合使用，将传入方法中的SQL查询语句存在一个包含多个LinkedHashMap的ArrayList返回。类似将一个查询的记录集返回一样。<br /><br />LinkedHashMap是一个有链接的HashMap，即键值对的次序是插入的次序。<br /><br />getConn();方法为一个连接数据库方法。<br /><br /> <br /><br />//*************************** 查询数据 ******************************//<br /> /**<br />  * <br />  * @param selectSQL:要查询的SQL语句<br />  * @return：ArrayList数据集,里面包含hashMap<br />  */ <br /> <br /> public static ArrayList getDataList(String selectSQL)<br /> {<br />  ArrayList&lt;LinkedHashMap &lt;String, Object>> al = new ArrayList&lt;LinkedHashMap &lt;String, Object>>();<br /> try {<br /><br />   getConn();//连接到数据库中<br />   stmt = conn.createStatement();<br />   rs = stmt.executeQuery(selectSQL);<br />   rsmd = rs.getMetaData();<br />   while(rs.next())<br />   {<br />    //HashMap&lt;String, Object> map = new HashMap&lt;String, Object>();<br />    LinkedHashMap  map = new LinkedHashMap ();/每循环一次/实例化一个Map。<br />    for(int i=1; i&lt;=rsmd.getColumnCount(); i++)<br />    {     <br />     map.put(rsmd.getColumnName(i), rs.getObject(rsmd.getColumnName(i)));<br />    }<br />    al.add(map);//将MAP添加到ArrayList中.<br />   }<br />  } catch (Exception e) { e.printStackTrace();}<br />  finally<br />  {<br />   try {<br />    if(!conn.isClosed())//如果接连未关闭<br />    { <br />     rs.close();<br />     stmt.close();<br />     conn.close();<br />    }<br />   } catch (Exception e) {<br />    e.printStackTrace();<br />   }<br />  }<br />  <br />  return al;  <br /> } <br /><br />//**********************************取ArrayList里的值。<br /><br />由于返回的是一个ArrayList，而ArrayList所包含的是LinkedHashMap，所以将ArrayList集合遍历一次，在每一次的遍历中再取出其包含的LinkedHashMap.对于Map可通过KeySet()方法取出在LinkedHashMap 中的所有关键字，实现的代码如下:<br /><br />  for(int i=0;i&lt;list.size();i++)<br />  {<br />   map = (LinkedHashMap)list.get(i);<br />       for(int j=0;j&lt;map.keySet().size();j++)<br />       {    <br />           System.out.println(map.get(map.keySet().toArray()[j]));<br />       } <br /> }
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/188248#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 30 Apr 2008 02:53:59 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/188248</link>
        <guid>http://tcrct.javaeye.com/blog/188248</guid>
      </item>
      <item>
        <title>男人必看的十大经典影片 !(转)</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/188247" style="color:red;">http://tcrct.javaeye.com/blog/188247</a>&nbsp;
          发表时间: 2008年04月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.《阿甘正传》:执着 　　每次想起阿甘在美国东西海岸之间的奔跑,人们都会止不住的伤感,还有振奋.你相信一个智障儿的成功吗?你相信这世上收获最多的人正是那些不计得失的人吗?阿甘不懂得他不能总跟着一个女人帮她打架,也不懂得一个成年人不该总把"我爱你"的话挂在嘴边.阿甘什么都不知道,他只知道凭着直觉在路上不停得跑,并且最终他跑到了终点. 　　另外,《阿甘正传》还会教给你一个男人必须具备的一种素质----身处困境中的幽默感 　　<br /><br />2.《东方不败》:才华 　　男人不应该不看武侠片,如果你只能看一部武侠电影,你会选择什么?应该是&lt;东方不败>.满堂花醉三千客,一剑霜寒十四州,剑客的身姿随着剑在空气中的游走而起舞,翩若惊鸿,宛若游龙.金庸的&lt;笑傲江湖>讲的是对自由的追求,徐克,程小东,张叔平,李连杰等演员天才的用电影再现了金庸笔下的这个瑰丽无比的武侠世界.&lt;沧海一声笑>的曲子传唱至今,成为我们一个幻想的凭借,一个逃避现实的出口. 　　<br /><br />3.《美国往事》:人生 　　《美国往事》包含了一个男人在这个世界上所能遇到的一切.友情,爱情,幻想,责任,冲突.它更像是一场让人不愿醒来的梦,当男主人公躺上床上,在温暖的灯光和迷离的电话铃声中回到那些逝去了的岁月,这场梦便开始了,直到最后男主人公终于露出笑容,我们才回到自己的人生,去继续那些不尽的故事.什么帮派,什么仇杀,原来都不重要,印象中只有一个毛燥的少年,偷看一个美丽女孩儿跳舞;只有一个负罪的兄弟,每天早早的上床睡觉;只有一个白发苍苍的老人,面对背叛了的友谊,语调平和,不动声色,&lt;美国往事>带你作了一次3小时45分的人生之旅. 　　<br /><br />4.《罗马假日》:爱情　 　　也许《罗马假日》有点瞎浪漫的嫌疑,但奥黛丽.赫本的出现使它真的成了一部童话.她就像是游历人间的天使,美丽非凡.记者吻过湿淋淋的公主,然后看着她慢慢的走向自己官邸.那一刻,你是否会在心里默默的说"别走"?在罗马的宫殿里,两个人站得那样近,也离得那样远.乔只能说:"你的朋友绝不会让你失望".而公主也只能这样回答:"罗马,当然是罗马."在人的一生里,即使只有这样的一刻心灵的相通,也会少却多少的遗憾! 　　<br /><br />5.《勇敢的心》:勇气 　　也许英雄并不是无所不能的神明,但英雄一定是无所畏惧的勇士.当你站在霓虹闪烁的街头,当你面对卑鄙讨好的笑脸,你又想起了那个让你汗颜的华莱士,这时你收起脸上惯带的笑容,默默的向梅尔.吉布森致敬,从来没有这么庄重.因为他让我们明白,什么才是真正的英雄."Freedom(自由)!"华莱士临死的一声呐喊,把你的血也点燃了. 　　<br /><br />6.《辛德勒的名单》:责任 　　所谓责任,就是未必做得成但必须去做.对于辛德勒来说,救助落难的犹太人是作为一个真正的人的责任.而把那段历史搬上银幕,则是斯皮尔伯格作为一个犹太艺术家的责任.《辛德勒的名单》包含着对受难者的祭奠,对拯救者的敬意,和对光明一定到来的信念.在影片放映后的一片赞誉声中,斯皮尔伯格平静的把影片的全部收益捐给了美国的纳粹大屠杀纪念馆. 　　<br /><br />7.&lt;肖申克的救赎>:信念 　　"有一种鸟儿是永远也关不住的,因为它的每片羽毛上都沾满了自由的光辉．＂一个人能够在１５年痛苦的牢狱生活里，不放弃对自由的向往，这是一种怎么样的精神力量？所以他成功了，成功的夺回了自由．＜肖申克的救赎＞中有这样一句话：体制化是这样一种东西，一开始你排斥它，后来你习惯它，直到最后你离不开它．想想看，我们的身体已经有多大的一部分被体制化了？ 　　<br /><br />8.&lt;Ｅ．Ｔ>：童心 　　如果看＜Ｅ．Ｔ＞时你流泪了，你不要害怕也不要惭愧，不管你有多大的年纪．实际上，能够和孩子们一起为Ｅ．Ｔ的遭遇而悲喜，是一件多么让人庆幸的事，这表明我们还有一点童心未曾泯灭，我们有一些梦想还藏在心底．当长着一双孩子的眼睛的Ｅ．Ｔ用超能力让孩子人的自行车飞上夜空并穿过那轮明月的时候，你是否感到了震憾？是否对自已一些已经习惯了的东西产生了怀疑？ 　　<br /><br />9.＜现代启示录＞：痛苦 　　战争是一种秩序的破坏，世界上最可悲最痛苦的事莫过于战争，最痛苦的战争电影莫过于＜现代启示录＞．＜现代启示录＞讲的是人性的倒退，秩序的破坏，但文明的进程却没有人能够阻挡得住． 　　<br /><br />10.&lt;第七封印＞：哲思 　　也许不是人人都能看懂＜第七封印＞，但如果一个男人在告别人世之前看一部电影的话，那么最好选择＜第七封印＞．它向世人明示了人生的最后哲思：一个男人怎样做到虽死犹生．
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/188247#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 30 Apr 2008 02:47:41 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/188247</link>
        <guid>http://tcrct.javaeye.com/blog/188247</guid>
      </item>
      <item>
        <title>迅雷的优化,在网上看到的.转过来收藏!</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/187003" style="color:red;">http://tcrct.javaeye.com/blog/187003</a>&nbsp;
          发表时间: 2008年04月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          无强制安装各种插件，<br /><br />　　迅雷关键是没太多的垃圾，跟迅雷或其他比起来，速度也差不多。<br /><br />　　下载工具就是拿来下载就够了，难道你装完电脑，就再装个迅雷就什么也不<br /><br />装了？？？拿迅雷来杀病毒？拿迅雷来当播放软件？看图？<br /><br />搜索！有百度，谷歌，纯网页搜索的又快又好要这个干毛……如果你是这样的人那<br /><br />就可以直接OUT了<br /><br />　　我之所以还用那么难用的迅雷，以为现在“迅雷的专用连接”的下载太<br /><br />多，到处搜，也找不到破处“迅雷专用连接”的办法，因为大家都说那时硬<br /><br />件问题，不是软件问题,服务器只给用迅雷下。没办法！<br /><br />　　迅雷的那么多乱七八糟的插件和垃圾功能，官方还要强行安装，不给自定义<br /><br />设置这样不仅浪费系统资源，宽带和硬盘，我想把快车做为主要下载工具，<br /><br />　　迅雷旧当绿色软件用，用的着的时候再拿出来，不安装任何，垃圾，IE插<br /><br />件，不加载垃圾没用的DLL文件，<br /><br />　　如什么迅雷社区，什么迅雷杀毒插件（这种西最他吗的烦，我开着专业的<br /><br />杀毒软件防火墙，还要它干吗！浪费资源，浪费宽带不说，<br /><br />每当下载完是还卡4不动！<br /><br />原来是在查毒啊，下载1个几G的文件的人就死残了，有些人就是这么死机的），<br /><br />什么迅雷播放器插件……<br /><br /><br />op_stop(); ;op_start(); <br /><br />　　！！！注意我不是雷友，没有兴趣去注册个号，不用社区，雷区==乱78糟的东西那就删！！！！<br /><br />　　看到很多“……迅雷去处广告\热门\社区的方法……”的帖子，但多是方法很少，不全面！<br /><br />　　不然我就不来写了！<br /><br />　　那我们就DIY到底！ <br /><br />　　<br /><br />一———需要用到的软件：<br /><br />　　①——记事本操作系统自带，有谁不知道的？<br /><br />　　②——Restorator2007一个小巧的补丁制作软件，用来编辑DLL文件的<br /><br />　　去这里搜去http://www.fixdown.com<br /><br /><br />③———自动上传文件免疫工具……（自己去http://www.skycn.com搜）<br /><br />http://www.skycn.com/soft/43171.html<br /><br /><br />二——原装最好,去下载个原装正版的迅雷5.7.9.472<br /><br />　　官方网址下载最安全http://www.xunlei.com<br /><br />　　什么去广告版！优化版！很可能有木马，漏洞！<br /><br />　　而我是在官方原版上修改（其实多是删，很少修改，改也是改INI文件，DAT<br /><br />文件，CFG文件TXT文件，这些本来就是拿来修改的，很少动DLL或EXE文件，<br /><br />就动1个DLL文件）改错了最多迅雷启动不了，不会有其他影响<br /><br />三———这事转自网友的也许大家都知道了<br /><br />　　确定已安装迅雷，先运行一便迅雷（！！非常重要！！）<br /><br />　　因为才安装后不运行的话，迅雷有很多文件不会被生成，导致你找不到<br /><br />　　文件修改——————在迅雷安装目录“Program”文件夹下，才安装时<br /><br />　　不会有以下文件：gui.cfg<br /><br />download.cfg<br /><br />xldc.cfg<br /><br />streammedia.cfg<br /><br />al.cfg<br /><br />　　error.ini<br /><br />BugReport.ini<br /><br />　　<br /><br />cid_store.dat<br /><br />xldc_stat.dat<br /><br />bd.dat<br /><br />xlhcc.dat<br /><br />error.dat<br /><br />stat.dat<br /><br />　　<br /><br />record.bin<br /><br />　　而且这些是用户配置文件，就是第一次运行才会生成，每台机子，每个版本的<br /><br />文件有1些不同，有很多人迅雷，启动不了，是换版本时，没有把原来软件的这些文<br /><br />件删掉，导致迅雷启动不了<br /><br />　　<br /><br />①———头顶小广告<br /><br />　　关闭迅雷后，在迅雷安装目录里打开“Program”文件夹，找到“gui.cfg”文<br /><br />件，选择用记事本打开，找到以下四个单词：<br /><br />　　ADServer=<br /><br />　　PVServer=<br /><br />　　ADCountingServer=<br /><br />　　HomePage=<br /><br />　　将“=”后面的网址都删掉.！！！等号和等号前面的要保留！！！<br /><br />　　如果还有其他网址，一样删掉<br /><br />　保存文件。！！！右键点击改动后的“gui.cfg”，选属性，改为“只读 ”。！！<br /><br />　　在迅雷安装目录里打开“Program”文件夹<br /><br />　　删除 Ad文件夹 下的所有文件小广告已经没有了<br /><br />　　<br /><br />②———右侧的热门推荐<br /><br />　　1 在迅雷安装目录里打开“Profiles”文件夹，<br /><br />　　找到“UserConfig.ini”文件，用记事本打开，<br /><br />　　找到“[Splitter_1]”，<br /><br />　　在其下方找到“Pane1_Hide=0”,将0改为1。保存文件。<br /><br />　<br /><br />　2———进到迅雷目录下Components文件夹里， 找到Tips文件夹<br /><br />　　<br /><br />删除Tips文件夹下的所有文件<br /><br />　　右侧的热门推荐已经没有了<br /><br />　　<br /><br />③———1 迅雷安装目录下Components文件夹里<br /><br />　　再进Community文件夹<br /><br />　　找到XLCommunity.dll文件,<br /><br />　　用 restorator软件 打开它；删除dialog下的1076文件，<br /><br />　　<br /><br />2———如果找不到1076文件，或1076文件删处后“社区互动”还在<br /><br />　　（就是删除下载面版那些烦人的“发布”“收藏”还有”雷友信息“……）<br /><br />　　就用记事本打开XLCommunity.dll文件<br /><br />必须用记事本，不要用其他16进制的文本编辑软件<br /><br />　　有很多乱码，不管，用查找菜单，查找client_down就行<br /><br />　　找到网址“http://recommend.xunlei.com/client_down.html”把它删除，<br /><br />不要删除其他东西，包括空格<br /><br />　　保存在重新打开迅雷就发现社区互动没了<br /><br />　　<br /><br /><br />④———去处迅雷的搜索插件<br /><br />　　迅雷目录下Components文件夹里<br /><br />　　找到Search文件夹并删除<br /><br />　　！！补充，顺便找到P4PClient文件夹，删除里面的1个DLL文件，<br /><br />　　他是和右侧的热门推荐有关的，不想要就全部删除！！！！！！！！<br /><br />　　<br /><br /><br />四———高级用户的BT干净修改手册<br /><br />　　<br /><br />1———删除雷友社区的登陆菜单，删除播放插件<br /><br />　　最简单的，进入迅雷目录下Components文件夹里<br /><br />　　看到DownAndPlay文件夹，看名字play就知道是播放插件<br /><br />　　里面都是*Player文件，因为还有些视频解码器（有了专业的暴风音影，还要这个干毛）<br /><br />　　现在就要卸载这些DLL文件或AX文件，用操作系统的regsvr32命令来卸载<br /><br />　　最简单就是在DOS窗口里卸载，<br /><br />　　在 “开始——运行——cmd” 打开DOS在DOS下进到迅雷目录下Components文件夹里的DownAndPlay文件夹<br /><br />　　如：D:回车<br /><br />　　cd空格D:\Thunder\Components\DownAndPlay回车<br /><br />　　假设你的迅雷装在D盘<br /><br />　　然后<br /><br />　　regsvr32空格/u空格DownAndPlay.dll空格DapPlayer.dll回车<br /><br />　　可以把所有文件+进去每2个文件必须以空格分开<br /><br />　　进入迅雷目录下Components文件夹里<br /><br />　　同理KanKan文件夹也是播放插件”迅雷看看“，用同样方法先卸载<br /><br />　　！！！！最后完了，就可以把DownAndPlay和KanKan文件夹删除<br /><br />　　<br /><br />2———删除多余的雷友社区图标，表情，迅雷界面和不要的插件<br /><br />　　<br /><br />进入迅雷目录下Components文件夹里再进Community文件夹找到faces文件夹<br /><br />　　表情全部在里面，全删除！！！！！<br /><br />　　进入迅雷目录下skins文件夹里<br /><br />　　找到2个文件夹迅雷界面全部在里面，只留一个剩下，全删除！！！！<br /><br />　　<br /><br /><br />进入迅雷目录下Plugins文件夹里<br /><br />　　同上先用regsvr32命令来卸载，文件夹里的DLL文件<br /><br />　　最后全删除！！！！爽啊！！世间清净了？还没完<br /><br />　　<br /><br />3———删除迅雷杀毒插件安全中心<br /><br />　　进入迅雷安装目录下Components文件夹里<br /><br />　　再进Security文件夹<br /><br />　　同上也必须先用regsvr32命令来卸载，文件夹里的所有DLL文件<br /><br />　　最后先删除Security文件夹下的各个DLL文件<br /><br />　　再删除Security文件夹里的XL360文件夹<br /><br />　　最后删除XLDiagnose文件夹里的DLL文件<br /><br />　　！！！！！哈哈哈哈大功告成！！！！！！<br /><br />　　<br /><br />　　<br /><br />4———迅雷还有个烦的，自动给IE或其他浏览器安装插件和右键下载<br /><br />　　禁不了？当然可以，进入迅雷安装目录下ComDlls文件夹里<br /><br />　　有人说里面的DLL文件，删除后，再启动迅雷又有了。那是你没删除完<br /><br />　　找到ThunderAgent.dll还有几个和他一样的大小，名字不一样，<br /><br />　　那些就是他的备份ThunderAgent_now.dll<br /><br />ThunderAgent_old.dll或<br /><br />　　ThunderAgent_old_0.dll<br /><br />　　ThunderAgent_old_1.dll<br /><br />　　ThunderAgent_old_2.dll<br /><br />　　……<br /><br />　　个人有所不同<br /><br />　　找到XunLeiBHO.dll他的备份<br /><br />XunLeiBHO_now.dll<br /><br />XunLeiBHO_old.dll……等等<br /><br />　　找到TDAtOnce.dll他的备份同上<br /><br />　　找完后同上先用regsvr32命令来卸载，最后全删除！！！！<br /><br />　　！！！！！！！！！！！世间终于清净了！！！！！！！！<br /><br /><br />五———补充<br /><br />杀4迅雷自动升级，下载补丁<br /><br />进入迅雷安装目录“Program”文件夹下 找到 Update文件夹<br /><br />找不到就新建1个Update文件夹<br /><br />（我是上着网安装的，装完打开迅雷它就用10秒自动下了插件！！！！）<br /><br />进入Update文件夹找到Update.dat——就是它，把它属性改为只读！！<br /><br />再把其他补丁删掉！！！以后就不会自动下载插件<br /><br />至少我的是这样，不知道其他人有没有用
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/187003#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 26 Apr 2008 10:23:17 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/187003</link>
        <guid>http://tcrct.javaeye.com/blog/187003</guid>
      </item>
      <item>
        <title>XML文档结构及DTD,Xpath</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/181129" style="color:red;">http://tcrct.javaeye.com/blog/181129</a>&nbsp;
          发表时间: 2008年04月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          XML文档结构<br />1，XML声明<br />xml文档是由一组使用唯一名称标识的实体组成的。始终以一个声明开始，这个声明指定该文档遵循XML1.0的规范。XML也有一种逻辑结构，在逻辑上，文档的组成成部分包括声明，元素，注释，字符引用和处理指令。<br />以下是代码片段：<br />&lt;?xml version="1.0" ?> <br /><br />这个就是XML的声明，声明也是处理指令，在XML中，所有的处理指令都以&lt;?开始，?>结束。&lt;?后面紧跟的是处理指令的名称。XML处理指令要求指定一个version属性。并允许指定可选的standalone和encodeing，其中standalone是指是否允许使用外部声明，可设置为yes或no。yes是指定不使用外部声明。no为使用。encodeing是指作者使用的字符编码格式。有UTF-8,GBK,gb2312等等。<br />2，根元素<br />每个XML文件都必须有且只能有一个根元素。用于描述文档功能。可以自定义根元素。下例中的root为根元素。 以下是代码片段：<br />&lt;root>...................&lt;/root><br /> <br /><br />3，XML代码<br />根据应用需要创建自定义的元素和属性。标签包括尖括号以及尖括号中的文本。元素是XML内容的基本单元。元素包括了开始标签、结束标签和标签之间的内容。<br />以下是代码片段：<br />&lt;title>XML是可扩展标记语言&lt;/title><br /> <br /><br />     整行统称为元素,其中&lt;title>&lt;/title>为标签,XML是可扩展标记语言是字符数据 <br />XML的标记有：标签，注释，处理指令，DTD和引用等。<br />注释<br />在XML中，注释与HTML的一样，都是用&lt;!-- 注释 -->指定注释。要遵循以下规则：<br /><br />在注释中不应包含有“-”“—”等字符，以免XML解释器产生混淆。 <br />注释不能放在标签中 <br />注释不能写在第一行。第一行是XML声明。 <br />注释不能嵌套 <br />可跨行注释，与java中的/**/注释块功能一样。<br />处理指令<br />凡是以&lt;?开始，  ?>结束的都是处理指令。XML声明就是一个处理指令。<br />标签间的字符数据的分类<br />标签间的字符数据可以是除了“&lt;”以外的任何合法（Unicode）字符。“&lt;”字符是预留作为标签的开始字符。字符数据分以下两类：<br /><br />PCDATA（是指将要通过解析器进行解析的文本） <br />CDATA  （是指不要通过解析器进行解析的文本）<br />其中不允许中CDATA块之内使用字符串“]]&gt;”,因为它表示CDATA块的结束。<br />实体<br />实体可以是常用的短语，键盘字符，文件，数据库记录或任何包含数据的项。在XML中，有时实体内包含了些字符，如&,&lt;,>,",'等。这些均需要对其进行转义，否则会对XML解释器生成错误。<br />字符<br /> 转义后字符 <br /> <br />&lt;<br /> &lt; <br /> <br />><br /> ><br /> <br />"<br /> " <br /> <br />'<br /> &apos;<br /> <br />&<br /> &<br /> <br /><br />在XML中出现以上字符的，均需要转义才能通过。<br />实体格式如下： 以下是代码片段：<br />&lt;!ENTITY 实体引用名 "引用内容"> <br /><br />实体又分两类：<br />1，一般实体(格式：&实体引用名;)<br />2，参数实体(格式：%实体引用名;)<br />一般实体，可以在XML文档中的任何位置出现的实体称为一般实体。实体可以声明为内部实体还是外部实体。外部实体分SYSYTEM及PUBLIC两种。SYSYTEM引用本地计算机，PUBLIC引用公共计算机，外部实体格式如下：<br />&lt;!ENTITY 引用名 SYSTEM(PUBLIC) "URI地址"><br />管理实体引用的规则包括：<br /><br />引用实体前，必须先在XML文档中声明该实体。 <br />实体引用不应含有任空空格。例如：& title; &title ;都是不对的。 <br />实体引用的XML文件必须是格式良好的。<br />实体引用可以替代常规字符数据，也可以在标签属性中使用实体引用。如<br />&lt;title value="&titleValue" /><br />DOCTYPE声明<br />在XML文档中，&lt;!DOCTYPE[...]>声明跟在XML声明的后面。实体也必须在DOCTYPE声明中声明。语法如下：<br />以下是代码片段：<br />&lt;?xml version="1.0" unicode="UTF-8"><br />&lt;!DOCTYPE[<br />.....在此声明实体&lt;!ENTITY 实体引用名 "引用内容"><br />]><br /> <br /><br />代码例子：<br />以下是代码片段：<br />&lt;?xml version="1.0" encoding="GBK"?><br />&lt;!DOCTYPE root[ <br />&lt;!ENTITY titleValue "引用字符1"><br />&lt;!ENTITY titleValue2 "引用字符2"><br />]><br />&lt;root><br />&lt;title value="&titleValue;"> &titleValue; &lt;/title><br />&lt;title2><br />&lt;value>&lt;a>&titleValue2;&lt;/a>&lt;/value><br />&lt;/title2><br />&lt;/root> <br /><br />在IE是打开XML文件显示为：<br />以下是代码片段：<br />&lt;?xml version="1.0" encoding="GBK" ?> <br />&lt;!DOCTYPE root (View Source for full doctype...)> <br /><a href="file:///C:/Documents%20and%20Settings/Administrator/桌面/xml/test.xml#" target="_blank">-</a> &lt;root><br />&lt;title value="引用字符1">引用字符1&lt;/title> <br /><br /><a href="file:///C:/Documents%20and%20Settings/Administrator/桌面/xml/test.xml#" target="_blank">-</a> &lt;title2><br /><a href="file:///C:/Documents%20and%20Settings/Administrator/桌面/xml/test.xml#" target="_blank">-</a>    &lt;value><br />      &lt;a>引用字符2&lt;/a> <br /><br />&lt;/value><br /><br /><br />&lt;/title2><br /><br /><br />&lt;/root><br /><br /><br /> <br /><br />当满足以下条件时，是为格式良好的XML文档：<br />至少需要一个元素<br /><br />XML标签区分大小写 <br />应正确使用结束标签 <br />正确的嵌套 <br />应使用合法标签：标签必须以一个字母，下划线，或冒号开始，后面可以跟字母，数字，句号，冒号，下划线，连字符的组合。但不能有空格。也不应以XML开头，因为XML是保留字。 <br />标记名称长度 <br />应定义有效属性 <br />应验证文档<br />在XML中，所有的值都被被为字符串。<br />解析器<br />解析器有两种类型：<br />1，非验证解析器：它检查文档的格式是否良好<br />2，验证解析器：使用DTD检查文档的有效性（分别有Apache的Xerces和Oracle XML Parser）<br />DTD：(Document)文档类型结构<br />DTD的一般结构如下：<br />&lt;!DOCTYPE dtd-name[<br />&lt;!ELEMENT element-name (element-content type)><br />&lt;!ATTLIST element-name attribute-name attribute-type default-value><br />]><br /> <br /><br />element-name :元素名<br />element-content type：元素类型<br />attribute-name ：属性名<br />attribute-type:属性类型<br />default-value：默认值<br />空元素：EMPTY，指定该元素没有子元素或字符数据。&lt;!ELEMENT element-name (EMPTY)><br />带数据的元素：<br />&lt;!ELEMENT element-name (#CDATA)> 包含有不会通过解析器解析的数据<br />&lt;!ELEMENT element-name (#PCDATA)> 包含有要通过解析器解析的数据<br />&lt;!ELEMENT element-name (ANY)> 包含零个或零个以上任何声明类型的子元素以及字符数据<br />带有子元素的元素<br />&lt;!ELEMENT element-name (child-element-name1,child-element-name2....)> 多个子元素时用，号分隔<br />声明相同元素只出现一次<br />&lt;!ELEMENT element-name (child-element-name)><br />声明相同元素只出现零次或一次<br />&lt;!ELEMENT element-name (child-element-name?)><br />声明相同元素只出现一次或多次<br />&lt;!ELEMENT element-name (child-element-name+)><br />声明相同元素只出现零次或多次<br />&lt;!ELEMENT element-name (child-element-name*)><br />属性声明：<br />Default属性值：默认属性值<br />&lt;!ATTLIST element-name attribute-name CDATA "default-value"><br />Implied属性值：可有可无<br />&lt;!ATTLIST element-name attribute-name #IMPLIED><br />Required属性值：指定属性为必须的<br />&lt;!ATTLIST element-name attribute-name #REQUIRED><br />Fixed属性值：属性值是固定的，使作者不能更改<br />&lt;!ATTLIST element-name attribute-name CDATA(PCDATA) #FIXED "value"><br />Enumerated属性类型：使属性值成为一组固定合法值的一员<br />&lt;!ATTLIST element-name attribute-name (eval1 | eval2 | ....) "default-value"><br />DTD示例：<br />内部DTD 以下是代码片段：<br />&lt;?xml version="1.0" encoding="GBK"?><br />&lt;!DOCTYPE root[ <br />&lt;!ELEMENT root (book*)><br />&lt;!ELEMENT book (name,title,versions,address)><br />&lt;!ELEMENT name (#PCDATA)><br />&lt;!ELEMENT title (#PCDATA)><br />&lt;!ELEMENT versions (#PCDATA)><br />&lt;!ELEMENT address (#PCDATA)><br />&lt;!ATTLIST title    value CDATA #REQUIRED><br />&lt;!ATTLIST address  value CDATA #FIXED "中国广东"><br />&lt;!ATTLIST versions value (1.0 | 2.0 ) "1.0"><br />&lt;!ENTITY addr "中国广东珠海"><br />]><br />&lt;root><br />&lt;book><br />  &lt;name>XML&lt;/name><br />  &lt;title value="a">xml可扩展语言&lt;/title><br />  &lt;versions value="1.0">1.0&lt;/versions> <br />  &lt;address value="中国广东">&addr;&lt;/address><br />&lt;/book><br />&lt;book><br />  &lt;name>XML&lt;/name><br />  &lt;title value="">xml可扩展语言&lt;/title><br />  &lt;versions>1.0&lt;/versions><br />  &lt;address value="中国广东">&addr;&lt;/address><br />&lt;/book><br />&lt;/root><br /> <br /><br />外部DTD使用语法如下：<br />&lt;?xml version="1.0" encoding="GBK"?><br />&lt;!DOCTYPE 根元素的名称 SYSTEM "外部DTD文件URI"><br />&lt;root>........&lt;root><br />此处的外部DTD文件内容为： 以下是代码片段：<br />&lt;?xml version="1.0" encoding="GBK"?><br />&lt;!ELEMENT root (book*)><br />&lt;!ELEMENT book (name,title,versions,address)><br />&lt;!ELEMENT name (#PCDATA)><br />&lt;!ELEMENT title (#PCDATA)><br />&lt;!ELEMENT versions (#PCDATA)><br />&lt;!ELEMENT address (#PCDATA)><br />&lt;!ATTLIST title    value CDATA #REQUIRED><br />&lt;!ATTLIST address  value CDATA #FIXED "中国广东"><br />&lt;!ATTLIST versions value (1.0 | 2.0 ) "1.0"><br />&lt;!ENTITY addr "中国广东珠海"><br /> <br /><br />保存为dtd文件。<br /><br />在网上搜到的Xpath教程！<br /><br />基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径<br /><br />/AAA <br />选择根元素AAA <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;DDD> <br />               &lt;BBB/> <br />          &lt;/DDD> <br />          &lt;CCC/> <br />     &lt;/AAA>  <br /> <br /><br /><br />/AAA/CCC <br />选择AAA的所有CCC子元素 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;DDD> <br />               &lt;BBB/> <br />          &lt;/DDD> <br />          &lt;CCC/> <br />     &lt;/AAA>  <br /> <br /><br /><br />/AAA/DDD/BBB <br />选择AAA的子元素DDD的所有子元素 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;DDD> <br />               &lt;BBB/> <br />          &lt;/DDD> <br />          &lt;CCC/> <br />     &lt;/AAA>  <br /> <br /><br /><br />如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)<br /><br />//BBB <br />选择所有BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />          &lt;BBB/> <br />          &lt;DDD> <br />               &lt;BBB/> <br />          &lt;/DDD> <br />          &lt;CCC> <br />               &lt;DDD> <br />                    &lt;BBB/> <br />                    &lt;BBB/> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//DDD/BBB <br />选择所有父元素是DDD的BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />          &lt;BBB/> <br />          &lt;DDD> <br />               &lt;BBB/> <br />          &lt;/DDD> <br />          &lt;CCC> <br />               &lt;DDD> <br />                    &lt;BBB/> <br />                    &lt;BBB/> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />星号 * 表示选择所有由星号之前的路径所定位的元素<br /><br />/AAA/CCC/DDD/* <br />选择所有路径依附于/AAA/CCC/DDD的元素 <br /><br />     &lt;AAA> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;BBB/> <br />                    &lt;BBB/> <br />                    &lt;EEE/> <br />                    &lt;FFF/> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD> <br />                   &lt;BBB/> <br />                    &lt;BBB/> <br />                    &lt;EEE/> <br />                    &lt;FFF/> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />          &lt;CCC> <br />               &lt;BBB> <br />                    &lt;BBB> <br />                         &lt;BBB/> <br />                    &lt;/BBB> <br />               &lt;/BBB> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />/*/*/*/BBB <br />选择所有的有3个祖先元素的BBB元素 <br /><br />     &lt;AAA> <br />          &lt;XXX> <br />               &lt;DDD> <br />                   &lt;BBB/> <br />                    &lt;BBB/> <br />                    &lt;EEE/> <br />                    &lt;FFF/> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD> <br />                    &lt;BBB/> <br />                    &lt;BBB/> <br />                    &lt;EEE/> <br />                    &lt;FFF/> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />          &lt;CCC> <br />               &lt;BBB> <br />                    &lt;BBB> <br />                         &lt;BBB/> <br />                    &lt;/BBB> <br />               &lt;/BBB> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//* <br />选择所有元素 <br /><br />     &lt;AAA> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;BBB/> <br />                    &lt;BBB/> <br />                    &lt;EEE/> <br />                    &lt;FFF/> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD> <br />                    &lt;BBB/> <br />                    &lt;BBB/> <br />                    &lt;EEE/> <br />                    &lt;FFF/> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />          &lt;CCC> <br />               &lt;BBB> <br />                    &lt;BBB> <br />                         &lt;BBB/> <br />                    &lt;/BBB> <br />               &lt;/BBB> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.<br /><br />/AAA/BBB[1] <br />选择AAA的第一个BBB子元素 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />     &lt;/AAA>  <br /> <br /><br /><br />/AAA/BBB[last()] <br />选择AAA的最后一个BBB子元素 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />     &lt;/AAA>  <br /> <br /><br /><br />属性通过前缀 @ 来指定<br /><br />//@id <br />选择所有的id属性 <br /><br />     &lt;AAA> <br />          &lt;BBB id = "b1"/> <br />          &lt;BBB id = "b2"/> <br />          &lt;BBB name = "bbb"/> <br />          &lt;BBB/> <br />     &lt;/AAA>  <br /> <br /><br /><br />//BBB[@id] <br />选择有id属性的BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB id = "b1"/> <br />          &lt;BBB id = "b2"/> <br />          &lt;BBB name = "bbb"/> <br />          &lt;BBB/> <br />     &lt;/AAA>  <br /> <br /><br /><br />//BBB[@name] <br />选择有name属性的BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB id = "b1"/> <br />          &lt;BBB id = "b2"/> <br />          &lt;BBB name = "bbb"/> <br />          &lt;BBB/> <br />     &lt;/AAA>  <br /> <br /><br /><br />//BBB[@*] <br />选择有任意属性的BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB id = "b1"/> <br />          &lt;BBB id = "b2"/> <br />          &lt;BBB name = "bbb"/> <br />          &lt;BBB/> <br />     &lt;/AAA>  <br /> <br /><br /><br />//BBB[not(@*)] <br />选择没有属性的BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB id = "b1"/> <br />          &lt;BBB id = "b2"/> <br />          &lt;BBB name = "bbb"/> <br />          &lt;BBB/> <br />     &lt;/AAA>  <br /> <br /><br /><br />属性的值可以被用来作为选择的准则, normalize-space函数删除了前部和尾部的空格, 并且把连续的空格串替换为一个单一的空格<br /><br />//BBB[@id='b1'] <br />选择含有属性id且其值为'b1'的BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB id = "b1"/> <br />          &lt;BBB name = " bbb "/> <br />          &lt;BBB name = "bbb"/> <br />     &lt;/AAA>  <br /> <br /><br /><br />//BBB[@name='bbb'] <br />选择含有属性name且其值为'bbb'的BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB id = "b1"/> <br />          &lt;BBB name = " bbb "/> <br />          &lt;BBB name = "bbb"/> <br />     &lt;/AAA>  <br /> <br /><br /><br />//BBB[normalize-space(@name)='bbb'] <br />选择含有属性name且其值(在用normalize-space函数去掉前后空格后)为'bbb'的BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB id = "b1"/> <br />          &lt;BBB name = " bbb "/> <br />          &lt;BBB name = "bbb"/> <br />     &lt;/AAA>  <br /> <br /><br /><br />count()函数可以计数所选元素的个数<br /><br />//*[count(BBB)=2] <br />选择含有2个BBB子元素的元素 <br /><br />     &lt;AAA> <br />          &lt;CCC> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/CCC> <br />          &lt;DDD> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/DDD> <br />          &lt;EEE> <br />               &lt;CCC/> <br />               &lt;DDD/> <br />          &lt;/EEE> <br />     &lt;/AAA>  <br /> <br /><br /><br />//*[count(*)=2] <br />选择含有2个子元素的元素 <br /><br />     &lt;AAA> <br />          &lt;CCC> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/CCC> <br />          &lt;DDD> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/DDD> <br />          &lt;EEE> <br />               &lt;CCC/> <br />               &lt;DDD/> <br />          &lt;/EEE> <br />     &lt;/AAA>  <br /> <br /><br /><br />//*[count(*)=3] <br />选择含有3个子元素的元素 <br /><br />     &lt;AAA> <br />          &lt;CCC> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/CCC> <br />          &lt;DDD> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/DDD> <br />          &lt;EEE> <br />               &lt;CCC/> <br />               &lt;DDD/> <br />          &lt;/EEE> <br />     &lt;/AAA>  <br /> <br /><br /><br />name()函数返回元素的名称, start-with()函数在该函数的第一个参数字符串是以第二个参数字符开始的情况返回true, contains()函数当其第一个字符串参数包含有第二个字符串参数时返回true.<br /><br />//*[name()='BBB'] <br />选择所有名称为BBB的元素(这里等价于//BBB) <br /><br />     &lt;AAA> <br />          &lt;BCC> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/BCC> <br />          &lt;DDB> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/DDB> <br />          &lt;BEC> <br />               &lt;CCC/> <br />               &lt;DBD/> <br />          &lt;/BEC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//*[starts-with(name(),'B')] <br />选择所有名称以"B"起始的元素 <br /><br />     &lt;AAA> <br />          &lt;BCC> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/BCC> <br />          &lt;DDB> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/DDB> <br />          &lt;BEC> <br />               &lt;CCC/> <br />               &lt;DBD/> <br />          &lt;/BEC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//*[contains(name(),'C')] <br />选择所有名称包含"C"的元素 <br /><br />     &lt;AAA> <br />          &lt;BCC> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/BCC> <br />          &lt;DDB> <br />               &lt;BBB/> <br />               &lt;BBB/> <br />          &lt;/DDB> <br />          &lt;BEC> <br />               &lt;CCC/> <br />               &lt;DBD/> <br />          &lt;/BEC> <br />     &lt;/AAA>  <br /> <br /><br /><br /><br />string-length函数返回字符串的字符数,你应该用&lt;替代&lt;, 用>代替><br /><br />//*[string-length(name()) = 3] <br />选择名字长度为3的元素 <br /><br />     &lt;AAA> <br />          &lt;Q/> <br />          &lt;SSSS/> <br />          &lt;BB/> <br />          &lt;CCC/> <br />          &lt;DDDDDDDD/> <br />          &lt;EEEE/> <br />     &lt;/AAA>  <br /> <br /><br /><br />//*[string-length(name()) &lt; 3] <br />选择名字长度小于3的元素 <br /><br />     &lt;AAA> <br />          &lt;Q/> <br />          &lt;SSSS/> <br />          &lt;BB/> <br />          &lt;CCC/> <br />          &lt;DDDDDDDD/> <br />          &lt;EEEE/> <br />     &lt;/AAA>  <br /> <br /><br /><br />//*[string-length(name()) > 3] <br />选择名字长度大于3的元素 <br /><br />     &lt;AAA> <br />          &lt;Q/> <br />          &lt;SSSS/> <br />          &lt;BB/> <br />          &lt;CCC/> <br />          &lt;DDDDDDDD/> <br />          &lt;EEEE/> <br />     &lt;/AAA>  <br /> <br /><br /><br />多个路径可以用分隔符 | 合并在一起<br /><br />//CCC | //BBB <br />选择所有的CCC和BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />          &lt;DDD> <br />               &lt;CCC/> <br />          &lt;/DDD> <br />          &lt;EEE/> <br />     &lt;/AAA>  <br /> <br /><br />/AAA/EEE | //BBB <br />选择所有的BBB元素和所有是AAA的子元素的EEE元素 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />          &lt;DDD> <br />               &lt;CCC/> <br />          &lt;/DDD> <br />          &lt;EEE/> <br />     &lt;/AAA>  <br /> <br /><br />/AAA/EEE | //DDD/CCC | /AAA | //BBB <br />可以合并的路径数目没有限制 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />          &lt;DDD> <br />               &lt;CCC/> <br />          &lt;/DDD> <br />          &lt;EEE/> <br />     &lt;/AAA>  <br /> <br /><br /><br />child轴(axis)包含上下文节点的子元素, 作为默认的轴,可以忽略不写. <br /><br />/AAA <br />等价于 /child::AAA <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />     &lt;/AAA>  <br /> <br /><br /><br />/child::AAA <br />等价于/AAA <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />     &lt;/AAA>  <br /> <br /><br /><br />/AAA/BBB <br />等价于/child::AAA/child::BBB <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />     &lt;/AAA>  <br /> <br /><br /><br />/child::AAA/child::BBB <br />等价于/AAA/BBB <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />     &lt;/AAA>  <br /> <br /><br /><br />/child::AAA/BBB <br />二者都可以被合并 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />     &lt;/AAA>  <br /> <br /><br /><br /><br />descendant (后代)轴包含上下文节点的后代,一个后代是指子节点或者子节点的子节点等等, 因此descendant轴不会包含属性和命名空间节点. <br /><br />/descendant::* <br />选择文档根元素的所有后代.即所有的元素被选择 <br /><br />    &lt;AAA> <br />          &lt;BBB> <br />               &lt;DDD> <br />                    &lt;CCC> <br />                         &lt;DDD/> <br />                         &lt;EEE/> <br />                    &lt;/CCC> <br />               &lt;/DDD> <br />          &lt;/BBB> <br />          &lt;CCC> <br />               &lt;DDD> <br />                    &lt;EEE> <br />                         &lt;DDD> <br />                              &lt;FFF/> <br />                         &lt;/DDD> <br />                    &lt;/EEE> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />/AAA/BBB/descendant::* <br />选择/AAA/BBB的所有后代元素 <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;DDD> <br />                    &lt;CCC> <br />                         &lt;DDD/> <br />                         &lt;EEE/> <br />                    &lt;/CCC> <br />               &lt;/DDD> <br />          &lt;/BBB> <br />          &lt;CCC> <br />               &lt;DDD> <br />                    &lt;EEE> <br />                         &lt;DDD> <br />                              &lt;FFF/> <br />                         &lt;/DDD> <br />                    &lt;/EEE> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//CCC/descendant::* <br />选择在祖先元素中有CCC的所有元素 <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;DDD> <br />                    &lt;CCC> <br />                         &lt;DDD/> <br />                         &lt;EEE/> <br />                    &lt;/CCC> <br />               &lt;/DDD> <br />          &lt;/BBB> <br />          &lt;CCC> <br />               &lt;DDD> <br />                    &lt;EEE> <br />                         &lt;DDD> <br />                              &lt;FFF/> <br />                         &lt;/DDD> <br />                    &lt;/EEE> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//CCC/descendant:DD <br />选择所有以CCC为祖先元素的DDD元素 <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;DDD> <br />                    &lt;CCC> <br />                         &lt;DDD/> <br />                         &lt;EEE/> <br />                    &lt;/CCC> <br />               &lt;/DDD> <br />          &lt;/BBB> <br />          &lt;CCC> <br />               &lt;DDD> <br />                    &lt;EEE> <br />                         &lt;DDD> <br />                              &lt;FFF/> <br />                         &lt;/DDD> <br />                    &lt;/EEE> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />parent轴(axis)包含上下文节点的父节点, 如果有父节点的话<br /><br />//DDD/parent::* <br />选择DDD元素的所有父节点 <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;DDD> <br />                    &lt;CCC> <br />                         &lt;DDD/> <br />                         &lt;EEE/> <br />                    &lt;/CCC> <br />               &lt;/DDD> <br />          &lt;/BBB> <br />          &lt;CCC> <br />               &lt;DDD> <br />                    &lt;EEE> <br />                         &lt;DDD> <br />                              &lt;FFF/> <br />                         &lt;/DDD> <br />                    &lt;/EEE> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />ancestor轴(axis)包含上下节点的祖先节点, 该祖先节点由其上下文节点的父节点以及父节点的父节点等等诸如此类的节点构成,所以ancestor轴总是包含有根节点,除非上下文节点就是根节点本身.<br /><br />/AAA/BBB/DDD/CCC/EEE/ancestor::* <br />选择一个绝对路径上的所有节点 <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;DDD> <br />                    &lt;CCC> <br />                         &lt;DDD/> <br />                         &lt;EEE/> <br />                    &lt;/CCC> <br />               &lt;/DDD> <br />          &lt;/BBB> <br />          &lt;CCC> <br />               &lt;DDD> <br />                    &lt;EEE> <br />                         &lt;DDD> <br />                              &lt;FFF/> <br />                         &lt;/DDD> <br />                    &lt;/EEE> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//FFF/ancestor::* <br />选择FFF元素的祖先节点 <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;DDD> <br />                    &lt;CCC> <br />                         &lt;DDD/> <br />                         &lt;EEE/> <br />                    &lt;/CCC> <br />               &lt;/DDD> <br />          &lt;/BBB> <br />          &lt;CCC> <br />               &lt;DDD> <br />                    &lt;EEE> <br />                         &lt;DDD> <br />                              &lt;FFF/> <br />                         &lt;/DDD> <br />                    &lt;/EEE> <br />               &lt;/DDD> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br /><br />following-sibling轴(axis)包含上下文节点之后的所有兄弟节点<br /><br />/AAA/BBB/following-sibling::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;DDD/> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                    &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br />//CCC/following-sibling::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;DDD/> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                   &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />preceding-sibling 轴(axis)包含上下文节点之前的所有兄弟节点<br /><br />/AAA/XXX/preceding-sibling::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;DDD/> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                    &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//CCC/preceding-sibling::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;DDD/> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                    &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />following轴(axis)包含同一文档中按文档顺序位于上下文节点之后的所有节点, 除了祖先节点,属性节点和命名空间节点<br /><br />/AAA/XXX/following::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ> <br />                    &lt;DDD/> <br />                    &lt;DDD> <br />                         &lt;EEE/> <br />                    &lt;/DDD> <br />               &lt;/ZZZ> <br />               &lt;FFF> <br />                    &lt;GGG/> <br />               &lt;/FFF> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                    &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//ZZZ/following::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ> <br />                    &lt;DDD/> <br />                    &lt;DDD> <br />                         &lt;EEE/> <br />                    &lt;/DDD> <br />               &lt;/ZZZ> <br />               &lt;FFF> <br />                    &lt;GGG/> <br />               &lt;/FFF> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                    &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />following轴(axis)包含同一文档中按文档顺序位于上下文节点之前的所有节点, 除了祖先节点,属性节点和命名空间节点<br /><br />/AAA/XXX/preceding::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ> <br />                    &lt;DDD/> <br />               &lt;/ZZZ> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                    &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//GGG/preceding::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ> <br />                    &lt;DDD/> <br />               &lt;/ZZZ> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                    &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />descendant-or-self 轴(axis)包含上下文节点本身和该节点的后代节点<br /><br />/AAA/XXX/descendant-or-self::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ> <br />                    &lt;DDD/> <br />               &lt;/ZZZ> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                    &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//CCC/descendant-or-self::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ> <br />                    &lt;DDD/> <br />               &lt;/ZZZ> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                    &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />ancestor-or-self 轴(axis)包含上下文节点本身和该节点的祖先节点<br /><br />/AAA/XXX/DDD/EEE/ancestor-or-self::* <br /> <br /><br />    &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ> <br />                    &lt;DDD/> <br />               &lt;/ZZZ> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                    &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//GGG/ancestor-or-self::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ> <br />                    &lt;DDD/> <br />               &lt;/ZZZ> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;DDD/> <br />                    &lt;CCC/> <br />                    &lt;FFF/> <br />                    &lt;FFF> <br />                         &lt;GGG/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />ancestor, descendant, following, preceding 和self轴(axis)分割了XML文档(忽略属性节点和命名空间节点), 不能交迭, 而一起使用则包含所有节点<br /><br />//GGG/ancestor::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ/> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;FFF> <br />                         &lt;HHH/> <br />                         &lt;GGG> <br />                              &lt;JJJ> <br />                                   &lt;QQQ/> <br />                              &lt;/JJJ> <br />                              &lt;JJJ/> <br />                         &lt;/GGG> <br />                         &lt;HHH/> <br />                   &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//GGG/descendant::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ/> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;FFF> <br />                         &lt;HHH/> <br />                         &lt;GGG> <br />                              &lt;JJJ> <br />                                   &lt;QQQ/> <br />                              &lt;/JJJ> <br />                              &lt;JJJ/> <br />                         &lt;/GGG> <br />                         &lt;HHH/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//GGG/following::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ/> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;FFF> <br />                         &lt;HHH/> <br />                         &lt;GGG> <br />                              &lt;JJJ> <br />                                   &lt;QQQ/> <br />                              &lt;/JJJ> <br />                              &lt;JJJ/> <br />                         &lt;/GGG> <br />                         &lt;HHH/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//GGG/preceding::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ/> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;FFF> <br />                         &lt;HHH/> <br />                         &lt;GGG> <br />                              &lt;JJJ> <br />                                   &lt;QQQ/> <br />                              &lt;/JJJ> <br />                              &lt;JJJ/> <br />                         &lt;/GGG> <br />                         &lt;HHH/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//GGG/self::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ/> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;FFF> <br />                         &lt;HHH/> <br />                         &lt;GGG> <br />                              &lt;JJJ> <br />                                   &lt;QQQ/> <br />                              &lt;/JJJ> <br />                              &lt;JJJ/> <br />                         &lt;/GGG> <br />                         &lt;HHH/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />//GGG/ancestor::* | //GGG/descendant::* | //GGG/following::* | //GGG/preceding::* | //GGG/self::* <br /> <br /><br />     &lt;AAA> <br />          &lt;BBB> <br />               &lt;CCC/> <br />               &lt;ZZZ/> <br />          &lt;/BBB> <br />          &lt;XXX> <br />               &lt;DDD> <br />                    &lt;EEE/> <br />                    &lt;FFF> <br />                         &lt;HHH/> <br />                         &lt;GGG> <br />                              &lt;JJJ> <br />                                   &lt;QQQ/> <br />                              &lt;/JJJ> <br />                              &lt;JJJ/> <br />                         &lt;/GGG> <br />                         &lt;HHH/> <br />                    &lt;/FFF> <br />               &lt;/DDD> <br />          &lt;/XXX> <br />          &lt;CCC> <br />               &lt;DDD/> <br />          &lt;/CCC> <br />     &lt;/AAA>  <br /> <br /><br /><br />div运算符做浮点除法运算, mod运算符做求余运算, floor函数返回不大于参数的最大整数(趋近于正无穷), ceiling返回不小于参数的最小整数(趋近于负无穷)<br /><br />//BBB[position() mod 2 = 0 ] <br />选择偶数位置的BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />          &lt;CCC/> <br />          &lt;CCC/> <br />     &lt;/AAA>  <br /> <br /><br /><br />//BBB[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ] <br />选择中间的BBB元素 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />          &lt;CCC/> <br />          &lt;CCC/> <br />     &lt;/AAA>  <br /> <br /><br /><br />//CCC[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ] <br />选择中间的CCC元素 <br /><br />     &lt;AAA> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;BBB/> <br />          &lt;CCC/> <br />          &lt;CCC/> <br />          &lt;CCC/> <br />     &lt;/AAA>
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/181129#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 Apr 2008 10:30:33 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/181129</link>
        <guid>http://tcrct.javaeye.com/blog/181129</guid>
      </item>
      <item>
        <title>Struts</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/181128" style="color:red;">http://tcrct.javaeye.com/blog/181128</a>&nbsp;
          发表时间: 2008年04月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Struts<br />学习Struts前先简单了解一下什么叫MVC三层架构:<br />MVC是一种设计模式,它强制性地把应用程序的输入,处理和输出分开.MVC将应用程序分为三部分:<br />1,模型:负责业务逻辑<br />2,视图:负责表示业务数据的视图<br />3,控制:负责控制用户输入的流和状态<br /><br />MVC的优缺点<br />优点:将显示,逻辑,和数据分开.提高了模型的可移植性.<br />缺点:增加了系统结构和实现的复杂性,在提高大项目开发效率的同时降低了小项目的开发效率.<br /><br />Struts<br /><br />Struts实际上是在JSP Model2的基础上实现的一个MVC框架。Struts框架实现的只是MVC的视图和控制器组件，视图由一组JSP文件组成，控制器由ActionServlet和Action来实现。<br /><br />1. Struts视图<br />     Struts框架中的视图由一组JSP页面构建的。在这些JSP页面不应出现业务逻辑。只有标签，这些标签可以是标准的JSP标签，也可以是自定义标签。除此之外，通常也反ActionForm Bean也划分到视图层中，ActionForm Bean是一种JavaBean。是Struts框架用来进行视图和控制器之间表单数据的传换的。<br /><br />2. Struts控制器<br />     控制器是Struts的重要组成部份。由ActionServlet类和Action类来实现。ActionServlet继承了javax.servlet.http.HttpServlet类。它在MVC模型中扮演着中央控制器的角色。ActionServlet主要负责接受HTTP的请求信息，并根据配置文件struts-config.xml的配置信息，把请求转发至适合的Action对象，如果Action对象不存在。ActionServlet会先创建这个对象。<br /><br />3  Struts-config.xml配置文件<br />     这配置文件的信息在系统启动的时候就读入到内存，并供Struts在运行期间使用。在用户发送请求到ActionServlet时，ActionServlet会访问Strutst-config.xml配置文件，并根据配置文件中的Action信息把请求转发至Action对象。在Struts-config.xml中，每一个Action的信息都通过一个Action元素来配置。<br /><br />4  Struts的基本交互步骤<br />     在WEB应用启动时就会先加载并初始化ActionServlet，而ActionServlet从Struts-confit.xml文件中读取配置信息：<br />（1）用户发送的所有请求都提交到ActionServlet处理。<br />（2）ActionServlet根据struts-config.xml配置文件中的配置信息，将请求转发至对应的Action对象。<br />（3）在用户提交表单时，一个配置好的ActionForm对象将被创建，并被填入表单的相应数据。<br />（4）Action对象从ActionForm对象中取得数据。<br />（5）Action对象调用业务逻辑组件，完成业务功能。<br />（6）再根据struts-config.xml配置文件中的配置信息返回到JSP页面中。<br /><br />Struts的优缺点：<br />优点：<br />        使用标准的HTTP请求-响应设计来定义<br />        使用容器的默认日志记录系统，不需要单独的包进行配置<br />        在处理过程中可以记录状态消息，这有助于调试。<br />        支待本地化<br />        提供标签扩展<br />        提供详细的JAVA文档和用户指南<br />缺点：<br />        没有事件模型<br />        无法自动调试，要手动设置代码断点调试<br />        没有默认数据或具体建议<br />        标签扩展要求提供多个属性，因此难以进行详细的编程<br /><br />Strurst控制器<br /><br />Strurst控制器(ActionServler)：<br /><br />Struts的控制器主要执行以下任务：<br />1、接受用户的请求<br />2、根据不同的请求去调用对应的模型组件(Action)来执行相应的业务逻辑。<br />3、获取业务逻辑的执行结果。<br />4、根据当前的状态数据及业务逻辑的处理结果，选择适合的视图组件(JSP)返回给客户。<br /><br />Struts框架中控制器组件的类主要如下<br /><br />ActionServlet       <br />RequestProcessor <br />Action <br />ActionMapping <br />ActionForward<br /><br />ActionServlet<br />是一个Servlet类，扩展了javax.servlet.http.HttpServlet,实现了servlet的生命周期的方法（init(),doGet(),doPost(),destroy()）之处，还添加了一个真正处理请求的方法process.,实际上控制器所执行的控制逻辑包含在RequestProcessor类中，而不是ActionServlet类中。RequestProcessor类的process()方法从struts-config.xml文件中根据请求的URI查找匹配的&lt;action>子元素，并根据&lt;action>子元素的"name"属性在该配置文件中查找匹配的&lt;form-bean>子元素。确定下一步要用到的ActionForm Bean.，取得FormBean的名称后，process()方法将创建或检索由&lt;form-bean>元素的type属性命名的ActionForm的一个实例。然后用再请求提交的值来填充数据。并调用ActionForm的validate()方法验证提交的值。最后process()方法才真正开始处理请求。它首先从&lt;action>元素的type属性获得action类的名称，然后调用Action类里的execute()方法。由execute()方法返回一个ActionForward对象，确定应用程序的下一个视图。<br /><br />页面请求代码（login.jsp） 复制内容到剪贴板 <br />代码:<br />&lt;form action="/login" method="post"><br />..........<br />&lt;/form>根据请求action，访问配置文件里的&lt;action>子元素，提交表彰访问的action值与action里的path值必须要一致，因为是根据这个来查找对应的action， 复制内容到剪贴板 <br />代码:<br />&lt;action  name="loginForm"  path="/login"   scope="request"  type="com.test.loginAction">      <br />      &lt;forward name="success" path="/index.jsp" />     <br />    &lt;/action>然后再根据name属性指定的名称检索对应的FromBean，要自动填充FormBean，表单提交的name与FormBean中的属性名字要一致。 复制内容到剪贴板 <br />代码:<br />&lt;form-bean name="loginForm" type="com.zhuoming.login.LoginForm" />取得数据后，再根据&lt;action>里的type属性里指定的内容去调用对应的Action 复制内容到剪贴板 <br />代码:<br />&lt;action  name="loginForm"  path="/login"   scope="request"  type="com.test.loginAction">      <br />      &lt;forward name="success" path="/index.jsp" />     <br />    &lt;/action>然后调用Action类里的execute()方法。由execute()方法返回一个ActionForward对象，ActionForward对象根据&lt;forward>子元素里的name与path返回到到指定的页面 复制内容到剪贴板 <br />代码:<br />&lt;action  name="loginForm"  path="/login"   scope="request"  type="com.test.loginAction">      <br />      &lt;forward name="success" path="/index.jsp" />     <br />    &lt;/action>RequestProcessor<br />RequestProcessor类的部分方法及说明<br /><br /><br />方法<br /> 说明<br /> <br />processPath() 获取客户端请求的URI <br />processMapping() 根据请求URI获取所需的映射信息 <br />processRoles() 检查用户的角色是否允许他访问请求的资源 <br />processActionForm() 新建一个FormBean或从会话中检索一个Form Bean <br />processForward() 处理&lt;action-mapping>元素的forward以匹配当前的请求路径 <br />processValidate() 调用Form Bean的validate()方法验证数据 <br />processPerprocess() 告诉请求处理器调用此方法后，是否应继续处理请求 <br />processLocale() 为请求选择一个语言环境 <br />processActionCreate() 实例化当前ActionMapping指定类的实例 <br />processActionPerform() 将调用action的perform()或execute()方法 <br />从Struts1.1版本后，要实现ActionServlet类的扩展，一般都是扩展RequestProcessor类。要开发自已的RequestProcessor类应遵循以下的步骤：<br />（1）创建一个继承org.apache.struts.action.RequestProcessor的类。并要有一个无参的空构造函数。<br />（2）重写所需要的方法，加入定制功能<br />（3）修改配置文件struts-config.xml，在其中加入一个名为&lt;controller>的元素，用以指定自创建的RequestProcessor类<br /><br />其中controller元素的属性<br />属性 说明 <br />processorClass 指定负责处理请求的java类的完整类名，默认值为org.apache.struts.action.RequestProcessor。此项可以设置为一个已继承默认类的自定义类，以保证该类扩展了RequestProcessor类 <br />contentType 指定响应结果的内容类型和字符编码 <br />local 指定是否把Local对象保存到当前的用户的Session中 <br /><br />在Struts中解决乱码的方法之一是扩展RequestProcessor类，在其的processPreprocess()中将request,response的字符编程设置为你的要字符编码，代码如下： 复制内容到剪贴板 <br />代码:<br /><br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br />import org.apache.struts.action.RequestProcessor;<br />import org.apache.struts.config.ForwardConfig;<br />import org.apache.commons.logging.Log;<br />public class MyRequestProcessor extends RequestProcessor {<br />public MyRequestProcessor(){};<br />public boolean processPreprocess(HttpServletRequest request, HttpServletResponse response)<br />{<br />  try {<br />   request.setCharacterEncoding("UTF-8");<br />   response.setCharacterEncoding("UTF-8");<br />  } catch (Exception e) {<br />   System.out.println("字符集设置失败!");<br />   e.printStackTrace();<br />  }<br />  return true;//不论成功与否，都要继续往下执行<br />}<br />}在Struts-config.xml中加入<br />&lt;controller processorClass="你自定义的RequestProcessor类完整类名" >&lt;/controller><br /><br />Action<br /><br />Action类是用户请求与业务逻辑之间的桥梁。每一个Action都充当客户的一项业务代理。Actin类包含有一个execute()方法，当调用一个动作来处理请求时，会调用此方法。它返回一个ActionForward类的对象。由ActionForward类告知Struts控制器ActionServlet类有知一系列动作中的下一个动作。<br />execute()方法包括有以下几种参数含义：<br /><br />参数<br /> 说明<br /> <br />ActionMapping 是对文件struts-conig.xml中配置信息的映射 <br />ActionForm 与当前请求表单信息对应的ActionFORM Bean <br />HttpServletRequest 指HTTP请求对象 <br />HttpServletResponse 指HTTP响应对象 <br /><br />ActionForWard类<br />Action对象返回一个ActionForward类的对象，ActionForward类则可提供有关下一视图的信息。ActionForward对象映射的是配置文件struts-config.xml中的&lt;forward>元素，封装了目标响应页面的URI。 复制内容到剪贴板 <br />代码:<br />&lt;action-mapping><br />.....<br />&lt;forward name="逻辑名" path="目标页面URI" /><br />.....<br />&lt;/action-mapping>ActionForward类的主要属性如下：<br /><br />参数<br /> 说明<br /> <br />name 指定ActionForward的逻辑名，ActionForward类的findForward()方法根据些标示来查找相应的ActionFroward对象。 <br />path 指定目标页面 <br />redirect 标明页面的转向方式。默认为false,如果是值为true,则重定向控制权 <br /><br />Struts插件<br />在Struts中，在配置文件中使用&lt;plug-in>元素用于配置Struts插件。插件是一个JAVA类，它在应用程序启动时就被初始化，而在应用程序关闭时就销毁。 复制内容到剪贴板 <br />代码:<br />&lt;plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"><br />         &lt;set-property property="contextConfigLocation"    value="/WEB-INF/applicationContext.xml"/><br />&lt;/plug-in> <br />&lt;plug-in className="org.apache.struts.validator.ValidatorPlugIn"><br />            &lt;set-property property="validatorConfigLocation"  value="/WEB-INF/validator-rules.xml"/><br />&lt;/plug-in> 以上代码中，第一个&lt;plug-in>配置了Spring的配置文件，第二个&lt;plug-in>则配置了Validator验证框架。以上两个插件的使用方法请参阅其他资料。<br /><br />Struts国际化<br />国际化，简称I18N，全称是Internationalization，取第一个字母种最后一个字母，而此单词一共有18个字母，所以就简称为I18N了。国际化的好处是，当程序需要添加一种新的语言时，不需要对已有的软件返工，无需要修改代码。<br />       在Struts框架中进行应用程序国际化，支持的重点在于应用程序的文本和图像表示。最重要的工作是准备Resource Bundle资源包。事实上，在准备资源包的过程，就是把对应不同语言的用户所涉及的的文本和图片保存在多个文本文件中，根据客户端不同的环境需要进行更换。这些文本文件被称为“属性文件”。所有属性文件全在一起就被称为资源包了。<br /><br />下面以Eclipse为例，在struts中创建一个国际化的应用程序：<br /><br />（1）首先打开Eclipse，新建一个Web程序。然后添加Struts。<br /><br />（2）找到程序自生成的ApplicationResources.properties文件在文件里输入 复制内容到剪贴板 <br />代码:<br />label.loginName=UserName;<br />label.loginPwd =PassWord;<br />button.sure    =sure;<br />button.cencal  =cencal;（3）复制此文件，并在同一目录下创建一个英文资源文件ApplicationResources_en.properties。内容不变。<br /><br />（4）复制此文件，并在同一目录下创建一个临时资源文件ApplicationResources_temp.properties。并将内容改为 复制内容到剪贴板 <br />代码:<br /><br />label.loginName=用户名;<br />label.loginPwd =密码;<br />button.sure    =确定;<br />button.cencal  =取消;（5）对临时资源文件进行编码转换，在DOS下执行以下命令(先进入到资源文件的目录(TOMCAT上的)) 复制内容到剪贴板 <br />代码:<br />native2ascii -encoding gb2312 ApplicationResources_temp.properties ApplicationResources_zh_CN.properties（6）编写页面（index.jsp,由于要使用到Struts-bean标签，所以要引用struts-bean.tld文件） 复制内容到剪贴板 <br />代码:<br />&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><br />&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %><br />&lt;html><br />  &lt;head>   <br />  &lt;/head><br />  &lt;body><br />   &lt;p>&lt;bean:message key="label.loginName"/>&lt;input type="text" name="loginName">&lt;/p><br />    &lt;p>&lt;bean:message key="label.loginPwd"/>&lt;input type="text" name="loginName">&lt;/p><br />    &lt;p><br />     &lt;button>&lt;bean:message key="button.sure"/>&lt;/button><br />     &lt;button>&lt;bean:message key="button.cencal"/>&lt;/button><br />    &lt;/p><br />  &lt;/body><br />&lt;/html>（7）在Struts-config.xml文件添加（一般已经自动生成的了） 复制内容到剪贴板 <br />代码:<br />  &lt;message-resources parameter="com.i18n.struts.ApplicationResources" />（8）启动TOMCAT服务器后，打开页面，在IE中依次选择“工具”->“常规”->“语言”，在弹出的窗口里点添加，将英语的加入。依次测试。
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/181128#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 Apr 2008 10:28:37 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/181128</link>
        <guid>http://tcrct.javaeye.com/blog/181128</guid>
      </item>
      <item>
        <title>用PS制作空心字</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/174807" style="color:red;">http://tcrct.javaeye.com/blog/174807</a>&nbsp;
          发表时间: 2008年03月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          周我们通过使用PhotoShop来制作空心字,其实这是很简单的例子,也很实用,如右图就是空心字的例子。其主要步骤如下:<br /><br />1.打开 PhotoShop,新建一个 PhotoShop 的 PSD 文件,将其宽度(Width)设成180,高度(Height)设成70,单位均为pixels;<br /><br />2.将工具栏中的色板前景色设为绿色,背景色设为黑色,按 Ctrl+Delete 键,将新建文件的背景色变为黑色;<br /><br />3.按 T 键,即选中工具栏中的"文字输入工具"(Type Tool),用鼠标在文件的窗口中点击一下,将会出现输入文字的窗口,同时在层的窗口中将自动在background层上边新建一个文字层,在输入文字的窗口中选择 Arial Black 字体,将字体大小设为17,单位为points,再将字间距(Tracking)设为150,然后输入"PhotoShop",按"OK";<br /><br />4.在显示层的窗口中,在背景层(background)上新建一层(Layer)--Layer1,选中Layer1层,按着Ctrl键不放,用鼠标点击步骤3中创建的文字层,这样就选中了文字层中"PhotoShop"字样的绿色区域(绿色字周围会出现虚框),注意:此时只是选中了文字层的文字区域,而当前工作层还是在Layer1层中;<br /><br />5.在Select菜单中选择Modify(修改选择区域)中的Expand菜单项,接着会出来一个窗口询问您要将选择区域扩大多少像素(pixels),输入数字"2",按"OK"即可,这里的"2"即是空心字的边缘厚度;<br /><br />6.按Alt+Delete键,即使用前景色(绿色)填充选择区域,注意:这一步是在Layer1层中做的;<br /><br />7.再次按着Ctrl键不放,用鼠标点击步骤3中创建的文字层,这样就选中了文字层中"PhotoShop"字样的绿色区域(绿色字周围会出现虚框,注意:此时只是选中了文字层的文字区域,而当前工作层还是在Layer1层中),紧接着按Delete键删除选择区域中的绿色部分;<br /><br />8.选中文字层,点击鼠标右键,选择 Delete Layer (删除当前层),将文字层给删除掉;选中Layer1,按 Ctrl+E 键,将Layer层和背景层(background)合并;最后按Ctrl+S保存,在保存窗口的 Save As 中选择 *.gif 文件类型,给此GIF文件取个名字,按"保存",这样,我们就将空心字做出来了,并保存为GIF图片格式。
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/174807#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 22 Mar 2008 14:17:28 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/174807</link>
        <guid>http://tcrct.javaeye.com/blog/174807</guid>
      </item>
      <item>
        <title>spring+hibernate保存blob字段</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/174728" style="color:red;">http://tcrct.javaeye.com/blog/174728</a>&nbsp;
          发表时间: 2008年03月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>首先在spring的配置文件中加入以下代码: <br />&lt;bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true"&gt; <br />并且将lobHandler加入到SessionFactory中去,即在 <br />&lt;bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" &gt; <br />... <br />中加入&lt;property name="lobHandler" ref="lobHandler"&gt;&lt;/property&gt; <br />... <br />&lt;/bean&gt;关联起来,到这里spring里的配置已经完成. <br /><br />第二步在生成xxx.hbm.xml文件后,对数据库里是blob类型的node,将其的type值改为"org.springframework.orm.hibernate3.support.BlobByteArrayType".(如果是CLOB的话则改为org.springframework.orm.hibernate3.support.ClobStringType <br />)再将xxx.java里相对应的属性类型改为byte[](如果是clob的话就改为String),重新生成set,get方法. <br /><br />在java代码中只需要像平时那样就可以保存数据了.即getHibernateTemplate().save(bean);bean为Vo. </p>
<p>applicationContext.xml:</p>
<pre name="code" class="xml">&lt;bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" /&gt;</pre>
<p>xxx.hbm.xml</p>
<pre name="code" class="xml">&lt;property name="content" type="org.springframework.orm.hibernate3.support.BlobByteArrayType"&gt;
            &lt;column name="content" /&gt;
        &lt;/property&gt;</pre>
<p>Vo</p>
<pre name="code" class="java">private byte[] content;
	public void setContent(byte[] content) {
		this.content = content;
	}

	public byte[] getContent() {
		return content;
	}
	public String getContentString(){
		if(content.length &gt; 0)
			return new String(content);
		else
			return "";
	}</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/174728#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 22 Mar 2008 01:56:37 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/174728</link>
        <guid>http://tcrct.javaeye.com/blog/174728</guid>
      </item>
      <item>
        <title>jdbc连接数据库例子</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/174706" style="color:red;">http://tcrct.javaeye.com/blog/174706</a>&nbsp;
          发表时间: 2008年03月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          import java.sql.Connection;<br />import java.sql.Statement;<br />import java.sql.DriverManager;<br />public class DBTool {<br />	private static Connection conn = null;<br />	private static Statement stmt = null;<br />	private static void getConn()<br />	{<br />		try<br />    	{<br />        	Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");<br />        	conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=master;Uid=sa;Pwd=1234;","sa","1234");        	<br />    	}catch(Exception ex){ex.printStackTrace();}<br />	}<br />	public static boolean execSql(String sql){<br />		boolean bool = false;<br />		try{<br />			getConn();<br />			stmt = conn.createStatement();<br />			bool = !stmt.execute(sql);<br />		}catch(Exception ex){ex.printStackTrace();}<br />		finally{<br />			try {<br />				if(!conn.isClosed()){<br />					stmt.close();<br />				}<br />			} catch (Exception e) {e.printStackTrace();}<br />		}<br />		return bool;<br />	}<br />}
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/174706#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 22 Mar 2008 00:39:27 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/174706</link>
        <guid>http://tcrct.javaeye.com/blog/174706</guid>
      </item>
      <item>
        <title>世界排名第一的防火墙 ZoneAlarm Pro 5.5.114 简体中文版</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/172324" style="color:red;">http://tcrct.javaeye.com/blog/172324</a>&nbsp;
          发表时间: 2008年03月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="color: #ff9900;">安装ZoneAlarm防火墙（即eTrust Personal Firewall 5.5.114官方中文版）时，所需序列号：</span><span style="color: #00ff00;">LGYTR-G5UKR-XH8LH-ROCXC </span><span style="color: #ff9900;">或 </span><span style="color: #00ff00;">LMLTK-XT5RC-XHVML-ROE4W </span><span style="color: #ff9900;">。<br />&nbsp;&nbsp;&nbsp; 将简体中文版eTrust Personal Firewall ，变成ZoneAlarm Pro 5.5.114 官方简体中文版的方法&mdash;&mdash;<br />&nbsp;&nbsp;&nbsp; 安装eTrust Personal Firewall后退出运行，然后搜索C盘及安装目录下名为 </span><span style="color: #ffffff;">OEM1051 </span><span style="color: #ff9900;">的文件（包括.dll）,全部予以删除（共21个文件）。而后，再重新启动程序,此时一切都和官方中文版Zonealarm 5.5一样。最后，输入ZA的注册码：</span><span style="color: #00ff00;">75rkx-ph40g-rwq45-h3riaf-fi0140</span><span style="color: #ff9900;"> ，就可以一直使用！<br /></span></p>
<p><span style="color: #ff0000;"><span style="font-family: 宋体;"><span style="font-size: small; color: #00ff00;"><br /><span style="font-size: medium; color: #00ff00; font-family: 黑体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ★★★ZoneAlarm5.5.114中文版安装设置图解教程★★★</span></span></span></span></p>
<p><span style="color: #ff0000;"><span style="font-family: 宋体;"><span style="font-size: small; color: #00ff00;"><span style="font-size: medium; color: #00ff00; font-family: 黑体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size: small; color: #ffffff; font-family: 楷体_GB2312;"> (具体设置灵活掌握，不必生搬硬套)</span></span></span></span></span></p>
<p><span style="color: #ff0000;"><span style="font-family: 宋体;"><span style="font-size: small; color: #00ff00;"><br /></span></span><span style="font-size: small; color: #00ff00; font-family: 黑体;">安装程序下载: </span></span></p>
<p><span style="color: #ff0000;"><span style="font-size: small; color: #00ff00; font-family: 黑体;"><br /></span><a href="http://down.orsoon.com/%B0%B2%C8%AB%CF%E0%B9%D8/%CD%F8%C2%E7%B0%B2%C8%AB/drg0510/Firewall_SC.rar" target="_blank"><span style="font-size: small; color: #ff0000; font-family: 宋体;">http://down.orsoon.com/%B0%B2%C8%AB%CF%E0%B9%D8/%CD%F8%C2%E7%B0%B2%C8%AB/drg0510/Firewall_SC.rar</span></a></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;"><span style="font-size: small; color: #ff9900; font-family: 楷体_GB2312;">eTrust Personal Firewall 5.5.114 官方简体中文安装程序</span><br /></span><a href="ftp://ftpez.ca.com/pub/myeTrust/apps/Firewall_SC.exe"><span style="font-size: small; color: #00ff00;">ftp://ftpez.ca.com/pub/myeTrust/apps/Firewall_SC.exe</span></a></span></p>
<p><span style="color: #ff0000;"><span style="font-size: small; color: #00ff00; font-family: 黑体;">注册机下载地址</span></span></p>
<p><span style="color: #ff0000;"><a href="http://www.rongcheng.com.cn/down/soft/00321.htm"><span style="font-size: medium; color: #ff0000; font-family: 宋体;">http://www.rongcheng.com.cn/down/soft/00321.htm</span></a><br /><br /><span style="font-size: small; color: #00ff00; font-family: 宋体;"><img src="http://bbs.kafan.cn/attachments/15_1_01Ud49qfOv8w.gif" border="0" alt="" /></span><span style="font-size: small; color: #00ff00; font-family: 宋体;"> <br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_2_UCI1GraetAHw.gif" border="0" alt="" /> <br /><br /><img src="http://bbs.kafan.cn/attachments/15_3_j5qygnNz495M.gif" border="0" alt="" /> <br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_4_tcMqP3DteSQN.gif" border="0" alt="" /> <br /><br /><img src="http://bbs.kafan.cn/attachments/15_5_sPN3UlWrGDrL.gif" border="0" alt="" /> <br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_6_1d64lPKdsJ1o.gif" border="0" alt="" /> <br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_7_M6JOKRL0VMsf.gif" border="0" alt="" /> <br /><br /><img src="http://bbs.kafan.cn/attachments/15_8_NKElugADUbAt.gif" border="0" alt="" /> <br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_9_JTkc17Qu08LV.gif" border="0" alt="" /> <br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_10_9IysOncsiNKi.gif" border="0" alt="" /> <br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_11_2rSEExf945Kl.gif" border="0" alt="" /> <br /><br /><img src="http://bbs.kafan.cn/attachments/15_12_3aBXkPcsrpkF.gif" border="0" alt="" /> <br /><br /><img src="http://bbs.kafan.cn/attachments/15_13_cCpOzlVYmVEQ.gif" border="0" alt="" /> <br /><br /><img src="http://bbs.kafan.cn/attachments/15_14_KpZkLMq03Q9f.gif" border="0" alt="" /> <br /><br /><img src="http://bbs.kafan.cn/attachments/15_15_MsuSpXnGkvKC.gif" border="0" alt="" /> <br /><br /></span><span style="font-family: 宋体;"><span style="font-size: small;"><span style="color: #00ff00;"><br /><img src="http://bbs.kafan.cn/attachments/15_16_ihOvU978ti6L.gif" border="0" alt="" /> <br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_17_GbhDdGs1Kibv.gif" border="0" alt="" /> </span></span></span></span></p>
<p><span style="color: #ff0000;"><span style="font-family: 宋体;"><span style="font-size: small;"><span style="color: #00ff00;">
<p><span style="font-size: small; color: #ff0000; font-family: 宋体;">ZoneAlarm Pro 5.5.114 有效注册码</span></p>
<p><span style="font-size: small; color: #00ff00; font-family: 宋体;">32k9p-s0u6d-wsicn-dmj3ec-9cw6q0 </span></p>
<p><span style="font-size: small; color: #00ff00; font-family: 宋体;">2mk9x-jnch7-qmgrd-9vaqmt-xb0b80 </span><span style="color: #00ff00;"><br /><span style="font-size: small; font-family: 宋体;">dnv55-718sm-vg0aj-33t1xb-d8p1c0<br /></span></span><br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_18_NiWQShcQ4MdW.gif" border="0" alt="" /> <br /><br /><img src="http://bbs.kafan.cn/attachments/15_19_OUcidfE9JZwb.gif" border="0" alt="" /> <br /><br /><img src="http://bbs.kafan.cn/attachments/15_20_Ch448SehrH2A.gif" border="0" alt="" /> <br /><br /><img src="http://bbs.kafan.cn/attachments/15_21_1YT2g3lpi0HB.gif" border="0" alt="" /> <br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_22_jLV4KPFOlVuR.gif" border="0" alt="" /> <br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_23_Fygt0cApwrQ7.gif" border="0" alt="" /> <br /><br /><br /><img src="http://bbs.kafan.cn/attachments/15_24_P18YRUKtcI4H.gif" border="0" alt="" /> <br /><br /><img src="http://bbs.kafan.cn/attachments/15_25_sVlt2BHBnxJw.gif" border="0" alt="" /></p>
<p>&nbsp;</p>
<p><span style="font-size: medium; color: #ff0000; font-family: 黑体;">注：建议关闭ZoneAlarm&ldquo;更新&rdquo;，否则会造成破解失败。有这个版本，功能足够了。</span> </p>
<div><span style="font-size: medium; color: #339900;"><strong>步骤15时,如果没有下载到注册机则直接使用步骤15下面的注册码即可.</strong></span></div>
<div><span style="font-size: medium; color: #339900;"><strong>搜索oem1051时,请到安装目录下搜索.会搜出15个文件的.将那15个删除</strong></span></div>
<div><span style="font-size: medium; color: #339900;"><strong>另外在X:windows\system32下再搜,会搜出6个的.再删!</strong></span></div>
</span></span></span></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/172324#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 16 Mar 2008 14:46:28 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/172324</link>
        <guid>http://tcrct.javaeye.com/blog/172324</guid>
      </item>
      <item>
        <title>一个关于反射的问题,比较急,请高手们回答是否可实现....</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/169919" style="color:red;">http://tcrct.javaeye.com/blog/169919</a>&nbsp;
          发表时间: 2008年03月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现在一段这样的程序:<br /><br />String hqlStr = "select " + hql.toString().substring(0, hql.toString().length()-1) + " from " + VoName;<br /><br />System.out.println(hqlStr);   //打印为:select id,name,account,pwd from Users			<br /><br />List list     = service.getList(hqlStr,0,10);//将hqlStr传到另一个类里,用查询返回一个List集合<br /><br />System.out.println(Tools.getHqlXmlNodeValue("boPath")+"."+VoName); //打印出是:com.mywebspace.bo.Users<br /><br />Class iClass = Class.forName(Tools.getHqlXmlNodeValue("boPath")+"."+VoName);<br />			<br />Object	myclass = iClass.newInstance();<br /><br />Method[] method = myclass.getClass().getMethods();<br />for(int i=0; i&lt;method.length; i++){<br />  String name = method[i].getName();<br />  if(!name.startsWith("set")){ continue;}<br />  System.out.println("=====: "+name);         //打印出所有Users类里的set方法<br />}<br /><br />平时我们返回一个list集合的话,一般都是<br />for(int i=0; i&lt;list.size(); i++){<br />    <span style="color: #FF0000">Users</span> u = (<span style="color: #FF0000">Users</span>)list.get(i);<br />    ....<br />}<br />这样的,现因为<span style="color: #FF0000">Users</span>对象不能写死,要动态的根据传过来的字符串再用Class.forName()来实例出来,也就是想让它变成:<br /><span style="color: #FF0000">myclass </span> u = (<span style="color: #FF0000">myclass </span>)list.get(i);<br />这样,请问,这个是否可行.如何实现?谢谢!
          <br/>
          <span style="color:red;">
            <a href="http://tcrct.javaeye.com/blog/169919#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Mar 2008 17:32:15 +0800</pubDate>
        <link>http://tcrct.javaeye.com/blog/169919</link>
        <guid>http://tcrct.javaeye.com/blog/169919</guid>
      </item>
      <item>
        <title>java面试题</title>
        <author>tcrct</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tcrct.javaeye.com">tcrct</a>&nbsp;
          链接：<a href="http://tcrct.javaeye.com/blog/166366" style="color:red;">http://tcrct.javaeye.com/blog/166366</a>&nbsp;
          发表时间: 2008年03月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.MVC的各个部分都有那些技术来实现?如何实现? <br />答：MVC是Model－View－Controller的简写。"Model" 代表的是应用的业务逻辑（通过JavaBean，EJB组件实现）， "View" 是应用的表示面（由JSP页面产生），"Controller" 是提供应用的处理过程控制（一般是一个Servlet），通过这种设计模型把应用逻辑，处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。 <br /><br />2.J2EE是什么？ <br />答：Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中，可按照功能划分为不同的组件，这些组件又可在不同计算机上，并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。 <br /><br />3.J2EE是技术还是平台还是框架？ <br />答：J2EE本身是一个标准，一个为企业分布式应用的开发提供的标准平台。 <br />J2EE也是一个框架，包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。 <br /><br />4.STRUTS的应用(如STRUTS架构) <br />答：Struts是采用Java Servlet/JavaServer Pages技术，开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能： <br />一.包含一个controller servlet，能将用户的请求发送到相应的Action对象。 <br />二.JSP自由tag库，并且在controller servlet中提供关联支持，帮助开发员创建交互式表单应用。 <br />三.提供了一系列实用对象：XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。 <br /><br />5.WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。 <br />答：Web ServiceWeb Service是基于网络的、分布式的模块化组件，它执行特定的任务，遵守具体的技术规范，这些规范使得Web Service能与其他兼容的组件进行互操作。 <br />JAXP(Java API for XML Parsing) 定义了在Java中使用DOM, SAX, XSLT的通用的接口。这样在你的程序中你只要使用这些通用的接口，当你需要改变具体的实现时候也不需要修改代码。 <br />JAXM(Java API for XML Messaging) 是为SOAP通信提供访问方法和传输机制的API。 <br />WSDL是一种 XML 格式，用于将网络服务描述为一组端点，这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述，然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点（服务）。 <br />SOAP即简单对象访问协议(Simple Object Access Protocol)，它是用于交换XML编码信息的轻量级协议。 <br />UDDI 的目的是为电子商务建立标准；UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范，同时也包含一组使企业能将自身提供的Web Service注册，以使别的企业能够发现的访问协议的实现标准。 <br /><br />6.C/S 与 B/S 区别： <br />答：有如下八个方面的不同： <br />(1)硬件环境不同: <br />　　C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. <br />　　B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行 <br />(2)对安全要求不同 <br />　　C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息. <br />　　B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。 <br />(３)对程序架构不同 <br />　　C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑. <br />　　B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C