<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>AJAX论坛最新讨论 - JavaEye</title>
    <description>JavaScript编程、XMLHTTP、AJAX开发、UI设计、Rich Client<br/>
圈子: 
<a href="http://flex2.group.javaeye.com/" target="_blank">Flex</a>
<a href="http://hzjavaeyer.group.javaeye.com/" target="_blank">JS研究</a>
<a href="http://css.group.javaeye.com/" target="_blank">CSS探讨</a>
<a href="http://ext.group.javaeye.com/" target="_blank">EXT</a>
<a href="http://gwts.group.javaeye.com/" target="_blank">GWT</a>
<a href="http://jsi.group.javaeye.com/" target="_blank">JSI</a> - Java编程，Ruby编程，微软.net，AJAX，敏捷软件开发，综合软件技术</description>
    <link>http://www.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>请教一个TABPANEL和MESSAGEBOX的问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://psh2000.javaeye.com">psh2000</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/234700" style="color:red;">http://www.javaeye.com/topic/234700</a>&nbsp;
          发表时间: 2008年08月30日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          怎样才能让MESSAGEBOX弹出来的时候，不要覆盖整个页面呢？而只是弹在自己的TABPANEL里面？<br />换句话说，就是不想让用户在操作别的页面的时候突然弹出1个全屏幕的提示窗口。
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/234700" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 30 Aug 2008 03:19:24 +0800</pubDate>
        <link>http://www.javaeye.com/topic/234700</link>
        <guid>http://www.javaeye.com/topic/234700</guid>
      </item>
      <item>
        <title>adobe air 的向下不兼容性</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://paranoid945.javaeye.com">paranoid945</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/233026" style="color:red;">http://www.javaeye.com/topic/233026</a>&nbsp;
          发表时间: 2008年08月26日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>更新了adobe air后，原来好好的air不能用了，看来如某人说的，xx技术不提供向下兼容是需要勇气的....</p>
<p>的确，被别人BS死的勇气...</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/233026" style="color:red;">已有 <strong>5</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 26 Aug 2008 22:46:18 +0800</pubDate>
        <link>http://www.javaeye.com/topic/233026</link>
        <guid>http://www.javaeye.com/topic/233026</guid>
      </item>
      <item>
        <title>从谷歌的一个Bug说起，谈谈键盘事件的兼容性</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lifesinger.javaeye.com">lifesinger</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/233038" style="color:red;">http://www.javaeye.com/topic/233038</a>&nbsp;
          发表时间: 2008年08月26日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="post-meta">
				原文同步发表在<a href="http://lifesinger.org/blog/?p=77">岁月如歌</a></p>
<p class="post-meta">&nbsp;</p>
<div class="post-content">
<p><a href="http://lifesinger.org/blog/wp-content/uploads/2008/08/google_bug.png"><img class="size-medium wp-image-83" title="google_bug" src="http://lifesinger.org/blog/wp-content/uploads/2008/08/google_bug-300x223.png" height="223" alt="点击小图看大图" width="300" /></a></p>
<p>上面是谷歌首页，当输入某个词时，下面会弹出自动补全提示。功能并不复杂，但考虑到要兼容各个浏览器，谷歌为此可能花费了不少功夫。然而完美实在是很难得，谷歌首页上一直有一个处理得不妥的Bug：</p>
<blockquote>
<p>除了Ctrl+X/C/V，Ctrl+Z/Y也是经常使用的快捷键。在Firefox/Safari/Opera中访问谷歌，一切都很正常。但当我们<strong>打开IE浏览谷歌时，Ctrl+Z/Y不起作用了</strong>。在当今特别是中国，IE是份量最重的浏览器，谷歌首页有此问题，完全可以归为一个Bug.</p>
</blockquote>
<p>这个Bug究竟是怎么引起的呢？为了进一步讨论，我们先来看看各个浏览器下，当输入法开启和未开启时，对键盘等事件的响应情况。</p>
<blockquote>
<p>猛击查看<a href="http://lifesinger.org/blog/wp-content/uploads/2008/08/keyboard_events.html"> JavaScript键盘事件测试小结</a></p>
</blockquote>
<p>通过上面这篇测试小结，我们可以看出，要实现谷歌的自动补全功能并不是一件很简单的事。目前可以找到的解决方案有：</p>
<p><strong>方案一：通过监听keydown, keypress, keyup事件来实现。</strong>这是大部分JavaScript教科书里的做法，对于拉丁语系国家，是没有问题的。但输入法一开启后，一切就都不美妙了：</p>
<blockquote>
<ol>
<li>无论有没有输入法，通过鼠标右键粘贴复制时，key事件都触发不了，真糟糕。</li>
<li>输入法开启时，各个浏览器表现不同。不同输入法之间还有差异，太让人沮丧了。</li>
<li>输入法开启时，Opera压根不触发键盘事件。亲爱的Opera，叫我怎么爱上你？</li>
</ol>
</blockquote>
<p>考虑到中文用户，特别是第一条（不少中文用户习惯使用右键菜单来粘贴复制），第一个方案基本可以枪毙掉。</p>
<p><strong>方案二：不考虑这些烦人的键盘事件，直接采用定时器来实现。</strong>在输入框获取焦点时，触发定时器，失去焦点时，关闭定时器。定时器每隔200ms检查输入框的值，根据值的变化来进行下一步响应。这个trick很简单，基本上能解决大部分问题（谷歌的自动完成就是这么做的^o^）。但有以下不妥：</p>
<blockquote>
<ol>
<li>性能问题。（因为仅在获取焦点时触发定时器，性能问题倒是可以不考虑的）</li>
<li>ie下，此方法会导致Ctrl+Z/Y快捷键失效。</li>
<li>firefox下，用定时器实现表单输入时的即时校验，当输入法开启时，如果校验函数在输入未完成时改变输入框的值，会导致输入框的值变成空。（这个属于不可忽视的Bug，很恼人）</li>
</ol>
</blockquote>
<p>方案二自动解决了右键菜单粘贴的问题，对于自动补全功能来说，一般应用场景下也足够用，但对谷歌来说，感觉有此Bug是不妥的。如果用方案二来实现表单输入时的即时校验，上面的第3点会导致firefox的中文用户很不爽。</p>
<p>苦思冥想许久，在键盘事件中折腾来折腾去，感觉怎么做都无法同时解决上面的所有不妥。昨天静下心来对所有A级浏览器的键盘事件在输入法开启和未开启时做了个仔细的测试后，下面这个方案就很清晰的浮了出来：</p>
<p><strong>方案三：在上面的浏览器事件测试中，有一个很让人高兴的发现：所有浏览器中，都会触发input(ie下可以用propertychange)事件。</strong>而
且input事件仅在输入框的值有变化时才会触发。在输入法开启时，input也能正常触发（虽然会触发一些冗余的input，但比起定时器来好很多）。
在右键菜单粘贴等操作时，也能正确触发input. 采用input/propertychange, 几近完美。但需要注意以下几点：</p>
<blockquote>
<ol>
<li>ie下，如果监听的事件函数中，有页面输出操作，如YAHOO.log(&hellip;), 会导致Ctrl+Z/Y失效。（深层次原因还需仔细探索，感觉页面输出操作只是表象）</li>
<li>对于表单输入时的即时校验来说，比如只能输入数字的输入框，当输入字母时，监听input事件的实现会在字母显示出来后，立刻又删除掉（和
keyup的实现效果一样），没有监听keypress的效果好（不会先显示出来）。因此对于即时校验来说，可以结合input和keypress，在输
入法未开启时，给用户更友好的体验。</li>
</ol>
</blockquote>
<p>最后，看一个根据方案三来实现的简单例子：<a href="http://lifesinger.org/blog/wp-content/uploads/2008/08/test_input.html">表单输入时的即时校验</a></p>
<p><strong>参考资料</strong></p>
<blockquote>
<ul>
<li>很让人敬佩的鼠标事件总结：<a href="http://unixpapa.com/js/key.html">JavaScript Madness: Keyboard Events</a></li>
<li>Realazy的探索：<a href="http://realazy.org/blog/2007/10/31/solution-of-keyup-failing-when-ime-is-on/">输入法下keyup失效的解决方案</a></li>
</ul>
</blockquote>
</div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/233038" style="color:red;">已有 <strong>9</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 26 Aug 2008 23:16:50 +0800</pubDate>
        <link>http://www.javaeye.com/topic/233038</link>
        <guid>http://www.javaeye.com/topic/233038</guid>
      </item>
      <item>
        <title>Ext的CPU 100%有人碰到过么</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://pconline900.javaeye.com">pconline900</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/234465" style="color:red;">http://www.javaeye.com/topic/234465</a>&nbsp;
          发表时间: 2008年08月29日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          grid加载500条数据，每次都等一分钟以上，而这期间客户端CPU一直100%，使用http包分析发现8秒时间客户端就接收到了所有的服务器端数据，为什么extjs的grid处理这些数据绘制500行需要一分钟时间呢，大家碰到这种情况没有，是js的性能问题吧。若加载20条数据大概几秒时间，还能忍受。<br /><br /><br />改成服务器端jsp文件的方式， 不采用extjs，发现几秒钟客户端就完全展示正常了，cpu也很正常。<br /><br />若改成异步加载，一次显示20条，拖动再加载下20条的方式，客户体验很不好啊，而且每次加载20条也要等几秒，客户要500条一页就是为了一次看全部数据的。<br /><br />客户最近老投诉一个是速度太慢，另外一个是CPU经常100%，郁闷，请问谁碰到过这种问题啊，如何解决？<br /><br /><br />对了偶的机器是2.0G单核的，是不是使用extjs要求双核CPU啊，呵呵
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/234465" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Aug 2008 15:57:45 +0800</pubDate>
        <link>http://www.javaeye.com/topic/234465</link>
        <guid>http://www.javaeye.com/topic/234465</guid>
      </item>
      <item>
        <title>Jquery1.2.6 源码分析</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jljlpch.javaeye.com">jljlpch</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/234219" style="color:red;">http://www.javaeye.com/topic/234219</a>&nbsp;
          发表时间: 2008年08月29日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          jQuery是一个非常优秀的JS库，与Prototype,YUI,Mootools等众多的Js类库相比，它剑走偏锋，从web开发的实用角度出发，抛除了其它Lib中一些中看但不实用的东西，为开发者提供了优美短小而精悍的类库。其使用简单，文档丰富，而且性能高效，能极大地提高web系统的开发效率。因此可以说是web应用开发中最佳的Js辅助类库之一。大部分开发者正在抛弃Prototype，而选择Jquery做为他们进行web开发的JS库。<br /><br />如是开发人员仅仅只知道文档中的简单的使用方法，却不明白Jquery的运行原理和内部机制，在使用jquery时，肯定会碰到许多的问题。这些问题有一部分是Jquery的Bug。大部分是自身的使用不当而造成的。而文档的简单的使用说明很难解决问题。在调试基于jQuery的web应用时，很多时候都要跟踪进入jQuery对象分析其运行状态以了解出错的原因。<br /><br />如果对于web的应用的页面运行性能和效率有所要求的话，那么我们更应该去明白其运行机理和核心源码。但是jQuery源码不像其它的类库那样，它有点晦涩，难懂。这就是本源码分析的原因，让所有使用jQuery的读者，能快速上手jQuery的源码，并在开发中得心应用。<br /><br />Jquery的网络资源丰富，但Baidu了很久，很难找到那种完全深入地分析Jquery源码的文稿。倒是Jquery的开发者，John Resi的《Pro Javascript Techniques》涉及到Jquery的源码的分析，但是其主指还是在于JavaScript的使用。那本书并不能使我们完全细致地了解Jquery的源码。<br /><br /> <br /><br />写个这个源码分析的理由其实很简单，在工作中使用jquery经常出问题，不得不分析其源码，我把分析的源码放在blog。其标题是jquery core 源码分析。结果有一网友竟评论说打到标题党，可见还是有很多人像我这样想完全了解jquery的core代码。<br /><br />从自己能看懂，到自己写出来。发现自己有一个质的提高。但是由于水平有限，分析过程的难免有错误。请大家多多指教。不过嘴下能留情就最好了。有什么问题可以到blog:jljlpch.javaeye.com去访问和评论。附件附有打包的源码。<br /><br />                              2008-08-29   prk
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/234219" style="color:red;">已有 <strong>2</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Aug 2008 00:17:32 +0800</pubDate>
        <link>http://www.javaeye.com/topic/234219</link>
        <guid>http://www.javaeye.com/topic/234219</guid>
      </item>
      <item>
        <title>用firefox3的朋友试试</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://neora.javaeye.com">neora</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/234276" style="color:red;">http://www.javaeye.com/topic/234276</a>&nbsp;
          发表时间: 2008年08月29日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          近期一个项目我们选了xulrunner作为Client端的开发基础。总体效果还不错，但发现一个诡异的BUG无法解决。在文本输入框采用智能ABC输入法，XULRunner就会崩溃掉。<br />由于XULRunner与firefox3是相同的内核，我们在firefox3上同样发现了这个问题。用FF3的朋友试试下面的操作：<br /><br />切换到职能ABC输入法，在浏览器地址输入框按住某个字母（比如l）不放，接下来....<img src="/images/smiles/icon_mad.gif"/>.......嘿嘿
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/234276" style="color:red;">已有 <strong>2</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Aug 2008 09:46:15 +0800</pubDate>
        <link>http://www.javaeye.com/topic/234276</link>
        <guid>http://www.javaeye.com/topic/234276</guid>
      </item>
      <item>
        <title>在ExtJS的Desktop中加入命令行（改try ruby in your browser的代码）</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sam-ds-chen.javaeye.com">sam.ds.chen</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/234355" style="color:red;">http://www.javaeye.com/topic/234355</a>&nbsp;
          发表时间: 2008年08月29日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;</p>
<p>&nbsp;<img src="../../../upload/picture/pic/20825/0ce080d4-25da-361a-be7f-e07339f035da.jpg" alt="" /></p>
<p>&nbsp;</p>
<p><img src="../../../upload/picture/pic/20829/6e50d2ba-8f71-3d59-8205-68803b901a79.jpg 
" height="768" alt="" width="1024" /></p>
<p>&nbsp;</p>
<p>命令行的实现代码受<a href="http://tryruby.hobix.com/">http://tryruby.hobix.com/</a>启发，做了些修改</p>
<p>&nbsp;</p>
<p>try ruby in your browser 的界面是酱紫的：</p>
<p>&nbsp;</p>
<p><img src="../../../upload/picture/pic/20827/b956cf6a-c9ad-3313-a846-7e3dff3c85b8.jpg" alt="" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>修改过的代码见附件（依赖ExtJS库及我的框架未加入，但只要引入ExtJS就可以，我的框架不引入影响不大）</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/234355" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Aug 2008 11:34:22 +0800</pubDate>
        <link>http://www.javaeye.com/topic/234355</link>
        <guid>http://www.javaeye.com/topic/234355</guid>
      </item>
      <item>
        <title>关于雅虎Javascript MP3播放器</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mao1985.javaeye.com">mao1985</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/232371" style="color:red;">http://www.javaeye.com/topic/232371</a>&nbsp;
          发表时间: 2008年08月25日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Yahoo! Media Player<br /><a href="http://mediaplayer.yahoo.com/" target="_blank">http://mediaplayer.yahoo.com/</a><br /><a href="http://developer.yahoo.com/mediaplayer/" target="_blank">http://developer.yahoo.com/mediaplayer/</a><br /><br />Yahoo年初推出的，在你的网页引用<br />&lt;script type="text/javascript" src="http://mediaplayer.yahoo.com/js">&lt;/script><br />就嵌入了播放器，并识别网页内所有mp3链接加入播放列表<br /><br />这个JS脚本有171KB,它只是实现播放器UI还是有map3解码功能？！
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/232371" style="color:red;">已有 <strong>3</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 25 Aug 2008 12:37:30 +0800</pubDate>
        <link>http://www.javaeye.com/topic/232371</link>
        <guid>http://www.javaeye.com/topic/232371</guid>
      </item>
      <item>
        <title>DWR操作 （二） 操作对象和集合</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xzj127.javaeye.com">xzj127</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/233631" style="color:red;">http://www.javaeye.com/topic/233631</a>&nbsp;
          发表时间: 2008年08月27日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>之前的基本配置一样。这里我就只把 dwr.xml 和Service 和bean 还有jsp页面的代码展示出来 <br />dwr.xml 文件的配置代码如下： </p>
<pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;   
&lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr//dwr20.dtd"&gt;   
&lt;dwr&gt;   
&lt;!-- without allow, DWR isn't allowed to do anything --&gt;   
&lt;allow&gt;     
         &lt;create creator="new" javascript="Student" scope="application"&gt;       
        &lt;param name="class" value="com.xzj.service.StudentService"/&gt;       
    &lt;/create&gt;   
    &lt;convert converter="bean" match="com.xzj.domain.Student"/&gt;   
&lt;/allow&gt;   
&lt;/dwr&gt;  
</pre>
<p>&nbsp;</p>
<p>StudentService方法的代码如下：</p>
<pre name="code" class="java">package com.xzj.service;   
  
import java.util.ArrayList;   
import java.util.List;   
  
import com.xzj.domain.Student;   
  
public class StudentService {   
       
    public  List find(){   
        List list=new ArrayList();   
        for(int k=1;k&lt;10;k++){   
            list.add(k);   
        }   
        return list;   
    }   
       
    public Student findStudent(){   
        Student stu=new Student();   
        stu.setId(127);   
        stu.setName("周星驰");   
        stu.setAge(48);   
        return stu;   
    }   
       
    public List listStudent(){   
        List list=new ArrayList();   
        Student stu=null;   
        for(int k=1;k&lt;6;k++){   
            stu=new Student();   
            stu.setId(k);   
            stu.setName("DWR冰山"+k);   
            stu.setAge(23+k);   
            list.add(stu);   
        }   
        return list;   
    }   
}  
</pre>
<p>&nbsp;&nbsp;</p>
<p>&nbsp;</p>
<p>Student 的代码如下：</p>
<pre name="code" class="java">package com.xzj.domain; 

public class Student { 
private int id; 
private String name; 
private int age; 

public int getId() { 
return id; 
} 
public void setId(int id) { 
this.id = id; 
} 
public String getName() { 
return name; 
} 
public void setName(String name) { 
this.name = name; 
} 
public int getAge() { 
return age; 
} 
public void setAge(int age) { 
this.age = age; 
} 
} 
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>前台index.jsp的代码如下：</p>
<pre name="code" class="java">&lt;%@ page language="java"  pageEncoding="UTF-8"%&gt;   
&lt;html&gt;   
  &lt;head&gt;   
    &lt;title&gt;DWR Operator List and Object&lt;/title&gt;   
    &lt;meta http-equiv="pragma" content="no-cache"&gt;   
    &lt;meta http-equiv="cache-control" content="no-cache"&gt;   
    &lt;meta http-equiv="expires" content="0"&gt;       
    &lt;meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&gt;   
    &lt;meta http-equiv="description" content="This is my page"&gt;   
    &lt;style type="text/css"&gt;   
    a:link, a:visited{   
        margin:10px;   
        color:#A62020;   
        padding:4px 10px 4px 10px;   
        background-color: #ecd8db;   
        text-decoration:none;   
        border-top: 1px solid #EEEEEE;         
        border-left: 1px solid #EEEEEE;   
        border-bottom: 1px solid #717171;   
        border-right: 1px solid #717171;   
    }   
       
    a:hover{   
        margin:10px;   
        color:#821818;   
        padding:5px 8px 3px 12px;   
        background-color:#e2c4c9;   
        border-top:1px solid #717171;   
        border-left:1px solid #717171;   
        border-bottom:1px solid #EEEEEE;   
        border-right:1px solid #EEEEEE;   
    }   
           
    .datalist{   
        border:1px solid #5F6F7E;   
        border-collapse:collapse;   
        width:60%;   
    }   
    .datalist th{   
        border:1px solid #5F6F7E;   
        background-color:#E2E2E2;   
        color:#000000px;   
        font-weight:normal;   
        text-align:center;   
        padding:2px 8px 2px 6px;   
        height:20px;   
    }   
    .datalist td{   
        margin:0px;   
        padding:1px;   
        border:1px solid #ABABAB;   
        }   
       .put{   
        margin:0px;                
        border:0;   
        background-color:#E2E2E2;   
        padding:5px;   
        border-bottom:1px solid #ABABAB;   
        width:auto;   
    }   
    &lt;/style&gt;   
    &lt;script type="text/javascript" src='dwr/interface/Student.js'&gt;&lt;/script&gt;   
　　 &lt;script type="text/javascript" src='dwr/engine.js'&gt;&lt;/script&gt;   
　　 &lt;script type="text/javascript" src='dwr/util.js'&gt;&lt;/script&gt;   
    &lt;script type="text/javascript"&gt;   
        function find(){   
            Student.find(showMessage);   
            function showMessage(msg){   
                var rs=new Array();   
                rs=msg   
                for(var k in rs){   
                    alert("List中的:"+rs[k]);   
                }   
            }   
        }   
           
        function findStudent(){   
            Student.findStudent(showMessage);   
            function showMessage(msg){   
                //操作Bean文件Student 必须要先再dwr.xml中配置   
                /**&lt;convert converter="bean" match="com.xzj.domain.Student"/&gt;*/  
                var msgStr="编号:"+msg.id+"\n姓名:"+msg.name+"\n年龄:"+msg.age;   
                alert(msgStr);   
            }   
        }   
           
        function listStudent(){   
            Student.listStudent(showMessage);   
            function showMessage(msg){   
                var rs=new Array();   
                rs=msg;   
                var table="&lt;table  class='datalist'&gt;";   
                        table+="&lt;tr&gt;";   
                            table+="&lt;th&gt;编号&lt;/th&gt;";   
                            table+="&lt;th&gt;姓名&lt;/th&gt;";   
                            table+="&lt;th&gt;年龄&lt;/th&gt;";   
                        table+="&lt;/tr&gt;";   
                for(var k in rs){   
                    table+="&lt;tr&gt;";   
                        table+="&lt;th&gt;"+rs[k].id+"&lt;/th&gt;";   
                        table+="&lt;td&gt;"+rs[k].name+"&lt;/td&gt;";   
                        table+="&lt;td&gt;"+rs[k].age+"&lt;/td&gt;";   
                    table+="&lt;/tr&gt;";   
                }   
                table+="&lt;/table&gt;";   
                showMsg.innerHTML=table;   
            }   
        }   
    &lt;/script&gt;   
  &lt;/head&gt;   
     
  &lt;body&gt;   
    &lt;center&gt;   
        &lt;input type="button" class="put" name="btnList" value="查看对List的操作" onclick="find()"/&gt;   
        &lt;input type="button" class="put" name="btnList" value="查看对Student对象的操作" onclick="findStudent()"/&gt;   
        &lt;input type="button" class="put" name="btnList" value="查看对List中5个Student对象的操作" onclick="listStudent()"/&gt;   
    &lt;/center&gt;   
    &lt;br&gt;&lt;br&gt;   
    &lt;br&gt;&lt;br&gt;   
    &lt;div id="showMsg" style="border:1px dashed #CCCCCC;width:500px:height:auto;margin:5px;padding:5px;text-align:center;"&gt;   
       
    &lt;/div&gt;   
  &lt;/body&gt;   
&lt;/html&gt;  
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>为了好看 弄了点 CSS 代码。弄完这个。可以自由的操作DWR了。应该知道DWR的好处了吧。不过..对于他的不好之处。你可以去网络中看看. <br />如果明天有时间 继续 <br />关于Spring的操作. <br />这里 我没有对数据库进行操作 。因为都是一样的...</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/233631" style="color:red;">已有 <strong>3</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 27 Aug 2008 23:14:01 +0800</pubDate>
        <link>http://www.javaeye.com/topic/233631</link>
        <guid>http://www.javaeye.com/topic/233631</guid>
      </item>
      <item>
        <title>subModal 回调函数和添加title示例</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangsong76.javaeye.com">wangsong76</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/233809" style="color:red;">http://www.javaeye.com/topic/233809</a>&nbsp;
          发表时间: 2008年08月28日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: large;">subModal&nbsp; 是一个非常漂亮好用的跨游览器的模态对话框。不用担心会被游览器拦截。我在使用过程中，发现官方网站上对该对话框的回调函数解释的不明朗。google了一下英文，也没有清楚的，于是自己写一个，方便大家查找。发到论坛里面，主要是为了</span></p>
<p><span style="font-size: large;">在搜索引擎里面，能够被找到。</span></p>
<p>&nbsp;<img src="http://sublog.subimage.com/files/submodal-small.gif" alt="" /></p>
<p><span style="font-size: large;">这个是官方的说明，详细可参见<a href="http://sublog.subimage.com/articles/2007/01/11/using-the-callback-function-on-the-submodal">http://sublog.subimage.com/articles/2007/01/11/using-the-callback-function-on-the-submodal</a></span></p>
<p><span style="font-size: large;">UsingCallbackFunction</span> <br />Using callback functions with SubModal</p>
<ol>
<li>Define the function that&rsquo;ll be called on the opening page. </li>
<li>Pass the function you&rsquo;d like to call into 'showPopWin'. </li>
<li>Assign any return value on the modal page itself, if necessary </li>
<li>Call the hidePopWin function passing true </li>
<br /></ol>
<p><br />It might be easier to grok in code, so here's an example: <br /><br /><strong>On the SubModal opening page</strong></p>
<p>// returnVal can get passed in from the modal page itself... //....see below for info function returnRefresh(returnVal) { &nbsp; window.document.reload(); } // Open the modal, passing in the refresh function // as a reference NOT a string. showPopWin('mymodal.html', 500, 500, returnRefresh);</p>
<pre></pre>
<p><br /><strong>From inside the SubModal window</strong></p>
<p>// If you plan to pass a return value assign it var returnVal = "something"; // When you're ready to close the pop window // call this...Passing true makes sure the return // function gets called. window.top.hidePopWin(true); </p>
<pre></pre>
<p><br /><strong>经本人实验，如果要从模态对话框中成功传回数据：</strong></p>
<p>&nbsp;</p>
<p>在弹出的对话框中页面，回传的值必须是全局变量，例子中的就是</p>
<p>var returnVal = "something";</p>
<p>的必须是全局变量.</p>
<p>附带说明一下，经过实验，发现subModal 约定了返回回调函数的变量必须是returnVal ，也就是说，在弹出对话框中：</p>
<p>要传回回调函数的变量名称必须是returnVal ，同时，回调函数中的参数名称也必须是returnVal，也就是说，如果你写了</p>
<p>这么个例子：</p>
<p><strong>SubModal window</strong></p>
<p>
<p>var returnVal2 = "something";</p>
</p>
<p><strong>Parent window</strong></p>
<p>function returnRefresh(returnVal) {<br />&nbsp; alert(returnVal);<br />}</p>
<p>或者这样一个例子：</p>
<p><strong>SubModal window<br /></strong>var returnVal = "something";</p>
<p>&nbsp;</p>
<p><strong></strong>&nbsp;</p>
<p><strong>Parent window</strong></p>
<p>function returnRefresh(returnVal2) {<br />&nbsp; alert(returnVal);<br />}</p>
<p>&nbsp;</p>
<p>或者：</p>
<p><strong>SubModal window<br /></strong>var returnVal2 = "something";</p>
<p><strong>Parent window</strong></p>
<p>function returnRefresh(returnVal2) {<br />&nbsp; alert(returnVal);<br />}</p>
<p>&nbsp;</p>
<p>都会返回undefined</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>第二个问题，如何给弹出的对话框加标题：</strong></p>
<p>如果你是使用JQuery 问题就很简单，在你使用showPopWin() 函数之后，</p>
<p>紧接着调用$('#popupTitle').text('Some new Title');&nbsp; </p>
<p>如果不使用JQuery，用这个也行</p>
<p>document.getElementById('popupTitle').innerHTML="Some new Title";</p>
<p>&nbsp;</p>
<p>因为subModal实现的对话框，实际上是通过javascript生成了如下的代码：</p>
<p><code>&lt;div id="popupContainer"&gt; &lt;div id="popupInner"&gt; &lt;div id="popupTitleBar"&gt; &lt;div id="popupTitle"&gt;&lt;/div&gt; &lt;div id="popupControls"&gt; &lt;img src="close.gif" onclick="hidePopWin(false);" /&gt; &lt;/div&gt; &lt;/div&gt; &lt;iframe src="loading.html" style="width:100%;height:100%;background-color:transparent;" scrolling="auto" frameborder="0" allowtransparency="true" id="popupFrame" name="popupFrame" width="100%" height="100%"&gt; &lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;</code></p>
<pre></pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>我做了例子在附件里面。<br /></strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/233809" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 28 Aug 2008 12:34:51 +0800</pubDate>
        <link>http://www.javaeye.com/topic/233809</link>
        <guid>http://www.javaeye.com/topic/233809</guid>
      </item>
      <item>
        <title>Firefox插件(XUL)开发 学习笔记 3. Atom解析</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zsp.javaeye.com">zuroc</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/233360" style="color:red;">http://www.javaeye.com/topic/233360</a>&nbsp;
          发表时间: 2008年08月27日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: large"><br />不多说了,看附件中的插件,还剪裁了一个ff only的jquery:)<br /><br />发现了一个XUL教程<br />http://developer.mozilla.org/index.php?title=Cn/XUL_%E6%95%99%E7%A8%8B<br />    <br />ok,言归正传,Atom解析参见<br />http://developer.mozilla.org/en/Feed_content_access_API<br /><br /><pre name="code" class="java">
FeedTestResultListener=function(){}
FeedTestResultListener.prototype = {
      handleResult: function(result) {

        var feed = result.doc;

        feed.QueryInterface(Components.interfaces.nsIFeed);
        content=feed.title.text+"\n"
        
        var itemArray = feed.items;
        var numItems = itemArray.length;
       
          var i;
          var theEntry;
          var info;
          
          for (i=0; i&lt;numItems; i++) {
            theEntry = itemArray.queryElementAt(i, Components.interfaces.nsIFeedEntry);
            
            if (theEntry) {
               if(theEntry.link)    content += theEntry.link.resolve("")+"\n"
               if(theEntry.title.text) content += theEntry.title.text
              if (theEntry.summary) info = theEntry.summary.text
              else info = theEntry.content.text 
              content+=info+"\n"
            }
          }
        alert(content)
      }
    }

function fetch(url,listener){
    $.get(url,{},function (data) {
        var ioService = Components.classes['@mozilla.org/network/io-service;1']
                                         .getService(Components.interfaces.nsIIOService);
      var uri = ioService.newURI(url, null, null);
        var parser = Components.classes["@mozilla.org/feed-processor;1"]
                                        .createInstance(Components.interfaces.nsIFeedProcessor);
        try {
          parser.listener = listener;
          parser.parseFromString(data, uri);
        }catch(e) {
          alert("Error parsing feed.");
        }
    },"text")
}
fetch("http://api.douban.com/people/zuroc/miniblog",new FeedTestResultListener())</pre></span>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/233360" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 27 Aug 2008 17:59:10 +0800</pubDate>
        <link>http://www.javaeye.com/topic/233360</link>
        <guid>http://www.javaeye.com/topic/233360</guid>
      </item>
      <item>
        <title>flex文件上传，mmons－fileupload做后台 </title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chuan315.javaeye.com">chuan315</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/233248" style="color:red;">http://www.javaeye.com/topic/233248</a>&nbsp;
          发表时间: 2008年08月27日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="color: red">flex端的AS代码: </span><br /><pre name="code" class="java">internal function init():void{ 
    Security.allowDomain("*"); 
     file = new FileReference();   
     file.addEventListener(Event.SELECT, onSelect);   
    file.addEventListener(ProgressEvent.PROGRESS, processHandler);   
    file.addEventListener(IOErrorEvent.IO_ERROR,ioShow);                 
    } 
internal function ioShow(evt: IOErrorEvent){ 
     Alert.show(evt.toString(),"IO错误"); 
    } 
internal function doSelect():void{ 
//文件类型限制，第一个是文件类型选项只显示"png"类型的，第二个是只把.png文件显示出来
     var imageTypes:FileFilter = new FileFilter("png", "*.png");   
     var allTypes:Array = new Array(imageTypes);   
     file.browse(allTypes); 
    } 
internal function onSelect(evt:Event):void{ 
     pic_txt.text = file.name; 
    } 
internal function doUpload():void{ 
//指向struts的一个action,或servlte,注意一写要写完整路径 
     var request:URLRequest = new URLRequest("http://localhost:8080/productManage/uploadPic.do"); 
     
     fileName = "productImage\\"+new Date().getTime().toString() +".png"; 
       request.data = new URLVariables("filename="+fileName); 
          file.upload(request); 
       CursorManager.setBusyCursor(); 
    } 
//上传完成更新源 
    internal function processHandler(evt:ProgressEvent):void{ 
     if(evt.bytesLoaded == evt.bytesTotal){ 
       
      CursorManager.removeBusyCursor(); 
       
      var n:Number = new Date().getTime();           
      img.source = fileName +"?time="+n; 
     } 
    }  
&lt;mx:TextInput id="pic_txt" width="150"/> 
   &lt;mx:Button label="选择文件" click="doSelect()"/> 
   &lt;mx:Button label="开始上传" click="doUpload()"/>

 </pre><br /><span style="color: red">java端: </span><br /><pre name="code" class="java">import java.io.File; 
import java.util.List; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.apache.commons.fileupload.DiskFileUpload; 
import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.FileUploadException; 
import org.apache.struts.action.Action; 
import org.apache.struts.action.ActionForm; 
import org.apache.struts.action.ActionForward; 
import org.apache.struts.action.ActionMapping; 
public class UploadPicAction extends Action { 
public ActionForward execute(ActionMapping mapping, ActionForm form, 
   HttpServletRequest request, HttpServletResponse response) { 
  response.setContentType("text/html; charset=UTF-8"); 
  DiskFileUpload upload = new DiskFileUpload(); 
  try { 
   List itemlist = upload.parseRequest(request); 
//itemlist里包含多个参数，所以要判断一下是文件类型，还是参数字段，这里修改一下可以用于多个文件上传
   for (int i = 0; i &lt; itemlist.size(); i++) { 
    FileItem item = (FileItem) itemlist.get(i); 
    if (item.isFormField())<span style="color: red">//是表单字段跳过 </span>
     continue; 
    String name = request.getRealPath("") + "<a href="file://\\bin\\" target="_blank">\\bin\\</a>" 
      + request.getParameter("filename");//获得Web应用绝对路径，如果路径不在web应用下，由于安全机制，将会说"找不到系统指定路径" 

    try { 
     File f = new File(name); 
     item.write(f); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
   } 
  } catch (FileUploadException e) { 
   e.printStackTrace(); 
  } 
  return null; 
} 
} </pre><br /><br /><br /><br /><span style="color: blue">只要是为了总结，以便以后用，所以就不排版了<img src="/images/smiles/icon_biggrin.gif"/>，主要是用flex做前端，java开源的mmons－fileupload组件做后台。。。。</span>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/233248" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 27 Aug 2008 16:40:52 +0800</pubDate>
        <link>http://www.javaeye.com/topic/233248</link>
        <guid>http://www.javaeye.com/topic/233248</guid>
      </item>
      <item>
        <title>FLex组件TextInput比较有用的属性</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chuan315.javaeye.com">chuan315</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/233243" style="color:red;">http://www.javaeye.com/topic/233243</a>&nbsp;
          发表时间: 2008年08月27日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: medium">发现了一个Flex中TextInput的一个比较有用的属性restrict(约束,限定),先看下例子:<br />1,&lt;mx:TextInput id="test_ti" width="160" maxChars="20" restrict="0-9" text="0"/><br />这样,这个输入框最多只能输入20个字符,只能输入0到9之间的数字了,你如果输入别的是输入不进去的<br />2,&lt;mx:TextInput id="test_ti" width="160" maxChars="20" restrict="0-9\." text="0"/><br />这样,输入框可以输入0到9之间的数字,以及输入'.',中间必须用'\'分隔开来<br />3,&lt;mx:TextInput id="test_ti" width="160"  restrict="0-9\ab" text="0"/>这样,输入框可以输入0到9之间的数字,以及a,或b<br />4,,&lt;mx:TextInput id="test_ti" width="160"  restrict="a-z" text="0"/><br />可以输入a到z之间任何一个英文字母,'-'表示区间,如果要输入'-',就必须加'\',如\-<br />结论:<br />用restrict有个好处,就是省去了验证的麻烦,比如检验是否为数字,如果加了restrict="0-9",就不需要检验了,因为这个输入框只能输入0到9之间的数字,别的输不进去</span>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/233243" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 27 Aug 2008 16:31:44 +0800</pubDate>
        <link>http://www.javaeye.com/topic/233243</link>
        <guid>http://www.javaeye.com/topic/233243</guid>
      </item>
      <item>
        <title>最近做项目，写了个flex的工具类，方便以后用</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chuan315.javaeye.com">chuan315</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/233241" style="color:red;">http://www.javaeye.com/topic/233241</a>&nbsp;
          发表时间: 2008年08月27日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          主要作用就是获取一个容器里表单输入的值，返回一个vo,以及当一个容器中有很多checkbox时，方便获取选中项的值<br />package com.hjdl.tools<br />{<br />	import mx.containers.FormItem;<br />	import mx.controls.CheckBox;<br />	import mx.controls.ComboBox;<br />	import mx.controls.TextArea;<br />	import mx.controls.TextInput;<br />	import mx.core.Container;<br />	import mx.controls.Alert;<br />	public class FormTool<br />	{<br />		//无formitem的表单，仅支持两存容器嵌套<br />		public static function getFormVo(formPanel:Container,vobj:Object):Object{<br />			var fi_arr:Array=formPanel.getChildren();	<br />				for(var j:int=0;j&lt;fi_arr.length;j++){<br />					//如果里面还有层窗口<br />					if(fi_arr[j] is Container)<br />					{<br />						var con_arr:Array=Container(fi_arr[j]).getChildren();<br />						for(var k:int=0;k&lt;con_arr.length;k++)<br />						{<br />							if(con_arr[k] is TextInput){<br />									vobj[TextInput(con_arr[k]).id]=TextInput(con_arr[k]).text;<br />								} <br />								if(con_arr[k] is TextArea){<br />									vobj[TextArea(con_arr[k]).id]=TextArea(con_arr[k]).text;<br />								} <br />								if(con_arr[k] is ComboBox){<br />									vobj[ComboBox(con_arr[k]).id]=ComboBox(con_arr[k]).selectedItem.data;<br />								} 	<br />						}<br />					}<br />								if(fi_arr[j] is TextInput){<br />									vobj[TextInput(fi_arr[j]).id]=TextInput(fi_arr[j]).text;<br />								} <br />								if(fi_arr[j] is TextArea){<br />									vobj[TextArea(fi_arr[j]).id]=TextArea(fi_arr[j]).text;<br />								} <br />								if(fi_arr[j] is ComboBox){<br />									vobj[ComboBox(fi_arr[j]).id]=ComboBox(fi_arr[j]).selectedItem.data;<br />								} 																		<br />				}<br />				<br />				return vobj;<br />		}<br />		//有formitem的表单<br />		public static function getFormVoByFormItem(formPanel:Container,vobj:Object):Object{<br />			var item_arr:Array=formPanel.getChildren();	<br />				for(var i:int=0;i&lt;item_arr.length;i++){<br />					if(item_arr[i] is FormItem){<br />						var fi_arr:Array=FormItem(item_arr[i]).getChildren();<br />						for(var j:int=0;j&lt;fi_arr.length;j++){<br />								if(fi_arr[j] is TextInput){<br />									vobj[TextInput(fi_arr[j]).id]=TextInput(fi_arr[j]).text;<br />								} <br />								if(fi_arr[j] is TextArea){<br />									vobj[TextArea(fi_arr[j]).id]=TextArea(fi_arr[j]).text;<br />								} <br />								if(fi_arr[j] is ComboBox){<br />									vobj[ComboBox(fi_arr[j]).id]=ComboBox(fi_arr[j]).selectedItem.data;<br />								} <br />						}	<br />									<br />					}<br />				}<br />				return vobj;<br />		}<br />		//根据提供的数组，将一个容器内的符合条件的checkbox选中,第一个参数是容器ID，第二个是数组<br />		public static function selectCheckBox(con:Container,data:Array):void<br />		{<br />			var item_arr:Array=con.getChildren();<br />			for(var i:int=0;i&lt;item_arr.length;i++){<br />				if(item_arr[i] is CheckBox)<br />				{<br />					for(var j:int=0;j&lt;data.length;j++)<br />					{<br />						CheckBox(item_arr[i]).selected=false;//先把原来选中的清除<br />						if(data[j]==CheckBox(item_arr[i]).data)<br />						{<br />							CheckBox(item_arr[i]).selected=true;<br />							break;<br />						}<br />					}<br />				}<br />				<br />			}<br />		}<br />		//获取所有选中的CheckBox值<br />		public static function getSelectCheckBoxData(con:Container):String{<br />			var cbData:String="";<br />			var conItem:Array=con.getChildren();<br />			for(var i:int=0;i&lt;conItem.length;i++)<br />			{<br />				if(conItem[i] is CheckBox)<br />				{<br />					if(CheckBox(conItem[i]).selected==true)<br />					{<br />						//cbData.push(CheckBox(conItem[i]).data);<br />						cbData=CheckBox(conItem[i]).data+":"+cbData;<br />					}<br />				}<br />			}<br />			return cbData;<br />		}<br />	}<br />}
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/233241" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 27 Aug 2008 16:28:42 +0800</pubDate>
        <link>http://www.javaeye.com/topic/233241</link>
        <guid>http://www.javaeye.com/topic/233241</guid>
      </item>
      <item>
        <title>js模板编译器jCT,推荐/问题贴</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://achun.javaeye.com">achun</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/233103" style="color:red;">http://www.javaeye.com/topic/233103</a>&nbsp;
          发表时间: 2008年08月27日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>简介:</p>
<p>jCT是</p>
<p><span style="color: #993300;"><strong><a id="Common_Templates_(_)">JavaScript</a> Common Templates ==JavaScript 模板编译器</strong></span></p>
<p>先澄清几个问题</p>
<ol>
<li>一般说模板都用Template,jCT用的是复数形式的Templates,是什么原因<br />因为jCT支持自定义的文法标识,并且自动识别.</li>
<li>模板就模板,怎么叫编译器呢<br />因为jCT的设计理念很独特,jCT认为<br />模板就是把 <strong>页面代码 </strong>javascript<strong>对象化代码化函数化</strong>,通过带入<strong>表现数据</strong>到<strong>函数化对象</strong>得到最终期望的<strong>页面表现</strong>的工具,<br />然而在模板工具具体实现的时候,会存在是否可以与javascript兼容结合等问题<br />jCT用最<strong>简单的方法</strong>,最<strong>简洁容易改造</strong>的代码,<strong>完全兼容</strong>javascript语法的前提下完成了工作.<br /><span style="color: #993300;">在jCT的理念里,模板仅仅需要完成<strong>页面代码 </strong>javascript<strong>对象化代码化函数化</strong>,这一基本功能,<br />然后通过<strong>完全兼容</strong>javascript语法,来支持纷繁复杂的各种需求.<br /><span style="color: #000000;">从jCT模板的实现形式来看,与后台的php,jsp,asp文法非常相似,已经超出了模板的概念,因此称之为</span></span><span style="color: #993300;"><strong>JavaScript 模板编译器</strong></span></li>
<li><span style="color: #993300;"><span style="color: #000000;">如何使用jCT呢<br />使用jCT可以有多种形式,因为jCT没有写如何调用jCT模板的代码,虽然这提供了最大的灵活性,但是也给使用造成了一定的入门门槛,<br />因此我写这篇帖子也是和大家交流的目的,帮助对jCT感兴趣的朋友使用jCT</span></span></li>
</ol>
<p>jCT的开发历程:</p>
<p style="padding-left: 30px;">jCT的开发历程是很曲折的,最开始我也一直在用后台模板技术,自己也写了一个实现,可是我发现后台模板技术有一些天生的缺陷.</p>
<blockquote><ol>
<li>虽然采用的模板技术,数据可以和表现分离了,但事实上提供数据的代码和负责表现的代码仍然有一定的耦合性</li>
<li>毕竟是后台的模板,不能和前台浏览器的环境很好的结合在一起</li>
<li>在后台运行的模板对服务器有一定的压力</li>
</ol></blockquote>
<p style="padding-left: 30px;">于是我开始寻找前台的javascript模板,最终选定的是著名的JST,无可非议JST是优秀的.不过使用中我发现</p>
<blockquote><ol>
<li>我对数据的使用方法和JST的文法有冲突,</li>
<li>JST使用了大量的正则表达式,这个在大一点的模板下就很慢了.</li>
<li>当我想改造JST时发现JST的代码写的如此晦涩,致使我无法下手</li>
</ol></blockquote>
<blockquote>我决定自己写一套javascript模板工具.开始的时候也是向JST一样定义各种javascript的语法包装,并为各种特殊的要求写特定的模板语法设施.当jCT完成到第2版的时候,我对这种修修补补的写法产生的疑问.这些什么javascript的语法,特殊的要求,最终也是用javascript写的,而我又包装了一层,这不是很多余嘛!如果能直接兼容javascript语法,那不就不用这些特殊的代码了嘛!于是就有诞生了jCT3.看看下面jCT的模板,和php,jsp,asp如此的相似</blockquote>
<blockquote>
<pre name="code" class="html">&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;!---
/*+Exec*/
var D=['aaa','bbb','cccc'];
/*...*/
$(‘body').html(this.GetView());
--&gt;
&lt;ul&gt;
&lt;!---for(var I=0;I&lt;D.length;I++){--&gt;
&lt;li&gt;+-D[I]-+&lt;/li&gt;
&lt;!---}--&gt;
&lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</blockquote>
<blockquote>&nbsp;</blockquote>
<blockquote>查看我的博客,里面有jCT的专题.请感兴趣的朋友不耻下问,<br /></blockquote>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/233103" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 27 Aug 2008 09:58:26 +0800</pubDate>
        <link>http://www.javaeye.com/topic/233103</link>
        <guid>http://www.javaeye.com/topic/233103</guid>
      </item>
      <item>
        <title>解决Ext.form.TextField的maxLength siz属性问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://pconline900.javaeye.com">pconline900</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/232831" style="color:red;">http://www.javaeye.com/topic/232831</a>&nbsp;
          发表时间: 2008年08月26日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>Ext.form.TextField 的</strong><strong> maxLength/size 处理的并不是很好</strong></p>
<p><strong>设置了maxLength后还是可以任意输入，国外extjs论坛看到有人的帖子，通过prototype重定义这两个属性，试了一下，很有效</strong></p>
<p><strong></strong></p>
<p>&nbsp;</p>
<div id="post_message_26058">
<div class="codeblock" style="margin: 5px 20px 20px;">
<pre>// Textfield ignores size attribute of text.. 

Ext.form.TextField.prototype.size = 20;
Ext.form.TextField.prototype.initValue = function()
{
    if(this.value !== undefined){
        this.setValue(this.value);
    }else if(this.el.dom.value.length &gt; 0){
        this.setValue(this.el.dom.value);
    }
    this.el.dom.size = this.size;
    if (!isNaN(this.maxLength) &amp;&amp; (this.maxLength *1) &gt; 0 &amp;&amp; (this.maxLength != Number.MAX_VALUE)) {
        this.el.dom.maxLength = this.maxLength *1;
    }
    
        
};</pre>
上面的js放在ext-all.js的引用之后就可以了</div>
</div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/232831" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 26 Aug 2008 14:00:14 +0800</pubDate>
        <link>http://www.javaeye.com/topic/232831</link>
        <guid>http://www.javaeye.com/topic/232831</guid>
      </item>
      <item>
        <title>Ajax的JSP示例以及相关知识介绍</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaobo.javaeye.com">shaobo</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/232513" style="color:red;">http://www.javaeye.com/topic/232513</a>&nbsp;
          发表时间: 2008年08月25日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="g_t_left c07 content" id="blogtext_fks_085067092094087075086086095095083086085069085084085067">这是学习AJAX的第一篇文章，我把自己学习一些心得写出来，因为是从初学者的脚度出发，可能会写得比较详细，因为我就是一个初学者，也知道作为一个初学者，随随便便的拿一个例子就看看，是只知道要这样，但为什么要这样却不清楚，我这里就尽我自己的语言，让初学者和我一样，能够看了这篇文章之后，&ldquo;哦，这里原来是这样的&rdquo;。我个人还是喜欢从实例出发，对我自己而言，看了过后如果没有实例巩固，效果就不会那么好，也就不会减除对这个东西的神秘感，其实，从我个人的脚度出发后，因为前面写了两篇关于使用innerHTML实现动态效果的文章，再学这个就做了一个很好的铺垫了。因为这里面许多的时候都会使用 innerHTML，不过，这个要注意，这个东东只支持微软的浏览器（我的FireFox不行，其它牌子支持与否我没有测试过，不过，在浏览器界中，好像只有微软的独树一家，乱来，呵呵），你可以看一下我先面的两篇文章： <br />利用innerHTML实现隐显效果-两种实现方法 <br />通过改变innerHTML的内容，动态增加选择项 <br />学习使用AJAX之前，有几样的东西是必须的： <br />1、HTML <br />2、DHTML，就是动态HTML，这里可能会常用到document.getElementById([id])方法，或者是使用window.id.value= [value]等等，如果不熟悉，不及，看看下面的例子，如果还不能够理解，再把网上搜搜，这方面的解释多得不能够再多了。 <br />3、Javascript。这个就是非常的重要的，因为好多东西都需要通过这个去操作。 <br />4、DOM。这个不是必须的，就算我们不知道这个东西，照样可以用JAVASCRIT做很多的东西了。 <br />5、数据库操作及SQL知识。现在应用程序好多都是与数据库打交道，常见的用户名信息等等，都是放在数据库中的。 <br />下面进行正题吧，这个实例非常的简单，采用JSP实现用户输入的用户是否存在于数据库中，并且给以相应的提示，所谓&ldquo;麻雀虽小，五脏俱全&rdquo;，其它的发挥就是在这个方向上发挥开发。 <br />总共有三个文件，有两个JSP面，一个用于前台显示，一个用于确定用户是否存在;另外一个JAVA页面，用于做数据库连接。 <br />注：请注意其中注释，那是非常的有助于你理解 <br />第一个前台显示：index.jsp
<div>
<div>
<div>Html代码 <a href="http://wangyu.javaeye.com/blog/190800#" title="复制代码"><img src="http://wangyu.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>
</div>
<ol>
<li><span><strong><span style="color: #006699;"><span>&lt;</span><span>html</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></span></li>
<li><strong><span style="color: #006699;"><span>&lt;</span><span>head</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><strong><span style="color: #006699;"><span>&lt;</span><span>title</span><span>&gt;</span><span>&lt;/</span><span>title</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><strong><span style="color: #006699;"><span>&lt;</span><span>script</span></span></strong><span>&nbsp;</span><span><span style="color: #ff0000;">language</span></span><span>=</span><span><span style="color: #0000ff;">"javascript"</span></span><span>&nbsp;</span><span><strong><span style="color: #006699;">&gt;</span></strong></span><span>&nbsp;&nbsp;</span></li>
<li><span>var&nbsp;httpRequest; &nbsp;&nbsp;</span></li>
<li><span>//下面这个函数可以返回一个适合任何浏览器的httpRequest，步子如下： &nbsp;&nbsp;</span></li>
<li><span>//1.试着创建一个XMLHttpRequest()示例，该示例可适合于除了微软以外的所有浏览器 &nbsp;&nbsp;</span></li>
<li><span>//2.增加错误判断，如果当前浏览器是微软的，那么就创建适用于微软的浏览器 &nbsp;&nbsp;</span></li>
<li><span>//3.但微软的浏览器又有两个版本之分，不过据说微软已经在7.0中增加对XMLHttpRequest()的支持 &nbsp;&nbsp;</span></li>
<li><span>//4.但这样也需要对原来的浏览器支持，否则你写出来的程序那些用老版本浏览器的用户就是看不到效果的。 &nbsp;&nbsp;</span></li>
<li><span>function&nbsp;createRequest() &nbsp;&nbsp;</span></li>
<li><span>{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;try{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #ff0000;">request</span></span><span>=</span><span><span style="color: #0000ff;">new</span></span><span>&nbsp;XMLHttpRequest(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}catch(trymicrosoft) &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #ff0000;">request</span></span><span>=</span><span><span style="color: #0000ff;">new</span></span><span>&nbsp;ActiveXObject("Msxml2.XMLHTTP"); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(othermicrosoft) &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #ff0000;">request</span></span><span>=</span><span><span style="color: #0000ff;">new</span></span><span>&nbsp;ActiveXObject("Microsoft.XMLHTTP"); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(failed) &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #ff0000;">request</span></span><span>=</span><span><span style="color: #0000ff;">false</span></span><span>; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;if(!request) &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("err&nbsp;Happend!"); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;request; &nbsp;&nbsp;</span></li>
<li><span>} &nbsp;&nbsp;</span></li>
<li><span>//这个函数就是用户的动作所有触发的函数，如下面的onblur()时，就会调用该函数 &nbsp;&nbsp;</span></li>
<li><span>//经过的步骤如下： &nbsp;&nbsp;</span></li>
<li><span>//1.从HTML页面得到你需要的数据，可以采有document.getElementById("")方法。 &nbsp;&nbsp;</span></li>
<li><span>//2.建立需要的URL，该URL就和在FORM里面的method为get时并采用submit提交在地址栏里面到的一样 &nbsp;&nbsp;</span></li>
<li><span>//3.打开与服务器的连接，这里面有三个必要的参数，虽然文档规定只有两个，但是我个人觉得最好用三个， &nbsp;&nbsp;</span></li>
<li><span>//&nbsp;&nbsp;第一个可以是GET,POST或者是POST，但常用的就是前面的两个，并且最好都用大写，因为有些浏览器如FireFox可能会报错， &nbsp;&nbsp;</span></li>
<li><span>//&nbsp;&nbsp;第二个就是打报的URL，这肯定你是必须的。 &nbsp;&nbsp;</span></li>
<li><span>//&nbsp;&nbsp;第三个就是下面的看到的true，这里可以是false。true表示同步处理，你提交后可以做其它的事情， &nbsp;&nbsp;</span></li>
<li><span>//&nbsp;&nbsp;这就是AJAX里面的A，即asynchronous;如是false，那就得等到服务器的返回才能够做其它的事情。 &nbsp;&nbsp;</span></li>
<li><span>//4.等到服务器完成，并且确定返回执行了正确执行的提示，我们就可以做下面我们想做的事情。这些后面的事情就必须通过 &nbsp;&nbsp;</span></li>
<li><span>//&nbsp;&nbsp;Javascript去完成了，因为XMLHttpRequest的唯一用途就是发送请求及接收服务器的响应结果。 &nbsp;&nbsp;</span></li>
<li><span>//5.上面都完成了后，就可以采用send()方法向服务器发送你需要发送的信息了，它的参数可以是任何类型，发送的数据格式必须为 &nbsp;&nbsp;</span></li>
<li><span>//&nbsp;&nbsp;这样的格式：</span><span><span style="color: #ff0000;">name</span></span><span>=</span><span><span style="color: #0000ff;">value</span></span><span>&amp;</span><span><span style="color: #ff0000;">anothername</span></span><span>=</span><span><span style="color: #0000ff;">othervalue</span></span><span>&amp;</span><span><span style="color: #ff0000;">so</span></span><span>=</span><span><span style="color: #0000ff;">on</span></span><span>，如果你想传送数据，你必须更改MIME类型： &nbsp;&nbsp;</span></li>
<li><span>//&nbsp;&nbsp;httpRequest.setRequestHeader('Content-type','application/x-www-form-urnlencoded'); &nbsp;&nbsp;</span></li>
<li><span>//&nbsp;&nbsp;否则服务器将会丢弃发送的数据。 &nbsp;&nbsp;</span></li>
<li><span>function&nbsp;getBackInfo() &nbsp;&nbsp;</span></li>
<li><span>{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span><span style="color: #ff0000;">username</span></span><span>=</span><span><span style="color: #0000ff;">document</span></span><span>.getElementById("username").value; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span><span style="color: #ff0000;">url</span></span><span>=</span><span><span style="color: #0000ff;">'checkUser.jsp?username='</span></span><span>+username; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;request.open("GET",url,"true"); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//下面相当于是一个隐性的循环，在函数中规定只有都接收完毕数据后才做处理 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//onreadystatechange有5个值： &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;0:未初始化 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;1:初始化 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;2:发送数据 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;3:接收数据中 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;4:数据接收完毕 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//另外还要注意就是在注册回调函数onreadystatechange时，后面的函数不能够带参数 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//如下disResult是一个函数，不能够带参。 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #ff0000;">reqeust.onreadystatechange</span></span><span>=</span><span><span style="color: #0000ff;">disResult</span></span><span>;//隐性的循环 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;request.send(null); &nbsp;&nbsp;</span></li>
<li><span>} &nbsp;&nbsp;</span></li>
<li><span>function&nbsp;disResult() &nbsp;&nbsp;</span></li>
<li><span>{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//1.一定要确定</span><span><span style="color: #ff0000;">readystate</span></span><span>==4的完成状态才做下面的事，否则会在建立连接即</span><span><span style="color: #ff0000;">readystate</span></span><span>==1的时候就开始， &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;然后会在</span><span><span style="color: #ff0000;">readystate</span></span><span>==2，</span><span><span style="color: #ff0000;">readystate</span></span><span>==3，</span><span><span style="color: #ff0000;">readystate</span></span><span>==4的时候都会执行，不信你可以alert("")一个 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;提示信息试试。 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//2.服务器通知完成了，并且还要保证是正确完成的，得到的是我们需要的结果才能够继续，这里常用响应码有： &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;200:成功执行 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;401:未授权 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;403:禁止 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;404:没有找到文件 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span><span style="color: #ff0000;">request.readystate</span></span><span>==4) &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span><span style="color: #ff0000;">request.status</span></span><span>==200) &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//一切都OK了，那就该用Javascript去执行你想要的动作了。 &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("disCheckResult")</span><span><span style="color: #ff0000;">.value</span></span><span>=</span><span><span style="color: #0000ff;">request</span></span><span>.responseText; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('done'); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('Something&nbsp;Wrong&nbsp;has&nbsp;Happend!'); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>} &nbsp;&nbsp;</span></li>
<li><strong><span style="color: #006699;"><span>&lt;/</span><span>script</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><strong><span style="color: #006699;"><span>&lt;/</span><span>head</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><strong><span style="color: #006699;"><span>&lt;</span><span>body</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;</span><span>form</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;</span><span>table</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;</span><span>tr</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;</span><span>td</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;</span><span>input</span></span></strong><span>&nbsp;</span><span><span style="color: #ff0000;">type</span></span><span>=</span><span><span style="color: #0000ff;">text</span></span><span>&nbsp;</span><span><span style="color: #ff0000;">id</span></span><span>=</span><span><span style="color: #0000ff;">"username"</span></span><span>&nbsp;</span><span><span style="color: #ff0000;">onblur</span></span><span>=</span><span><span style="color: #0000ff;">"getBackInfo();"</span></span><span><strong><span style="color: #006699;">&gt;</span></strong></span><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;/</span><span>td</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;</span><span>td</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;</span><span>dd</span></span></strong><span>&nbsp;</span><span><span style="color: #ff0000;">id</span></span><span>=</span><span><span style="color: #0000ff;">"disCheckResult"</span></span><span><strong><span style="color: #006699;">&gt;</span></strong></span><span>这里用于在执行后显示结果的地方</span><strong><span style="color: #006699;"><span>&lt;/</span><span>dd</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;/</span><span>td</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;/</span><span>tr</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;/</span><span>table</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;</span><strong><span style="color: #006699;"><span>&lt;/</span><span>form</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><strong><span style="color: #006699;"><span>&lt;/</span><span>body</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
<li><strong><span style="color: #006699;"><span>&lt;/</span><span>html</span><span>&gt;</span></span></strong><span>&nbsp;&nbsp;</span></li>
</ol></div>
<pre>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;/title&gt;
&lt;script language="javascript" &gt;
var httpRequest;
//下面这个函数可以返回一个适合任何浏览器的httpRequest，步子如下：
//1.试着创建一个XMLHttpRequest()示例，该示例可适合于除了微软以外的所有浏览器
//2.增加错误判断，如果当前浏览器是微软的，那么就创建适用于微软的浏览器
//3.但微软的浏览器又有两个版本之分，不过据说微软已经在7.0中增加对XMLHttpRequest()的支持
//4.但这样也需要对原来的浏览器支持，否则你写出来的程序那些用老版本浏览器的用户就是看不到效果的。
function createRequest()
{
    try{
        request=new XMLHttpRequest();
    }catch(trymicrosoft)
    {
        try{
            request=new ActiveXObject("Msxml2.XMLHTTP");
        }catch(othermicrosoft)
        {
            try{
                request=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(failed)
            {
                request=false;
            }
        }
    }
    if(!request)
    {
       alert("err Happend!");
       return null;
    }       
    return request;
}
//这个函数就是用户的动作所有触发的函数，如下面的onblur()时，就会调用该函数
//经过的步骤如下：
//1.从HTML页面得到你需要的数据，可以采有document.getElementById("")方法。
//2.建立需要的URL，该URL就和在FORM里面的method为get时并采用submit提交在地址栏里面到的一样
//3.打开与服务器的连接，这里面有三个必要的参数，虽然文档规定只有两个，但是我个人觉得最好用三个，
//  第一个可以是GET,POST或者是POST，但常用的就是前面的两个，并且最好都用大写，因为有些浏览器如FireFox可能会报错，
//  第二个就是打报的URL，这肯定你是必须的。
//  第三个就是下面的看到的true，这里可以是false。true表示同步处理，你提交后可以做其它的事情，
//  这就是AJAX里面的A，即asynchronous;如是false，那就得等到服务器的返回才能够做其它的事情。
//4.等到服务器完成，并且确定返回执行了正确执行的提示，我们就可以做下面我们想做的事情。这些后面的事情就必须通过
//  Javascript去完成了，因为XMLHttpRequest的唯一用途就是发送请求及接收服务器的响应结果。
//5.上面都完成了后，就可以采用send()方法向服务器发送你需要发送的信息了，它的参数可以是任何类型，发送的数据格式必须为
//  这样的格式：name=value&amp;anothername=othervalue&amp;so=on，如果你想传送数据，你必须更改MIME类型：
//  httpRequest.setRequestHeader('Content-type','application/x-www-form-urnlencoded');
//  否则服务器将会丢弃发送的数据。
function getBackInfo()
{
    var username=document.getElementById("username").value;
    var url='checkUser.jsp?username='+username;
    request.open("GET",url,"true");
    //下面相当于是一个隐性的循环，在函数中规定只有都接收完毕数据后才做处理
    //onreadystatechange有5个值：
    // 0:未初始化
    // 1:初始化
    // 2:发送数据
    // 3:接收数据中
    // 4:数据接收完毕
    //另外还要注意就是在注册回调函数onreadystatechange时，后面的函数不能够带参数
    //如下disResult是一个函数，不能够带参。
    reqeust.onreadystatechange=disResult;//隐性的循环
    request.send(null);
}
function disResult()
{
    //1.一定要确定readystate==4的完成状态才做下面的事，否则会在建立连接即readystate==1的时候就开始，
    //  然后会在readystate==2，readystate==3，readystate==4的时候都会执行，不信你可以alert("")一个
    //  提示信息试试。
    //2.服务器通知完成了，并且还要保证是正确完成的，得到的是我们需要的结果才能够继续，这里常用响应码有：
    //  200:成功执行
    //  401:未授权
    //  403:禁止
    //  404:没有找到文件
    if(request.readystate==4)
    {
        if(request.status==200)
        {
            //一切都OK了，那就该用Javascript去执行你想要的动作了。
            document.getElementById("disCheckResult").value=request.responseText;
            alert('done');
        }
        else
        {
            alert('Something Wrong has Happend!');
        }
    }
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;form&gt;
    &lt;table&gt;
        &lt;tr&gt;
            &lt;td&gt;
                &lt;input type=text id="username" onblur="getBackInfo();"&gt;
            &lt;/td&gt;
            &lt;td&gt;              
                &lt;dd id="disCheckResult"&gt;这里用于在执行后显示结果的地方&lt;/dd&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
  &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<br />第二个用于验证的JSP页面：checkUser.jsp
<div>
<div>
<div>Java代码 <a href="http://wangyu.javaeye.com/blog/190800#" title="复制代码"><img src="http://wangyu.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>
</div>
<ol>
<li><span><span>&lt;!DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;</span><span><span style="color: #0000ff;">"-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN"</span></span><span>&nbsp;&nbsp;</span></span></li>
<li><span><span style="color: #0000ff;">"http://www.w3.org/TR/html4/loose.dtd"</span></span><span>&gt; &nbsp;&nbsp;</span></li>
<li><span>&lt;%@&nbsp;page&nbsp;contentType=</span><span><span style="color: #0000ff;">"text/html;charset=GBK"</span></span><span>%&gt; &nbsp;&nbsp;</span></li>
<li><span>&lt;%@&nbsp;page&nbsp;</span><span><strong><span style="color: #7f0055;">import</span></strong></span><span>=</span><span><span style="color: #0000ff;">"project1.DBMS_Conn"</span></span><span>%&gt; &nbsp;&nbsp;</span></li>
<li><span>&lt;html&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&lt;head&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;http-equiv=</span><span><span style="color: #0000ff;">"Content-Type"</span></span><span>&nbsp;content=</span><span><span style="color: #0000ff;">"text/html;&nbsp;charset=GBK"</span></span><span>/&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;checkUser&lt;/title&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&lt;/head&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&lt;body&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&lt;% &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;username=request.getParameter(</span><span><span style="color: #0000ff;">"username"</span></span><span>); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;DBMS_Conn&nbsp;conn=</span><span><strong><span style="color: #7f0055;">new</span></strong></span><span>&nbsp;DBMS_Conn(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">if</span></strong></span><span>(conn.checkUser(username)) &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(</span><span><span style="color: #0000ff;">"用户名已经存在！"</span></span><span>);</span><span><span style="color: #008200;">//这个信息就是发送到前台去显示的信息，即服务器返回的信息 </span></span><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">else</span></strong></span><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(</span><span><span style="color: #0000ff;">"可以继续！"</span></span><span>); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;%&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&lt;/body&gt; &nbsp;&nbsp;</span></li>
<li><span>&lt;/html&gt;&nbsp;&nbsp;</span></li>
</ol></div>
<pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;%@ page contentType="text/html;charset=GBK"%&gt;
&lt;%@ page import="project1.DBMS_Conn"%&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=GBK"/&gt;
    &lt;title&gt;checkUser&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
  &lt;%
    String username=request.getParameter("username");
    DBMS_Conn conn=new DBMS_Conn();
    if(conn.checkUser(username))
        out.println("用户名已经存在！");//这个信息就是发送到前台去显示的信息，即服务器返回的信息
    else
        out.println("可以继续！");
  %&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
<br />第三个数据库连接JAVA程序：
<div>
<div>
<div>Java代码 <a href="http://wangyu.javaeye.com/blog/190800#" title="复制代码"><img src="http://wangyu.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>
</div>
<ol>
<li><span><span><strong><span style="color: #7f0055;">package</span></strong></span><span>&nbsp;project1; &nbsp;&nbsp;</span></span></li>
<li><span>&nbsp;&nbsp;</span></li>
<li><span><strong><span style="color: #7f0055;">import</span></strong></span><span>&nbsp;java.sql.Connection; &nbsp;&nbsp;</span></li>
<li><span><strong><span style="color: #7f0055;">import</span></strong></span><span>&nbsp;java.sql.DriverManager; &nbsp;&nbsp;</span></li>
<li><span><strong><span style="color: #7f0055;">import</span></strong></span><span>&nbsp;java.sql.ResultSet; &nbsp;&nbsp;</span></li>
<li><span><strong><span style="color: #7f0055;">import</span></strong></span><span>&nbsp;java.sql.SQLException; &nbsp;&nbsp;</span></li>
<li><span><strong><span style="color: #7f0055;">import</span></strong></span><span>&nbsp;java.sql.Statement; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;</span></li>
<li><span><strong><span style="color: #7f0055;">public</span></strong></span><span>&nbsp;</span><span><strong><span style="color: #7f0055;">class</span></strong></span><span>&nbsp;DBMS_Conn&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;Statement&nbsp;st; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">public</span></strong></span><span>&nbsp;DBMS_Conn()&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn_init(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">void</span></strong></span><span>&nbsp;conn_init()&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setConnection(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setStatement(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">public</span></strong></span><span>&nbsp;</span><span><strong><span style="color: #7f0055;">void</span></strong></span><span>&nbsp;setConnection()&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">try</span></strong></span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #008200;">//Class.forName("org.gjt.mm.mysql.Driver").newInstance(); </span></span><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(</span><span><span style="color: #0000ff;">"sun.jdbc.odbc.JdbcOdbcDriver"</span></span><span>); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #008200;">//db.mdb有一个名为user表，至少有一个名为username的字段 </span></span><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;strurl&nbsp;= &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #0000ff;">"jdbc:odbc:driver={Microsoft&nbsp;Access&nbsp;Driver&nbsp;(*.mdb)};DBQ=E:\\db.mdb"</span></span><span>; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #008200;">//conn&nbsp;= </span></span><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #008200;">//DriverManager.getConnection("jdbc:mysql://localhost/palfinger?user=root&amp;password=admin&amp;useUnicode=true&amp;characterEncoding=8859_1"); </span></span><span>&nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;=&nbsp;DriverManager.getConnection(strurl); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span><strong><span style="color: #7f0055;">catch</span></strong></span><span>&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #008200;">/** </span></span>&nbsp;</li>
<li><span><span><span style="color: #008200;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;设置Statement </span></span>&nbsp;</span></li>
<li><span><span><span style="color: #008200;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></span><span>&nbsp;&nbsp;</span></span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">public</span></strong></span><span>&nbsp;</span><span><strong><span style="color: #7f0055;">void</span></strong></span><span>&nbsp;setStatement()&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">try</span></strong></span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st&nbsp;= &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,&nbsp;ResultSet.CONCUR_READ_ONLY); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span><strong><span style="color: #7f0055;">catch</span></strong></span><span>&nbsp;(SQLException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span><span style="color: #008200;">/** </span></span>&nbsp;</li>
<li><span><span><span style="color: #008200;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;根据用户名确定用户是否存在 </span></span>&nbsp;</span></li>
<li><span><span><span style="color: #008200;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></span><span>&nbsp;&nbsp;</span></span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">public</span></strong></span><span>&nbsp;</span><span><strong><span style="color: #7f0055;">boolean</span></strong></span><span>&nbsp;checkUser(String&nbsp;username)&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql=</span><span><span style="color: #0000ff;">"select&nbsp;*&nbsp;from&nbsp;user&nbsp;where&nbsp;username='"</span></span><span>+username+</span><span><span style="color: #0000ff;">"'"</span></span><span>; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet&nbsp;rs; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">try</span></strong></span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs&nbsp;=&nbsp;st.executeQuery(sql); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">if</span></strong></span><span>(rs.next()) &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">return</span></strong></span><span>&nbsp;</span><span><strong><span style="color: #7f0055;">true</span></strong></span><span>; &nbsp;&nbsp;</span></li>
<li><span>&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></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span><strong><span style="color: #7f0055;">catch</span></strong></span><span>&nbsp;(SQLException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">try</span></strong></span><span>&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span><strong><span style="color: #7f0055;">catch</span></strong></span><span>&nbsp;(SQLException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span><strong><span style="color: #7f0055;">return</span></strong></span><span>&nbsp;</span><span><strong><span style="color: #7f0055;">false</span></strong></span><span>; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
<li><span>}&nbsp;&nbsp;</span></li>
</ol></div>
</div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/232513" style="color:red;">已有 <strong>2</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 25 Aug 2008 17:43:31 +0800</pubDate>
        <link>http://www.javaeye.com/topic/232513</link>
        <guid>http://www.javaeye.com/topic/232513</guid>
      </item>
      <item>
        <title>ZK Ajax Framework 發表 Eclipse Plug-in ZK Studio</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://henrichen.javaeye.com">henrichen</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/232442" style="color:red;">http://www.javaeye.com/topic/232442</a>&nbsp;
          发表时间: 2008年08月25日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          ZK Studio 是在 Eclipse 环境下开发 ZK 的外挂程式。此版本提供一些 0.8.0 版本的修正，并新增自动线上更新功能。<br />关於安装步骤与下载连结请参考: <a href="http://www.zkoss.org/smalltalks/zkstudioins/" target="_blank">安装说明</a>。<br /><br />这里是<a href="http://www.zkoss.org/smalltalks/zkstudio0.8/" target="_blank">功能简介</a>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/232442" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 25 Aug 2008 14:34:47 +0800</pubDate>
        <link>http://www.javaeye.com/topic/232442</link>
        <guid>http://www.javaeye.com/topic/232442</guid>
      </item>
      <item>
        <title>Ext2.X 树的分页，实现前台分页和后台分页</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiexueze.javaeye.com">xiexueze</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/232161" style="color:red;">http://www.javaeye.com/topic/232161</a>&nbsp;
          发表时间: 2008年08月24日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          当树的一层结点非常多的时候，如有几百个，甚至成千上万个，这样一次性全部显示出来，势必会对浏览器造成很大负担，严重影响用户体验。<br /><br />这里通过对 Ext.tree.TreeLoader 的扩展，实现了树的分页，对每一层结点的显示数目进行了限制，从而解决由数据量大造成树的显示性能<br /><br /><br />该扩展提供两种分页方式，分别是前台分页和后台分页：<br />前台分页是指，从后台一性次取出下一层的所有结点，在进行翻页时，由前台控制该显示哪些结点，不再调用后台。<br />后台分页是指，每次翻页时，都调用后台方法，显示返回的结点。<br /><br />前台分页实现：<br /><br /><pre name="code" class="js">var tree = new Ext.tree.TreePanel({
	applyTo:'tree-ct',
	width:300,
	height:400,
	autoScroll:true,
	plugins: new Ext.ux.tree.TreeNodeMouseoverPlugin(), //使用树的结点Mouseover事件插件
	loader: new Ext.ux.tree.PagingTreeLoader({			//使用扩展的分页TreeLoader
		dataUrl:'getNodes.jsp',
		pageSize:10,									//每次分页显示的结点数
		enableTextPaging:true,							//是否显示分页输入框
		pagingModel:'local'								//local表示前台分页,remote则表示后台分页
	}),
	root: new Ext.tree.AsyncTreeNode({ id:'0',text:'root' })
});
</pre><br /><br />使用前台分页，后台取结点信息不需要做特殊处理,只需要根据Ext传过去的node参数变量（欲展开的结点ID），获取下一层结点即可，返回JSON格式如：<br />[{id:1,text:'node1',leaf:false,children:[{...},...{...}]},{id:1,text:'node2',leaf:true},...,{id:100,text:'node100',leaf:true}]<br /><br /><br />后台分页实现：<br />JS代码只需要将pagingModel:'local'改成pagingModel:'remote'即可<br /><br />后台则需要做更多的事情，后台将会接收到几个参数，分别是：<br />node:	欲展开(分页)的结点ID<br />start:	开始结点的序号，当结点第一次取数展开时，start为0,每翻一页，start在原来的值上加上limit（见下）<br />limit:	每页显示的结点数目，为前台pageSize的值<br />total:	总结点数目（只要在翻页时才传，结点第一次展开时因为没有，所以不传）<br /><br />为什么要传total这个值呢？<br />结点第一次展开时，后台要从数据库或别的地方求得total总数，以及取从start开始的limit个结点信息<br />当结点展开后，在进行翻页时，此时后台没必要再进行total总数的重复计算，只需取到从start开始的limit个结点信息既可<br />所以后台可以判断是否有total这个值，有就不求了，没有（第一次展开结点）才去求<br /><br />后台返回的JSON必须是以下格式：<br />{total:200,nodes:[{id:1,text:'node1',leaf:false},...,{id:100,text:'node100',leaf:false}]}<br />要有total值，并将结点信息数组赋给nodes属性<br /><br />该扩展在IE6，Firefox3和Safari3测试过，使用的EXT版本是2.2,EXT的其它版本还有待测试。。。。
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/232161" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 24 Aug 2008 23:42:32 +0800</pubDate>
        <link>http://www.javaeye.com/topic/232161</link>
        <guid>http://www.javaeye.com/topic/232161</guid>
      </item>
      <item>
        <title>发布GridPanel的一个扩展类ActionGridPanel，简化了Toolbar button</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhangle.javaeye.com">zhangle</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231831" style="color:red;">http://www.javaeye.com/topic/231831</a>&nbsp;
          发表时间: 2008年08月23日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          工作中使用Ext的GridPanel经常需要加上Toolbar，加上多个按钮多grid中选中的行进行相应的动作。<br />Ext.ux.ActionGridPanel是Ext.grid.GridPanel的一个扩展类，定义了actions数组，每个元素代表了一个按钮。Ext.ux.ActionGridPanel会在按钮动作成功后，刷新当前页。<br />按钮属性定义如下<br />{<br />	text: //button text<br />	tooltip: // button tooltip<br />	iconCls: // button iconCls<br />	url: // button 动作的 url，将grid选定行的id随同该url发送到服务器<br />	disabledIfLessThan: // 如果该值大于0，则初始化grid时disable该按钮。当grid选定行数目小于该值时，disable该按钮。<br />}<br /><br /><pre name="code" class="js">
    var grid = new Ext.ux.ActionGridPanel({
        height: 300,
        width: 'auto',
        title: 'ActionGridPanel example',
        store: store,
        cm: cm,
        sm: sm,
        loadMask: true,
        trackMouseOver:false,
        renderTo: Ext.get('actiongridpanel-example'),
        viewConfig: {
            forceFit:true,
            enableRowBody:true,
            showPreview:false
        },
        actions: [
        {
                text:'action 1',
                tooltip:'action 1',
                iconCls:'action',
                url:'example_action1.action',
                disabledIfLessThan: 1
        },
        {
                text:'action 2',
                tooltip:'action 2',
                iconCls:'action',
                url:'example_action2.action',
                disabledIfLessThan: 1
        }]
    });
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/231831" style="color:red;">已有 <strong>2</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 23 Aug 2008 11:11:28 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231831</link>
        <guid>http://www.javaeye.com/topic/231831</guid>
      </item>
      <item>
        <title>AJAX读取JSON格式数据</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://134.javaeye.com">旁边的手</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231788" style="color:red;">http://www.javaeye.com/topic/231788</a>&nbsp;
          发表时间: 2008年08月23日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <img src="/images/smiles/icon_arrow.gif"/>紧接上篇，也对AJAX读取JSON格式数据，做了个测试，一句话，感觉就是超棒了。<br /><img src="/images/smiles/icon_arrow.gif"/>首先，我们随意写个<span style="color: red">JSON格式的数据文件user.txt</span><br /><pre name="code" class="java">{
     userName: "nihao",
     sex: "male",
     age: "23"
}</pre><br /><img src="/images/smiles/icon_arrow.gif"/>下面我们写个<span style="color: red">AJAX用到一个基本的ajax.js文件</span>一般这里我们这个文件分别写出来。<br /><pre name="code" class="java">function createXMLHttpRequest() {
    var req;
         if (window.XMLHttpRequest) {
	    req = new XMLHttpRequest();
	}else if (window.ActiveXObject) {
	    req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return req;
}</pre><br /><img src="/images/smiles/icon_arrow.gif"/>另外，我们导入一个<span style="color: red">Ajax的资源文件prototype1.6.js</span>，在结束时我上传给大家。<br /><img src="/images/smiles/icon_arrow.gif"/>然后，我们建个<span style="color: red">主页面来jsontest.html</span>测试下AJAX读取JSON格式的数据。<br /><pre name="code" class="java">
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&lt;html>
  &lt;head>
    &lt;!-- 导入两个js文件 -->
    &lt;script type="text/javascript" src="./ajax.js">&lt;/script>
    &lt;script type="text/javascript" src="./prototype1.6.js">&lt;/script>
    &lt;title>jsontest.html&lt;/title>
	
    &lt;meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    &lt;meta http-equiv="description" content="this is my page">
    &lt;meta http-equiv="content-type" content="text/html; charset=GB18030">
    &lt;!--&lt;link rel="stylesheet" type="text/css" href="./styles.css">-->

    &lt;script type="text/javascript">
        var req = createXMLHttpRequest();
	    function startRequest(){
		    try{
		        req.onreadystatechange = handleStateChange;
		        req.open("GET", "user.txt", true);
		        req.send(null);    
		    }catch(exception){
		        alert("");
		    }  
	    }
		function handleStateChange(){    
	    	if(req.readyState == 4){        
	       		 if (req.status == 200 || req.status == 0){
		            // 取得返回字符串
		            var resp = req.responseText;
		            // 构造返回JSON对象的方法
		            var func = new Function("return " + resp);
		            // 得到JSON对象
		            var json = func( );
		            // 显示返回结果
		            alert("userName: " + json.userName + " " + "sex: " + json.sex + " " + "age: " + json.age);
	              }
	         }
	     }	    
    &lt;/script>
  &lt;/head>  
  &lt;body>
    &lt;div>
        &lt;input type="button" value="json's value"
                onclick="startRequest();" />
    &lt;/div>
  &lt;/body>
&lt;/html>
</pre><br />试运行结果，大家自己去调试了，在浏览器里输入http://localhost:8080/jsontest/jsontest.html即可了。<br /><br />最后，给大家上传AJAX的一个js资源文件prototype1.6.js
          <br/><br/>
          <span style="color:red;">
            <a href="http://c3po.javaeye.com/topic/231788" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 23 Aug 2008 09:28:25 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231788</link>
        <guid>http://www.javaeye.com/topic/231788</guid>
      </item>
  </channel>
</rss>
