<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>npsajax</title>
    <description></description>
    <link>http://npsajax.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>Mysql 命令</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/230667" style="color:red;">http://npsajax.javaeye.com/blog/230667</a>&nbsp;
          发表时间: 2008年08月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h2>mysql字符集中无gb2312，如何解决</h2>
<div class="t_msgfont" id="postmessage_543273">
<div class="blockcode"><em onclick="copycode($('code0'));">复制内容到剪贴板</em>
<h5><span class="t_tag" onclick="tagshow(event)">代码</span>:</h5>
<code id="code0"><br /><span class="t_tag" onclick="tagshow(event)">mysql</span>&gt; show character set;<br />+----------+-----------------------------+---------------------+--------+<br />| Charset&nbsp;&nbsp;| Description&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| Default collation&nbsp; &nbsp;| Maxlen |<br />+----------+-----------------------------+---------------------+--------+<br />| dec8&nbsp; &nbsp;&nbsp;&nbsp;| DEC West European&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| dec8_swedish_ci&nbsp; &nbsp;&nbsp;&nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| cp850&nbsp; &nbsp; | DOS West European&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| cp850_general_ci&nbsp; &nbsp; |&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| hp8&nbsp; &nbsp;&nbsp; &nbsp;| HP West European&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;| hp8_english_ci&nbsp; &nbsp;&nbsp; &nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| koi8r&nbsp; &nbsp; | KOI8-R Relcom Russian&nbsp; &nbsp;&nbsp; &nbsp; | koi8r_general_ci&nbsp; &nbsp; |&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| latin1&nbsp; &nbsp;| cp1252 West European&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| latin1_swedish_ci&nbsp; &nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| latin2&nbsp; &nbsp;| ISO 8859-2 Central European | latin2_general_ci&nbsp; &nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| swe7&nbsp; &nbsp;&nbsp;&nbsp;| 7bit Swedish&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; | swe7_swedish_ci&nbsp; &nbsp;&nbsp;&nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| ascii&nbsp; &nbsp; | US ASCII&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| ascii_general_ci&nbsp; &nbsp; |&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| hebrew&nbsp; &nbsp;| ISO 8859-8 Hebrew&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| hebrew_general_ci&nbsp; &nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| koi8u&nbsp; &nbsp; | KOI8-U Ukrainian&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;| koi8u_general_ci&nbsp; &nbsp; |&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| greek&nbsp; &nbsp; | ISO 8859-7 Greek&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;| greek_general_ci&nbsp; &nbsp; |&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| cp1250&nbsp; &nbsp;| Windows Central European&nbsp; &nbsp; | cp1250_general_ci&nbsp; &nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| gbk&nbsp; &nbsp;&nbsp; &nbsp;| GBK Simplified Chinese&nbsp; &nbsp;&nbsp; &nbsp;| gbk_chinese_ci&nbsp; &nbsp;&nbsp; &nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;2 |<br />| latin5&nbsp; &nbsp;| ISO 8859-9 Turkish&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; | latin5_turkish_ci&nbsp; &nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| armscii8 | ARMSCII-8 Armenian&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; | armscii8_general_ci |&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| utf8&nbsp; &nbsp;&nbsp;&nbsp;| UTF-8 Unicode&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;| utf8_general_ci&nbsp; &nbsp;&nbsp;&nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;3 |<br />| cp866&nbsp; &nbsp; | DOS Russian&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| cp866_general_ci&nbsp; &nbsp; |&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| keybcs2&nbsp;&nbsp;| DOS Kamenicky Czech-Slovak&nbsp;&nbsp;| keybcs2_general_ci&nbsp;&nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| macce&nbsp; &nbsp; | Mac Central European&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| macce_general_ci&nbsp; &nbsp; |&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| macroman | Mac West European&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| macroman_general_ci |&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| cp852&nbsp; &nbsp; | DOS Central European&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| cp852_general_ci&nbsp; &nbsp; |&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| latin7&nbsp; &nbsp;| ISO 8859-13 Baltic&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; | latin7_general_ci&nbsp; &nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| cp1251&nbsp; &nbsp;| Windows Cyrillic&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;| cp1251_general_ci&nbsp; &nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| cp1256&nbsp; &nbsp;| Windows Arabic&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| cp1256_general_ci&nbsp; &nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| cp1257&nbsp; &nbsp;| Windows Baltic&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;| cp1257_general_ci&nbsp; &nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| binary&nbsp; &nbsp;| Binary pseudo charset&nbsp; &nbsp;&nbsp; &nbsp; | binary&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />| geostd8&nbsp;&nbsp;| GEOSTD8 Georgian&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;| geostd8_general_ci&nbsp;&nbsp;|&nbsp; &nbsp;&nbsp; &nbsp;1 |<br />+----------+-----------------------------+---------------------+--------+</code></div>
<span style="font-size: 10.5pt;">
<div class="blockcode">
<h5>代码:</h5>
<code id="code1">mysql&gt; set names 'gb2312';<br />ERROR 1115 (42000): Unknown character set: 'gb2312'</code></div>
</span><br /></div>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/230667#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Aug 2008 13:19:35 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/230667</link>
        <guid>http://npsajax.javaeye.com/blog/230667</guid>
      </item>
      <item>
        <title>创建用例-识别用例</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/228741" style="color:red;">http://npsajax.javaeye.com/blog/228741</a>&nbsp;
          发表时间: 2008年08月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 识别用例最好的方法就是从分析系统的参与者开始，考虑每个参与者是怎样使用系统。使用这种策略的过程中可能会找出一个新的参与者，这对完善整个系统建模很有帮助。用例建模的过程就是迭代和逐步精华的过程，系统分析师从用例的名称开始，然后开始添加用例细节信息。这些信息由初始简短描述组成，他们被精华成完整的规格说明。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在识别用例的过程中，通过以下的几个问题可以帮助识别用例</p>
<ol>
<li>特定参与者希望系统提供什么功能</li>
<li>系统是否存储和检索信息，如果是，这个行为由哪个参与者触发</li>
<li>当系统改变状态时，通知参与者么？</li>
<li>存在影响系统的外部事件么</li>
<li>是那个参与者通知系统这些事件</li>
</ol>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/228741#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 16 Aug 2008 18:24:20 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/228741</link>
        <guid>http://npsajax.javaeye.com/blog/228741</guid>
      </item>
      <item>
        <title>创建用例-寻找系统的参与者</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/228681" style="color:red;">http://npsajax.javaeye.com/blog/228681</a>&nbsp;
          发表时间: 2008年08月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在获取用例钱要先确定系统的参与者，可以根据以下的一些问题来寻找系统的参与者。</p>
<ol>
<li>谁或什么使用系统；</li>
<li>交互中，他们扮演什么角色；</li>
<li>谁安装系统；</li>
<li>谁启动和关闭系统</li>
<li>谁维护系统</li>
<li>与该系统交互的是什么系统</li>
<li>谁从系统获得信息</li>
<li>谁提供信息给系统</li>
<li>有什么事发生在固定的时间。</li>
</ol>
<p>在建模参与者过程中，记住以下要点：</p>
<ol>
<li>参与者对于系统而言总是外部的，因此他们在你的控制之外</li>
<li>参与者直接同系统交互，这可以帮助定义系统边界</li>
<li>参与者表示人和事物与系统发生交互时所扮演的角色，而不是特定的人和特定的事物</li>
<li>一个人或事物在系统发生交互时，可以同时或不同时扮演多个角色。例如，某研究生担任某教授的助教，从职业的角度看，他扮演了两个角色--学生和助教</li>
<li>每一个参与者需要有一个具有业务一样的名字，在建模中，不推荐使用诸如NewActor这样的名字</li>
<li>每个参与者必须有简短的描述，从业务角度描述参与者是什么</li>
<li>像类一样，参与者可以具有分栏，表示参与者属性和他可以接受的事件。一般情况下，这种分栏使用的并不多，很少显示在用例图中。</li>
</ol>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/228681#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 16 Aug 2008 15:02:11 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/228681</link>
        <guid>http://npsajax.javaeye.com/blog/228681</guid>
      </item>
      <item>
        <title>建立UML静态视图</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/221308" style="color:red;">http://npsajax.javaeye.com/blog/221308</a>&nbsp;
          发表时间: 2008年07月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>建立静态视图的步骤：</p>
<ol>
<li>研究分析问题领域，确定系统的需求；</li>
<li>发现对象与对象类，明确类的属性和操作；</li>
<li>发现类之间的静态联系，一般与特殊关系，部分与整体关系，研究类之间的继承性和多态性；</li>
<li>设计类与联系；</li>
<li>绘制对象类图编制相应的说明</li>
</ol>
<p>从分析问题领域来涉及对象与类是比较常规的面向对象的系统分析方法，UML采用Rational统一过程的Use Case驱动的分析方法，从业务领域得到参与者与用例，建立业务模型。</p>
<p>&nbsp;</p>
<p>问题：</p>
<ol>
<li>公司和员工之间是关联关系，还是依赖关系？</li>
<li>公司与项目之间是单向关联关系，项目关联公司？</li>
<li>项目与员工之间是双向关联关系，还是单向关联关系？</li>
</ol>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/221308#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 29 Jul 2008 22:23:44 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/221308</link>
        <guid>http://npsajax.javaeye.com/blog/221308</guid>
      </item>
      <item>
        <title>基于prototype的web验证框架</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/212271" style="color:red;">http://npsajax.javaeye.com/blog/212271</a>&nbsp;
          发表时间: 2008年07月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>prototype.js是所有的基础<br />validation.js真正的验证框架文件,badqiu在原来的基础上增加了许多不错的功能<br />1:引用js文件 </p>
<div class="blockcode"><code id="code0">&lt;script&gt;"prototype.js" <br />type="text/javascript"&gt;<br />&lt;/script&gt;&nbsp; &nbsp;<br />&lt;script&gt;"validation.js" <br />type="text/javascript"&gt;<br />&lt;/script&gt; </code><br /></div>
<p>2:引用css文件<br />可以参加style_min.css中的样式声明,也可以把style_min.css中的样式声明引入到你的框架js文件中去.<br />3:hellow world<br />在badqiu的扩展中如果要是某个form中的元素被验证可以这样给声明的form中加一个class='required-validate'的属性,框架会在load是自动绑定<br />所有要验证的域.&nbsp; &nbsp; <br />xml 代码 </p>
<div class="blockcode"><code id="code1">&lt;!-- 为form增加required-validate class,标识需要验证form --&gt;&nbsp; &nbsp;<br />&nbsp; &nbsp; &lt;form id='helloworld' action="#" class='required-validate'&gt;&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;helloworld:&lt;!--&lt;/span--&gt;br&gt;&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;!--通过class添加验证: required表示不能为空,min-length-15表示最小长度为15 --&gt;&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;textarea name='content' class='required min-length-2'&gt;&lt;!--&lt;/span--&gt;textarea&gt;&lt;!--&lt;/span--&gt;br&gt;&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;input type='submit' value='Submit'/&gt;&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;input type='reset' value='Reset'/&gt;&nbsp; &nbsp;<br />&lt;!--&lt;/span--&gt;form&gt;&nbsp; &nbsp;</code><br /></div>
<p>在要检查的域中通过class属性来声明被检查域的限制条件,例如上面的class='required min-length-2'表示这是一个非空,并且最小长度是2的域,<br />在编辑域失去焦点时,会自动检查,如果输入不满足上述条件,则产生错误提示.<br />4:检查规则说明</p>
<ul>
<br />
<li>required -- 非空域 <br /></li>
<li>validate-number -- 一个有效数 <br /></li>
<li>validate-digits -- 只能包含[0-9]任意个数字 <br /></li>
<li>validate-alpha -- 只能是字母[a-zA-Z] <br /></li>
<li>validate-alphanum -- 只能是字母和数字的组合 <br /></li>
<li>validate-date -- 只能是日期 <br /></li>
<li>validate-email -- 只能是有效的email <br /></li>
<li>validate-url -- 只能是有效的url地址 <br /></li>
<li>validate-date-au -- 日期的形式必须是dd/mm/yyyy <br /></li>
<li>validate-one-required -- 至少有一个被选中,例如一组checkbox, radiobutton,它们最好包含在一个div和span中 <br /></li>
<li>validate-date-cn -- 日期的形式必须是yyyy/mm/dd <br /></li>
<li>validate-integer -- 只能是整数,可以有正负号 <br /></li>
<li>validate-chinese -- 只能是中文 <br /></li>
<li>validate-ip -- 有效的IP地址 <br /></li>
<li>validate-phone -- 有效的电话(仅适用于中国) <br /></li>
<li>validate-mobile-phone -- 有效的手机号,在badqiu的版本中只验证了135的,有待改进 <br /></li>
<li>validate-equals-$otherInputId -- 必须和某个input field相等例如 validate-equals-otherInputId(此处$some表示一个特定的值) <br /></li>
<li>less-than-$otherInputId -- 小于某个input field less-than-otherInputId(此处$some表示一个特定的值) <br /></li>
<li>great-than-$otherInputId -- 大于某个input field less-than-otherInputId(此处$some表示一个特定的值) <br /></li>
<li>min-length-$number -- 最小长度是$number(此处$some表示一个特定的值) <br /></li>
<li>max-length-$number -- 最大长度是$number(此处$some表示一个特定的值) <br /></li>
<li>validate-file-$type1-$type2-$typeX -- file的input必须是声明的$type1 -- $typeX中的一种 <br /></li>
<li>validate-float-range-$minValue-$maxValue -- 必须是$minValue到$maxValue的一个浮点数 <br /></li>
<li>validate-int-range-$minValue-$maxValue -- 必须是$minValue到$maxValue的一个整数 <br /></li>
<li>validate-length-range-$minLength-$maxLength -- 输入字符串的长度必须在$minLength到$maxLength之间 <br /></li>
<li>max-value-$number -- 输入域的最大值是$number <br /></li>
<li>min-value-$number -- 输入域的最小值是$number <br /></li>
<li>validate-pattern-$patternAttributes -- 通过自定义pattern来验证输入域的正确性 <br /></li>
<li>validate-ajax -- 通过ajax来验证输入域<br /></li>
</ul>
<p>5:Validation的选项说明<br />可以手工指定要验证那个form,在指定是可以给定一些选项<br />js 代码 </p>
<div class="blockcode"><code id="code2">&lt;script&gt;"text/javascript"&gt;&nbsp; &nbsp;<br />&nbsp; &nbsp; var valid = new Validation('form-id', {onSubmit:false});&nbsp; &nbsp;<br />&nbsp; &nbsp; var result = valid.validate();&nbsp; &nbsp;<br />&lt;/script&gt; </code><br /></div>
<p>创建Valuedation是的参数说明</p>
<ul>
<br />
<li>onSubmit -- 是否绑定onSubmit函数, default - true<br /></li>
<li>stopOnFirst -- 是否在检查到第一个错误时就停止检查 default- false<br /></li>
<li>immediate -- 是否在被检测域失去焦点时就检查被检查域 default - false<br /></li>
<li>focusOnError -- 是否把焦点移动到发生错误的域上 default - true<br /></li>
<li>useTitles -- 是否使用提示 default - false<br /></li>
<li>onFormValidate:当form被检测和的回调函数,有两个输入参数 arg[0]-检测form的结果true or false, arg[1]-form本身的id<br /></li>
<li>onElementValidate:当没个element被检查后的回调函数,有两个输入参数 arg[0]-检测form的结果true or false, arg[1]-element本身的id<br /></li>
</ul>
<p><br />6:添加自己的测试函数 </p>
<div class="blockcode"><code id="code3">Validation.add('class-name', 'Error message text', function(value [, element]) {&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp;&nbsp;return /* do validation here */&nbsp; &nbsp;<br />});&nbsp;&nbsp;</code><br /></div>
<p>或者这样 </p>
<div class="blockcode"><code id="code4">Validation.addAllThese([&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp;&nbsp;['required', 'This is a required field.', function(v) {&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp; &nbsp; return !Validation.get('IsEmpty').test(v);&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp;&nbsp;}],&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp;&nbsp;['validate-number', 'Please use numbers only in this field.', function(v) {&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp; &nbsp; return Validation.get('IsEmpty').test(v) || !isNaN(v);&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp;&nbsp;}],&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp;&nbsp;['validate-digits', 'Please use numbers only in this field.', function(v) {&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp; &nbsp; return Validation.get('IsEmpty').test(v) ||&nbsp;&nbsp;!/[^\d]/.test(v);&nbsp; &nbsp;<br />&nbsp; &nbsp;&nbsp;&nbsp;}]&nbsp; &nbsp;<br />]); </code></div>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/212271#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 07 Jul 2008 11:42:11 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/212271</link>
        <guid>http://npsajax.javaeye.com/blog/212271</guid>
      </item>
      <item>
        <title>知識產權中涉及的Copyright及©標識是什么意思</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/211529" style="color:red;">http://npsajax.javaeye.com/blog/211529</a>&nbsp;
          发表时间: 2008年07月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>相信大家都曾在電影、電視劇、文章、軟件、網站等地方看到了Copyright及&copy;標識，那Copyright及&copy;標識到底事什么意思呢？<br />&nbsp; &nbsp; &nbsp;下面就舉微軟的例子。像微軟在其Windows XP產品中就有 &nbsp;Copyright&copy; 1985-2001 Microsoft Corp. 的版權聲明。<br />&nbsp; &nbsp; &nbsp;意思是<a name="entrymore"></a>1998指版權開始年份，2001指此最新作品的發佈年份。1985並不是微軟創辦發佈軟件的時間，微軟是1975年成立的。1985是Windows第一個版本1.0的發佈年份。2001年是Windows XP發佈的時間。準確的說，這一版權聲明是對Windows而言，而不是單對Windows XP而言的。告訴你Windows是從1985年走到了2001年。<br />&nbsp; &nbsp; &nbsp;版權，著作權的意思。有此單詞表明該文件、網頁的作者聲明保留版權，使用有此標誌的文件要注意，可能造成侵權。<br />&nbsp; &nbsp; &nbsp;由來： <br />最初是用於保護出版物（包括印刷品、音像製品等）的知識產權，後來引申擴展到互聯網領域，源於世界版權公約的規定。 <br /><br />世界版權公約 <br /><br />1952年9月在日內瓦召開的各國政府代表會議上通過,1955年生效。旨在協調《伯爾尼公約》與《泛美公約》成員國間在版權保護方面的關係,建立各成員國均能接受的國際版權保護制度。公約對版權保護對像、保護範圍、取得保護的條件、保留及解決爭端、執行機構,以及關於翻譯、複印他人作品等問題,作了具體規定。其主要部分是關於C的條款之規定,即各締約國出版的作品只要在該作品的版權頁內標有版權符號&copy;、作者姓名和出版日期,就承認其著作權、並受其他締約國的版權保護。該公約與《伯爾尼公約》都承認雙國籍國民待通原則,並對版權所有人應享有的權利作了類似的規定。兩者主要區別是: <br />(1)前者規定受保護主體包括「作者和其他版權所有人",而後者規定只能是作者本人。 <br />(2)保護期限,前者規定為死後25年;後者為死後50年。 <br />(3)作品保護內容和範圍,前者只作原則性規定;後者具體規定了受保護作品的種類,並包括精神權利。 <br />(4)取得保護的條件,前者規定必須在出版的作品上註明版權符號C;後者實行自動產生版權原則。 <br />(5)版權保護的追溯力,前者對此未加規定;後者規定對締約國過去、現在和將來的版權均給予保護。該公約由聯合國教科文組織管理。1971年7月在巴黎作補充修訂。截至1982年1月,共有74個國家參加該公約。 <br />我國於1992年7月30日正式加入該公約。 <br /><br />按照著作權標記主義，作品創作即產生著作權，但該作品發表，必須載有一定標記，才能保持著作權，否則，該作品喪失著作權，進入公有領域。如美國版權法第401條（a）規定，受本法保護的作品由版權所有者授權在美國或其它地方出版時，均應在一切公開發行的，由此可直接或借助於機器或設備在視覺上可感受到該作品的所有複製件上載有一個本條規定的版權標記。版權標記包括三項內容:(一)標有版權符號。在出版的文字等作品上標有(c)記,或者「Copyright」字樣或者版權的縮寫詞「COPR」。在公開發行的錄音製品上標有p記，「p」是錄音製品Phonogram的縮略字母。（二）註明作品首次發表的年分。（三）註明作品版權所有者的姓名，或可識別其姓名的縮寫詞，或眾所周知的版權所有者的別名。版權標記應在作品適當的位置上加注。掩模作品標記由符號* M *或M,和掩模作品所有人的姓名或可資識別該姓名的縮寫兩部分組成。<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; 大家在瀏覽我制作的網站，只要留意網頁最底部都能看到我的版權聲明，如 www.lilujun.com 就寫明 Copyrightc&copy;1999-2007 李璐君 &nbsp;lilujun.com All Rights Reserved. 意思是www.lilujun.com是1999年建立的，最近更新時間于2007年，所有版權保留。在看本博客的很多文章，特別是技術文章，我會相應的再重申保留所有版權和權利。<br /><br />注意：本文版權歸小李書屋www.lilujun.com所有，受《伯爾尼公約》、《世界版權公約》和《保護表演者、音像製品製作者和廣播組織羅馬公約》保護。任何形式的複製、轉載、修改和鏡像，必須得到小李書屋www.lilujun.com的許可。其文章一旦非法在它處出現和非法在它處出現後被搜索引擎收錄等情況，小李書屋www.lilujun.com將依照《伯爾尼公約》、《世界版權公約》和《保護表演者、音像製品製作者和廣播組織羅馬公約》追究相關責任人的責任。<br />Copyright&copy;1999-2007 www.lilujun.com 小李書屋 All Rights Reserved. </p>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/211529#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 04 Jul 2008 13:51:39 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/211529</link>
        <guid>http://npsajax.javaeye.com/blog/211529</guid>
      </item>
      <item>
        <title>XMLHttpRequest中url的长度限制的解决方法</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/200051" style="color:red;">http://npsajax.javaeye.com/blog/200051</a>&nbsp;
          发表时间: 2008年06月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在原来的处理过程中，把ajax请求的url连请求的参数，都合成一个url，发送给后台，但是当请求的参数数据量大的时候，就出现了问题。因为URL有长度限制。</p>
<p>&nbsp;</p>
<p>解决方式：POST的URL有长度限制&nbsp;， 但是数据没有... 所以你应该在send()里面发送你的数据。</p>
<p>&nbsp;</p>
<p>相关的说明</p>
<p>=======================================================================</p>
<ol>
<li>
<div class="postTitle"><a href="http://www.cnblogs.com/xiaotaomaomao/articles/986070.html" class="postTitle2" id="AjaxHolder_ctl01_TitleUrl">get,post数据长度的限制</a> </div>
</li>
</ol>
<p><span style="font-family: Courier New;">这个问题在我的开发中也遇到，所以在此贴出来(也是在网上搜出来的，呵呵)<br />这是原贴地址http://blog.csdn.net/somat/archive/2004/10/29/158707.aspx<br />两个长度限制问题的分析(来源于项目) <br />一、问题起因<br />在某项目释放后Bug统计的附件《释放后问题》里有：&nbsp;&nbsp; <br />问题&nbsp; 原因&nbsp; 分析&nbsp; 备注&nbsp; <br />CSV处理时，如果处理的主题数过多，发生URL参数上限的错误；&nbsp; 可变长度的参数通过URL方式传递，会造成这种潜在的错误发生。&nbsp; 1、属于2次发生问题，开发方面没有及时通过checklist等方式向组员传达相关注意事项；<br />2、测试时没有作大批量数据的测试；&nbsp; 1、作为经验添加至CheckList中，加强组内共享、检查的效果；<br />2、加强测试点是否完备的检查，重点关注对开发方面共性问题的测试；&nbsp; <br />通过对模块原有GUI状况确认，进行CSV输出时，输出结果很大的场合，CSV文件的内容不能输出。&nbsp; 没有考虑到POST数据量存在128K的大小限制。&nbsp; 这属于新问题，以前从未遇见过，也没有进行过大规模的数据量测试&nbsp; 已将此类检查列出CheckList中&nbsp; </span></p>
<p><span style="font-family: Courier New;">做为一种经验积累，这些问题、原因及解决办法将被列入Checklist，那么：<br />第一个问题：URL参数上限的提法准确吗？上限是多少？<br />第二个问题：为什么POST时数据有限制？限制是128K吗？&nbsp; <br />二、问题分析<br />1、第一个： <br />1）URL不存在参数上限的说法。该问题实际是IE对URL有长度限制的问题。 <br />2）HTTP协议规范也没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器，如Netscape、FireFox等，理论上没有长度限制，其限制取决于操作系统的支持。[参1]<br />3）&ldquo;可变长度的参数通过URL方式传递&rdquo;实际是说提交表单时使用了GET方法，而不是POST方法。造成这种潜在错误的是使用GET方法提交表单数据。因为GET方法将数据放在URL里传递给服务器处理。<br />4）注意这个限制是整个URL长度，而不仅仅是你的参数值数据长度。<br />5）既然是IE对URL长度的限制，那么不管是GET方法还是POST方法都存在这个限制。<br />(关于FORM的GET和POST方法具体内容请参考相关资料[参2])&nbsp; <br />建议： <br />1）了解应用程序所在的环境，如Web应用的浏览器、服务器环境，了解其特定的参数限制情况。<br />2）提交复杂数据尽量使用POST方法。注意FORM不写method属性时默认是使用GET方法。<br />结论(写入Checklist)：<br />对使用GET方法提交数据时，在IE环境下，需要考虑URL长度2083字节的限制。 <br />2、第二个： <br />1）理论上讲，POST是没有大小限制的。HTTP协议规范也没有进行大小限制。<br />2）&ldquo;POST数据量存在128K的大小限制&rdquo;不够准确，POST数据是没有限制的，起限制作用的是服务器的处理程序的处理能力。<br />3）对于ASP程序，Request对象处理每个表单域时存在100K的数据长度限制。但如果使用Request.BinaryRead则没有这个限制。对于需要处理超过100K表单域数据的解决办法，请参考后面的[参3]。<br />4）由这个延伸出去，对于IIS 6.0，微软出于安全考虑，加大了限制[参4]。我们还需要注意：<br />&nbsp;&nbsp;&nbsp; IIS 6.0默认ASP POST数据量最大为200KB，每个表单域限制是100KB。<br />&nbsp;&nbsp;&nbsp; IIS 6.0默认上传文件的最大大小是4MB。<br />&nbsp;&nbsp;&nbsp; IIS 6.0默认最大请求头是16KB。<br />&nbsp;&nbsp;&nbsp; IIS 6.0之前没有这些限制。<br />建议： <br />1）弄清楚运行环境的默认设定值有助于你的设计及对出现的问题做快速的解决。 <br />2）应该考虑服务器版本。各个版本的IIS对这些参数的默认设定都不一样，有必要的话，找资料整理出一份对照表。这样开发与测试时都有个参考。<br />3）IIS 6.0的这些限制实际只是它的默认设定值而已，实际应用环境你可以修改它们。 <br />&nbsp;&nbsp;&nbsp; 在WINNT\system32\inetsrv\MetaBase.xml里默认定义了：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AspBufferingLimit="4194304"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对应于上传文件最大大小<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AspMaxRequestEntityAllowed="204800"&nbsp;&nbsp;&nbsp; 对应于POST最大数据量 <br />结论(写入Checklist)：<br />使用ASP时，需要考虑POST表单每个域一般读取处理时有100KB的限制。充分考虑是否使用Request.Binary</span></p>
<p>&nbsp;</p>
<p><span style="font-family: Courier New;">==========================================================================================</span></p>
<p><span style="font-family: Courier New;">
<div class="titlebox">
<div class="title"><span style="font-size: 18px; line-height: 46px;">WWW FAQs: What is the maximum length of a URL?</span></div>
</div>
<div class="content"><!--BCOM-BODY-BEGIN--><br /><span id="KonaBody">2006-10-13: Although the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html">specification</a> of the <a href="http://npsajax.javaeye.com/admin/definitions/http.html">HTTP protocol</a> does not specify any maximum length, practical limits are imposed by web browser and server software.
<h4>Microsoft Internet Explorer (Browser)</h4>
<a href="http://support.microsoft.com/kb/q208427/">Microsoft states</a> that the maximum length of a URL in Internet Explorer is 2,083 characters, with no more than 2,048 characters in the path portion of the <a href="http://npsajax.javaeye.com/admin/definitions/url.html">URL</a>. In my tests, attempts to use URLs longer than this produced a clear error message in Internet Explorer.
<h4>Firefox (Browser)</h4>
After 65,536 characters, the location bar no longer displays the URL in Windows Firefox 1.5.x. However, longer URLs will work. I stopped testing after 100,000 characters.
<h4>Safari (Browser)</h4>
At least 80,000 characters will work. I stopped testing after 80,000 characters.
<h4>Opera (Browser)</h4>
At least 190,000 characters will work. I stopped testing after 190,000 characters. Opera 9 for Windows continued to display a fully editable, copyable and pasteable URL in the location bar even at 190,000 characters.
<h4>Apache (Server)</h4>
My early attempts to measure the maximum URL length in web browsers bumped into a server URL length limit of approximately 4,000 characters, after which Apache produces a "413 Entity Too Large" error. I used the current up to date Apache build found in Red Hat Enterprise Linux 4. The official Apache documentation only mentions an 8,192-byte limit on an individual field in a request.
<h4>Microsoft Internet Information Server</h4>
The default limit is 16,384 characters (yes, Microsoft's web server accepts longer URLs than Microsoft's web browser). This is configurable.
<h4>Perl HTTP::Daemon (Server)</h4>
Up to 8,000 bytes will work. Those constructing web application servers with Perl's HTTP::Daemon module will encounter a 16,384 byte limit on the combined size of all HTTP request headers. This does <em>not</em> include POST-method form data, file uploads, etc., but it does include the URL. In practice this resulted in a 413 error when a URL was significantly longer than 8,000 characters. This limitation can be easily removed. Look for all occurrences of <tt>16x1024</tt> in <tt>Daemon.pm</tt> and replace them with a larger value. Of course, this does increase your exposure to denial of service attacks.
<h4>Recommendations</h4>
Extremely long URLs are usually a mistake. URLs over 2,000 characters will not work in the most popular web browser. Don't use them if you intend your site to work for the majority of Internet users.
<p>When you wish to submit a form containing many fields, which would otherwise produce a very long URL, the standard solution is to use the POST method rather than the GET method: </p>
<pre>&lt;form action="myscript.php" method="POST"&gt;
...
&lt;/form&gt;
</pre>
The form fields are then transmitted as part of the HTTP transaction header, not as part of the URL, and are not subject to the URL length limit. Short-lived information should not be stored in URLs.
<p>As a rule of thumb, if a piece of information isn't needed to regenerate the same page as a result of returning to a favorite or bookmark, then it doesn't belong in the URL. </p>
<h4>The Bookmark Problem</h4>
In very rare cases, it may be useful to keep a large amount of "state" information in a URL. For instance, users of a map-navigating website might wish to add the currently displayed map to their "bookmarks" or "favorites" list and return later. If you must do this and your URLs are approaching 2,000 characters in length, keep your representation of the information as compact as you can, squeezing out as much "air" as possible. If your field names take up too much space, use a fixed field order instead. Squeeze out any field that doesn't really need to be bookmarked. And avoid large decimal numbers - use only as much accuracy as you must, and consider a base-64 representation using letters and digits (I didn't say this was easy).
<p>In extreme cases, consider using the <a href="http://www.gzip.org/">gzip</a> algorithm to compress your pretty but excessively long URL. Then reencode that binary data in base64 using only characters that are legal in URLs. This can yield a 3-4x space gain, at the cost of some CPU time when you unzip the URL again on the next visit. Again, I never said it was easy! </p>
<p>An alternative is to store the state information in a file or a database. Then you can store only the identifier needed to look up that information again in the URL. The disadvantage here is that you will have many state files or database records. Some of which might be linked to on websites run by others. One solution to this problem is to delete the state files or database records for the URLs that have not been revisited after a certain amount of time. </p>
<div class="inote"><strong>"What happens if the URL is too long for the server?"</strong>
<p>What exactly happens if a browser that supports very long URLs (such as Firefox) submits a long URL to a web server that does not support very long URLs (such as a standard build of Apache)? </p>
<p>The answer: nothing dramatic. Apache responds with a "413 Entity Too Large" error, and the request fails. </p>
<p>This response is preferable to cutting the URL short, because the results of cutting the URL short are unpredictable. What would that mean to the web application? It varies. So it's better for the request to fail. </p>
<p>In the bad old days, some web servers and web browsers failed to truncate or ignore long URLs, resulting in dangerous "buffer overflow" situations. These could be used to insert executable code where it didn't belong... resulting in a security hole that could be exploited to do bad things. </p>
<p>These days, the major browsers and servers are secure against such obvious attacks - although more subtle security flaws are often discovered (and, usually, promptly fixed). </p>
<p>While it's true that modern servers are themselves well-secured against long URLs, there are still badly written CGI programs out there. Those who write CGI programs in C and other low-level languages must take responsibility for paying close attention to potential buffer overflows. The <a href="http://npsajax.javaeye.com/cgic/">CGIC library</a> can help with this. </p>
<p>In any case, if you're a web developer and you're still asking this question, then you probably haven't paid attention to my advice about how to avoid the problem completely. </p>
</div>
</span></div>
<p>&nbsp;</p>
</span></p>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/200051#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 04 Jun 2008 12:37:54 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/200051</link>
        <guid>http://npsajax.javaeye.com/blog/200051</guid>
      </item>
      <item>
        <title>Who is the Mailer-Daemon?</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/195505" style="color:red;">http://npsajax.javaeye.com/blog/195505</a>&nbsp;
          发表时间: 2008年05月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>Who is the Mailer-Daemon?</strong> <br /></p>
<p>No need to call an exorcist if you get an email from the <strong>Mailer-Daemon</strong>; this is just a message from the email server itself.&nbsp; Usually you only hear from the email server when it has trouble delivering an email you sent. </p>
<p>A <strong>daemon</strong> is a program that works behind the scenes on a server, doing useful things. </p>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/195505#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 22 May 2008 09:37:02 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/195505</link>
        <guid>http://npsajax.javaeye.com/blog/195505</guid>
      </item>
      <item>
        <title>Eclipse 使用手册</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/192816" style="color:red;">http://npsajax.javaeye.com/blog/192816</a>&nbsp;
          发表时间: 2008年05月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <ol>
<li>怎么改变eclipse 中代码字体大小,就是我打进去的java文件的字体大小</li>
</ol>
<p>wiondow--preferences--general--appearance--colors and fonts--java--java editor text font <br /><br />然后点change,在弹出的框里选字号，然后确定就可以了</p>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/192816#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 May 2008 09:10:59 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/192816</link>
        <guid>http://npsajax.javaeye.com/blog/192816</guid>
      </item>
      <item>
        <title>IT规划:数据架构是核心</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/185215" style="color:red;">http://npsajax.javaeye.com/blog/185215</a>&nbsp;
          发表时间: 2008年04月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>企事业IT架构是由数据架构、应用架构和技术架构共同构成。其中，数据架构是企事业IT架构的核心，因为信息系统支撑下的企事业业务运作状况，是通过信息系统中的数据反映出来的，数据信息系统管理的重要资源。因此构建企事业IT架构时，首先要考虑数据架构对当前业务的支持。理想的企事业IT架构规划逻辑是数据驱动的，即：首先根据业务架构分析定义数据架构；然后根据数据架构结合业务功能定义应用架构；最后根据数据架构与数据架构的定义，来设计技术架构。</p>
<p>数据架构规划主要有三部分内容，如图：数据定义、数据分布与数据管理。数据定义，即数据模型，包括：数据概念模型、数据逻辑模型、数据物理模型，以及更细化的数据标准；数据分布，包括：数据业务分布与数据系统分布。</p>
<p><a href="http://www.javaeye.com/upload/attachment/21324/c9244465-d2a0-3b6c-842c-5855ad5d62fb-"><img src="http://www.javaeye.com/upload/attachment/21324/c9244465-d2a0-3b6c-842c-5855ad5d62fb-" alt="" /></a></p>
<p>数据定义是数据架构规划中最重要内容，定义良好的数据模型可以反映业务模式的本质，确保数据架构为业务需求提供全面、一致、完整的高质量数据，且为划分应用系统边界，明确数据引用关系，定义应用系统间的集成接口，提供分析依据。良好的数据建模与数据标准的制定才是实现数据共享、保证一致性、完整性与准确性的基础，有了这一基础，企事业单位才能通过信息系统应用逐步深入，最终实现基于数据的管理决策。</p>
<p>数据分布，一方面是分析数据的业务，即分析数据在业务各环节的创建、引用、修改或删除的关系；另一方面是分析数据在单一应用系统中的数据结构与应用系统各功能模块间的引用关系，分析数据在多个系统间的引用关系，数据业务分布是数据系统分布的基础。对于一个拥有众多分支机构的大型企事业，数据存放模式也是数据分布中一项重要内容。从地域的角度看，数据分布有数据集中存放和数据分布存放两种模式。数据集中存放是指数据集中存放于企事业总部数据中心，其分支机构不放置和维护数据；数据分布式存放是指数据分布存放于企事业总部和分支机构，分支机构需要维护管理本分支机构的数据。这两种数据分布模式各有其优缺点，企事业应综合考虑自身需求，确定自己的数据分布策略。</p>
<p>要做好数据管理，首先要制定贯穿企事业数据生命周期的各项管理制度，包括：数据模型与数据标准管理，数据分布管理，数据质量管理，数据安全管理等制度；另一方面应该确定数据管理组织或岗位。</p>
<p>数据架构规划是进行企事业IT架构规划或完整IT规划不能绕开的重要环节，对于完全通过定制化开发进行应用系统实施的企事业单位来说，数据架构设计是完全可以指导应用系统开发的，数据架构的规划工作无疑是有意义的。但大多数企事业单位是采用&ldquo;引进与管理&rdquo;信息化实施策略。对于这些已经引入或正准备引入ERP、CRM、PDM等大型成熟软件包的企事业来说，因为软件包中的数据结构，以及数据在不同模块间的引用关系是相对固化的，不能随意改动的；那么，对于这种情况，企事业进行IT架构规划时是不是就可以绕开数据架构规划了呢？</p>
<p>回答这个问题，我们首先要想一想数据架构规划的目的。笔者认为进行数据架构规划的目的有三个：一是分析业务运作模式的本质，为未来核心应用系统的确定以及分析不同应用系统间的集成关系提供依据；二是通过分析核心数据与业务之间的应用关系，分析规划应用系统间的集成关系；三是数据管理的需要，明确企事业的核心业务数据，这些数据是应用系统实施与运行时IT系统实施人员或管理人员应该重点关注的，要时时考虑保证这些数据在整个企事业层面的一致性、完整性与准确性。</p>
<p>无论ERP、CRM、PDM系统覆盖的业务领域有多广，它们总是不能覆盖所有业务，这就说明这些系统中在实施时，其中的数据定义仍然可能是从企事业局部业务环节来考虑的，所以站在整个企事业层面的数据架构规划还是必要的。但是，在具体的规划操作上，会与完全通过定制化开发应用系统情况不同。对于定制化开发，一般来说有两种方式建立数据模型：一是从头做起，第二种方式是利用已有的行业模型为基础，结合企事业自己的业务实际进行设计。但对于引入大型成熟软件包的情况，我们在做数据建模时，更多的是站在企事业单位整体的角度，把关注点放在数把概念模型与逻辑模型的分析上，尤其要关注跨所有系统，并在所有系统中都要保持一致的主数据的定义，同时分析清这些主数据在各业务环节的分布关系，以此定义在不同应用系统中的引用关系。保证主数据在不同应用系统中的一致、准确与完整是保证所有数据一致、准确与完整的基础。因为，那些业务交易数据是基于主数据产生的，并且可以在业务操作的环节及时校验的。</p>
<p>总之，无论什么情况，数据架构规划都不能绕开，没有进行数据架构规划分析的IT架构规划或IT规划是不能让人信服的。 <br /><br />来源：CIO时代</p>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/185215#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Apr 2008 23:46:24 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/185215</link>
        <guid>http://npsajax.javaeye.com/blog/185215</guid>
      </item>
      <item>
        <title>澄清Java语言接口与继承的本质</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/181941" style="color:red;">http://npsajax.javaeye.com/blog/181941</a>&nbsp;
          发表时间: 2008年04月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <table cellspacing="0" border="0" width="95%" cellpadding="0">
<tbody>
<tr>
<td width="100%">
<p>转载自：<a href="http://www.csdn.net/"><span style="color: #336699;">www.csdn.net</span></a></p>
</td>
</tr>
</tbody>
</table>
<p>大多数人认为，接口的意义在于顶替多重继承。众所周知Java没有c++那样多重继承的机制，但是却能够实作多个接口。其实这样做是很牵强的，接口和继承是完全不同的东西，接口没有能力代替多重继承，也没有这个义务。接口的作用，一言以蔽之，就是标志类的类别（type of class）。把不同类型的类归于不同的接口，可以更好的管理他们。OO的精髓，我以为，是对对象的抽象，最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言（比如c++、java、c#等），就是因为设计模式所研究的，实际上就是如何合理的去抽象。（cowboy的名言是&ldquo;抽象就是抽去像的部分&rdquo;，看似调侃，实乃至理）。</p>
<p>&nbsp;</p>
<p>设计模式中最基础的是工厂模式（Factory），在我最近的一个很简单的应用中，我想尽量的让我的程序能够在多个数据库间移植，当然，这涉及很多问题，单是如何兼容不同DBMS的SQL就让人头痛。我们不妨先把问题简单化，只考虑如何连接不同的数据库。</p>
<p>　　假设我有很多个类，分别是Mysql.java、SQLServer.java、Oracle.java、DB2.java，他们分别连接不同的数据库，统一返回一个Connection对象，并且都有一个close方法，用于关闭连接。只需要针对你的DBMS，选择不同的类，就可以用了，但是我的用户他会使用什么数据库？我不知道，我希望的是尽量少的修改代码，就能满足他的需要。我可以抽象如下接口：</p>
<p>package org.bromon.test;<br />public interface DB<br />{<br />　　java.sql.Connection openDB(String url,String user,String password);<br />　　void close();<br />} </p>
<p>　　这个接口只定义两个方法，没有任何有实际意义的代码，具体的代码由实作这个接口的类来给出，比如Mysql.java：</p>
<p>Package org.bromon.test;<br />import java.sql.*;<br />public class Mysql implements DB<br />{<br />　　private String url=&rdquo;jdbc:mysql:localhost:3306/test&rdquo;;<br />　　private String user=&rdquo;root&rdquo;;<br />　　private String password=&rdquo;&rdquo;;<br />　　private Connection conn;<br />　　public Connection openDB(url,user,password)<br />　　{<br />　　　　//连接数据库的代码<br />　　}</p>
<p>　　public void close()<br />　　{<br />　　　　//关闭数据库<br />　　}<br />} </p>
<p>　　类似的当然还有Oracle.java等等，接口DB给这些类归了个类，在应用程序中我们这样定义对象：</p>
<p>　　org.bromon.test.DB myDB;</p>
<p>　　使用myDB来操作数据库，就可以不用管实际上我所使用的是哪个类，这就是所谓的&ldquo;开-闭&rdquo;原则。但是问题在于接口是不能实例化的，myDB=new DB()，这样的代码是绝对错误的，我们只能myDB=new Mysql()或者myDB=new Oracle()。麻烦了，我还是需要指定具体实例化的是哪个类，用了接口跟没用一样。所以我们需要一个工厂：</p>
<p>package org.bromon.test;<br />public class DBFactory<br />{<br />　　public static DB Connection getConn()<br />　　{<br />　　　　Return(new Mysql());<br />　　}<br />} </p>
<p>　　所以实例化的代码变成：myDB=DBFactory.getConn()；</p>
<p>　　这就是23种模式中最基础的普通工厂(Factory)，工厂类负责具体实例化哪个类，而其他的程序逻辑都是针对DB这个接口进行操作，这就是&ldquo;针对接口编程&rdquo;。责任都被推卸给工厂类了，当然你也可以继续定义工厂接口，继续把责任上抛，这就演变成抽象工厂(Abstract Factory)。</p>
<p>　　整个过程中接口不负责任何具体操作，其他的程序要连接数据库的话，只需要构造一个DB对象就OK，而不管工厂类如何变化。这就是接口的意义----抽象。</p>
<p>　　继承的概念不用多说，很好理解。为什么要继承呢？因为你想重用代码？这绝对不是理由，继承的意义也在于抽象，而不是代码重用。如果对象A有一个run()方法，对象B也想有这个方法，所以有人就Class B extends A。这是不经大脑的做法。如果在B中实例化一个A，调用A的Run()方法，是不是可以达到同样的目的？如下：</p>
<p>Class B<br />{<br />　　A a=new A();<br />　　a.run();<br />} </p>
<p>　　这就是利用类的聚合来重用代码，是委派模式的雏形，是GoF一贯倡导的做法。</p>
<p>　　那么继承的意义何在？其实这是历史原因造成的，最开始的OO语言只有继承，没有接口，所以只能以继承来实现抽象，请一定注意，继承的本意在于抽象，而非代码重用（虽然继承也有这个作用），这是很多Java烂书最严重的错误之一，它们所造成的阴影，我至今还没有完全摆脱，坏书害人啊，尤其是入门类的，流毒太大。什么时候应该使用继承？只在抽象类中使用，其他情况下尽量不使用。抽象类也是不能实例化的，它仅仅提供一个模版而已，这就很能说明问题。</p>
<p>　　软件开发的万恶之源，一是重复代码而不是重用代码，二是烂用继承，尤以c++程序员为甚。Java中取缔多重继承，目的就是制止烂用继承，实是非常明智的做法，不过很多人都不理解。Java能够更好的体现设计，这是让我入迷的原因之一。</p>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/181941#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 11 Apr 2008 20:53:15 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/181941</link>
        <guid>http://npsajax.javaeye.com/blog/181941</guid>
      </item>
      <item>
        <title>使用JMF开发一个播放器</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/181940" style="color:red;">http://npsajax.javaeye.com/blog/181940</a>&nbsp;
          发表时间: 2008年04月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>1。基本功能已经实现，能播放，暂停，停止<br />2。只能播放以下格式：AIFF,AU,AVI,GSM,MIDI,\nMPEG,QuickTime,RMF,WAV<br />3。多语言支持</p>
<p>&times;&times;&times;&times;&times;&times;未完成功能&times;&times;&times;&times;&times;&times;&times;</p>
<p>4。多皮肤支持<br />5。更多格式支持</p>
<p><br />**************开发日志*******************</p>
<p>20050505：多语言功能已经实现，现在正在构想皮肤(界面）的问题，它应该是一个什么样的结构，欢迎讨论！</p>
<p><a href="http://npsajax.xinwen365.com/MyMediaPlayer/">文件下载</a></p>
<p>这是一个我上学时候写的一个程序。最近整理东西的时候找到它了。</p>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/181940#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 11 Apr 2008 20:50:36 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/181940</link>
        <guid>http://npsajax.javaeye.com/blog/181940</guid>
      </item>
      <item>
        <title>(转)制作更酷的JList界面</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/181939" style="color:red;">http://npsajax.javaeye.com/blog/181939</a>&nbsp;
          发表时间: 2008年04月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>一、绘制器的工作原理<br />不管是JList还是JComboBox，它们都用到了ListCellRenderer,因为JComboBox本身就是由一个下拉式的JList和TextField组成的. 在这里，它们使用了callback的机制。</p>
<p>callback的一是种常见的方式是在A类中调用B类中的方法，在A类中先要登记一个(也可以是多个)B类的实例引用，在需要调用时再通过该实例来调用它的内部方法.这样的机制在很多的设计模式中都有用到，如Observer等.还有AWT的事件机制也用到了callback. </p>
<p>要实现callback，通常将B类设计成一个能被callback的接口.在JList的绘制器中，swing提供了一个ListCellRenderer接口，<br />public interface ListCellRenderer {<br />&nbsp;&nbsp;&nbsp; Component getListCellRendererComponent(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JList list,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object value,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int index,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean isSelected,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean cellHasFocus);<br />}<br />这个接口只提供一个方法，我们只要实现了这个接口，并将它的实例引用传给JList,就可以将JList替换成不同的样式了.看一下ListCellRenderer是如何工作的,</p>
<p>在绘制JList的每个Cell之前,它会去调用getListCellComponent( ,得到一个Component,并<br />将这个Component绘制在正确的位置.因为getListCellComponent( 返回的是Component,所以我们几乎可以扩展任意一个Component,来改变JList,JComboBox等的外观.</p>
<p>二、制作自已的绘制器<br />我们现在要想让JList中显示一组学生名单，同时每个名单前显示该学生的图标.如下图所示</p>
<p>我们先来想一想，Swing中有什么组件既可以显示图标也可以显示文字? JLabel.对了。我们就用JLabel作为JList的绘制器,　看看我扩展的JLabel类，它实现了ListCellRenderer接口:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 可以显示图标的ListCell绘制器 */<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public class IconListItemRenderer extends JLabel implements ListCellRenderer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Border<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selectedBorder = BorderFactory.createLineBorder(Color.blue,1),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emptyBorder = BorderFactory.createEmptyBorder(1,1,1,1);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Component getListCellRendererComponent(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JList list,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object value,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int index,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean isSelected,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean cellHasFocus)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IconListItem item = (IconListItem)value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setIcon(item.getIcon());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setText(item.getText());</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( isSelected&nbsp; setBorder (selectedBorder);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else setBorder(emptyBorder);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />大家看到，getListCellRendererComponent方法会传入几个参数,我们就用它传入的几个参数设置JLabel的外观:图标与文字。在这个类中，我们用一个IconListItem接收调用者传过来的value,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IconListItem item = (IconListItem) value;<br />IconListItem是我另外定义好的一个类，它用来存放每一个List Item的值,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import javax.swing.*;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public class IconListItem<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Icon icon;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String text;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public IconListItem(Icon icon, String text)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.icon = icon;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.text = text;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Icon getIcon() { return icon;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getText() { return text;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setIcon(Icon icon){ this.icon = icon;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setText(String text){ this.text = text; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />这样的话，我就可以用getIcon()和getText()方法取得每个List Item的值了,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IconListItem item = (IconListItem) value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setIcon(item.getIcon());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setText(item.getText());</p>
<p>至此，我们就可以用以下方法方便的更换JList的外观了,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JList list = new JList();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.setCellRenderer(new IconListItemRenderer());&nbsp; file://安装我们自订的cellRenderer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DefaultListModel listModel = new DefaultListModel();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.setModel(listModel);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IconListItem item = new IconListItem(new ImageIcon(...),"John";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listModel.addElement(item);&nbsp;&nbsp;&nbsp; // 为List增加Item<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />由于JComboBox也有一个下拉式清单，所以它的清单也是用ListCellRenderer来绘制的，所以我们也可以将这个IconListItemRenderer给它用:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JComboBox list = new JComboBox();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.setRenderer(new IconListItemRenderer());&nbsp; //装我们自订的cellRenderer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DefaultComboBoxModel comboModel = new DefaultComboBoxModel();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.setModel(comboModel);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IconListItem item = new IconListItem(new ImageIcon(...),"John";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comboModel.addElement(item);&nbsp;&nbsp;&nbsp; // 为List增加Item<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />注意，JComboBox安装绘制器时是用setRenderer()方法，JList是用setCellRenderer()方法，名字稍有不同.</p>
<p>以上大家看到的是可显示一个图标的List, 下面我们再看一个可显示CheckBox的List是如何实现的,以下是例图:</p>
<p>代码实现:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import javax.swing.*;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import java.awt.*;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import javax.swing.border.*;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import java.awt.event.*;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 可以显示CheckBox的ListCell绘制器 */<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public class CheckListItemRenderer extends JCheckBox implements ListCellRenderer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Component getListCellRendererComponent(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JList list,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object value,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int index,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean isSelected,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean cellHasFocus)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckListItem item = (CheckListItem)value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setSelected(item.getCheck());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setText(item.getText());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setFont(list.getFont());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setEnabled(list.isEnabled());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />同样这个绘制器中用一个CheckListItem存放每个List Item的值:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public class CheckListItem<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean check;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String text;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public CheckListItem(boolean check, String text)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.check = check;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.text = text;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public boolean getCheck() { return check; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setCheck(boolean _check) { check = _check; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getText() { return text; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setText(String _text) { text = _text; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />这个绘制器的用法同IconListItemRenderer一样，不多讲了.</p>
<p>三、让自订的绘制器响就鼠标事件<br />使用以上的CheckListItemRenderer时，大家会发现，虽然List中可以显示CheckBox了，但是用鼠标点击时，没有反应! 现在我就来解决这个问题.要澄清的是，ListCellRenderer本身是只返回一个组件用来绘制一个单元格，不能对用户动作作出反应。为些我们必须在JList上下功夫.JList有一个addMouseListener（）方法可以为自身安装一个鼠标监听器，在这里，我实现了一个MouseAdapter,并让它对mousePressed作出响应:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class CheckListMouseListener extends MouseAdapter<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void mousePressed(MouseEvent e) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JList list = (JList) e.getSource();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int index = list.locationToIndex(e.getPoint());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CheckListItem item = (CheckListItem)list.getModel().getElementAt(index);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item.setCheck(! item.getCheck());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rectangle rect = list.getCellBounds(index, index);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.repaint(rect);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />使用时, 用addMouseListener(new CheckListMouseListener())就行了.</p>
<p>除了包含CheckBox的JList外，许多情况下，我们需要为自制的绘制器加上动作响应，如我们要实现一个可编辑的JList,　除了要扩展JTextField及实现ListCellRenderer之外，还要写一个鼠标监听器和键盘监听器，当双击时，JList变成可编辑状态，当回车时，还原成不可编辑状态.具体的实现过程，我就不详叙了，留给大家作练习.</p>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/181939#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 11 Apr 2008 20:47:12 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/181939</link>
        <guid>http://npsajax.javaeye.com/blog/181939</guid>
      </item>
      <item>
        <title>男人必会的10道家常菜</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/179442" style="color:red;">http://npsajax.javaeye.com/blog/179442</a>&nbsp;
          发表时间: 2008年04月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>一、炖排骨 <br />炒锅烧水，水开后将切好的排骨放入。马上关火，将排骨捞出。重新烧水烧开后，放入：葱，姜，酱油，醋，料酒，糖，盐。 <br /><br />&nbsp; &nbsp; 注意： <br /><br />&nbsp; &nbsp; 1、醋少放，酱油多放，看颜色差不多就好了。糖和盐按口味放。 <br /><br />&nbsp; &nbsp; 2、然后大火转小火，盖锅盖慢慢炖。中间经常翻一下，防止烧枯。等水差不多干了的时候就好了。放葱起锅。 <br /><br /><img src="http://news.xinhuanet.com/food/2007-06/07/xinsimple_58206040614449132174113.jpg" border="0" alt="" /><br /><br />&nbsp; &nbsp; &nbsp; &nbsp; 二、闷蛋 <br />1、打四个到五个鸡蛋，放入葱末和适量盐搅拌，待用。 <br /><br />2、热锅，放中等油量，等油热以后下鸡蛋，有点熟以后铲产锅底，不要让鸡蛋粘住，再加少量油，反复这样两次，等底下的蛋熟了以后，翻过来，翻面的时候最好准备一个盘子~先把盘子扣在锅上，然后翻个，稍微热一下就好了，起锅。 <br /><br /><img src="http://news.xinhuanet.com/food/2007-06/07/xinsimple_59206040614445431952314.jpg" border="0" alt="" /> <br /><br />&nbsp; &nbsp; 三、红烧茄子肉丝 <br />1、三根细茄子，洗净，削皮，剖成两半切成一厘米宽度的小块，待炒。 <br /><br />2、加中等偏大量的油， 7、8成热的时候下锅翻炒，待到茄子有点软的时候起锅。再在锅中放少量油，切好葱姜蒜末暴之，然后放大约二两左右的肉丝，要大一些，肉片最好，爆炒，熟了以后放茄子，立刻放酱油，少量的水，糖，鸡精，盐，闷之。 <br /><br />3、三分钟后即可食用。 <br /><br /><img src="http://news.xinhuanet.com/food/2007-06/07/xinsimple_09206040615008522494415.jpg" border="0" alt="" /><br /><br />四、鸡蛋炒西红柿 <br /><br /><br /><br /><br /><br />1、两个西红柿切块，两个鸡蛋捣碎。两勺色拉油，看得见为止，油热放鸡蛋，加少量盐，稍微熟即可，越嫩越好，然后铲出鸡蛋，关炉子，如果锅里还有油就不用加油了，或者从蛋碗里倒一些出来。 <br /><br />2、开旺炉子，搅拌西红柿，放中等量盐(宁淡勿咸)，放中等量水，煮两分钟以后放鸡蛋。等水开之后放一勺糖，搅拌一下就可以起锅了，这时可以放味精，起锅之时可以放些大蒜叶。大功告成。(总耗时：2：42) <br /><br /><img src="http://news.xinhuanet.com/food/2007-06/07/xinsimple_10206040615004831467316.jpg" border="0" alt="" /><br /><br />五、可乐鸡翅 <br /><br /><br /><br /><br /><br />1、买好的鸡翅稍微洗洗，放入炖锅里；切姜片，少许，放入锅中； <br /><br />2、加可乐，将鸡翅淹没；加酱油，大约是可乐的1/3左右，看颜色红黑就行了。盖锅盖，大火煮； <br /><br />3、煮开后，换小火炖。炖的过程中，可以看一下颜色是不是发红，如果太淡会甜，太深则咸。炖的差不多了，用筷子戳鸡翅，感觉软了就好了。 <br /><br /><img src="http://news.xinhuanet.com/food/2007-06/07/xinsimple_1020604061500964426217.jpg" border="0" alt="" /><br /><br />六、蘑菇香菇红烧豆腐 <br /><br /><br /><br /><br /><br />新鲜香菇和新鲜蘑菇切片，一大块手工豆腐不用切块，中等偏上的油量，等油稍热，下蘑菇和香菇，锅里放一勺盐，搅拌一下。然后是豆腐，豆腐上也放一小勺盐，翻炒至稍热微熟(1分钟左右)放酱油，接着立刻放一大勺白糖(整个菜不能放水)放大蒜叶即可起锅(没有也可，大蒜末也可。)整个过程总耗时4：43。 <br /><br /><img src="http://news.xinhuanet.com/food/2007-06/07/xinsimple_11206040615005451591418.jpg" border="0" alt="" /><br /><br />七、牛肉芹菜 <br /><br /><br /><br /><br /><br />材料：嫩牛肉300克，芹菜150克。调味料：盐，白糖，味精，淀粉，姜，蒜，胡椒粉。 <br /><br />做法： <br /><br />①将芹菜切成薄片。牛肉横切成2厘米长的薄片，放入碗内，(加小苏打)、酱油胡椒粉、水淀粉，料酒、姜末和清水，浸10分钟后，加入花生油，再腌1小时。 <br /><br />②炒锅上火，花生油烧至六成热，放入牛肉片，用勺拌和，待牛肉色白时，倒入漏勺沥油。锅内留少许油复上火，放入葱姜片爆炒，放入芹菜块，一分钟左右放入牛肉同炒，放入盐，糖加水中小火5-10分钟左右，加味精，淀粉勾兑起锅。 <br /><br /><img src="http://news.xinhuanet.com/food/2007-06/07/xinsimple_11206040615008352707519.jpg" border="0" alt="" /><br /><br />八、皮蛋豆腐 <br /><br /><br /><br /><br /><br /><br /><br /><br /><br />内脂豆腐一大块用开水烫过放凉，皮蛋切小块(密技：用棉线切割又快又不沾)放在豆腐上，撒葱花，淋酱油，点香油即成。 <br /><br /><img src="http://news.xinhuanet.com/food/2007-06/07/xinsimple_1220604061500156780420.jpg" border="0" alt="" /><br /><br />九、洋芋头鸡蛋汤 <br /><br /><br /><br /><br /><br />洋芋头一个切丝，鸡蛋两个捣碎，锅内烧开一大碗开水，倒入洋芋头丝和盐，煮至水开丝烂，倒入鸡蛋，稍微搅伴，加味精和麻油，起锅。 <br /><br /><img src="http://news.xinhuanet.com/food/2007-06/07/xinsimple_1220604061500546767021.jpg" border="0" alt="" /><br /><br />十、咖喱鸡翅 <br /><br /><br /><br /><br /><br />鸡翅可根据个人喜好选用翅中或翅尖，刀斩开，开水抄三五分钟即可备用； <br /><br />土豆、葱头、鲜香菇、青椒(也可选尖椒)切片备用；热锅凉油入咖喱粉适量(个人喜好)，出咖喱香后稍沉一会儿顺序入葱头、香菇、土豆、鸡翅、青椒&hellip;&hellip;，放水放调料(自选，俺只放盐)咕嘟到土豆熟了，入水淀粉，起锅。(现在超市里有包装现成的咖喱卤.辣,微辣,甜味的都有,做时都不用放淀粉) <br /><br /><img src="http://news.xinhuanet.com/food/2007-06/07/xinsimple_12206040615008771485522.jpg" border="0" alt="" /><br /><br />吃得饱是生活，吃得好是享受，吃得巧是艺术。</p>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/179442#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 04 Apr 2008 00:24:57 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/179442</link>
        <guid>http://npsajax.javaeye.com/blog/179442</guid>
      </item>
      <item>
        <title>WEB可用性测试问题(翻译)</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/179130" style="color:red;">http://npsajax.javaeye.com/blog/179130</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          原文：WAI Site Usability Testing Questions<br />http://www.w3.org/WAI/EO/Drafts/UCD/questions.html<br /><br />Pre Test Questions<br />测试前问题<br />www.amizhang.com/blog<br />1. Do you ever research issues related to Web accessibility for people with disabilities? (If no: skip to 11)<br />你是否曾经搜索过关于残障人士访问网页可及性问题的文章？(若否，跳至问题11)<br />2. What resources do you use to learn about Web accessibility? (Probe: Web sites, books, classes)<br />你通过什么资源了解网页可及性、(Probe 网站 书籍 课程)<br />3. (May not need to ask) What Web sites do you use to learn about Web accessibility?<br />(也许不必问)你去什么网站了解网页可及性？<br />4. How often do you use them?<br />访问有多频繁？<br />5. What do you like about each of the Web sites?<br />觉得这几个网站如何？<br />6. What do you dislike about each of the Web sites?<br />这几个站点有哪些地方你不喜欢？<br />7. What types of Web accessibility information do you look for on the Internet?<br />你在网上寻找什么类型的网页可及性信息？<br />8. What are the last three Web accessibility topics or questions you researched on the Internet?<br />你最近搜索的三个关于网页可及性的问题是什么？<br />9. What drives your interest in Web accessibility?<br />什么促使你对网页可及性问题感兴趣？<br />10. How long have you been involved in Web accessibility?<br />涉及网页可及性有多久了？www.amizhang.com/blog<br />11. Do any of the authoring tools you use have features to help make your Web sites accessible?<br />你用什么写作工具帮助你网站的可及性？<br />12. How long have you been involved in Web development or management?<br />涉及网站开发和管理多久了？<br />13. If you were to envision your ideal Web accessibility Web site, what sorts of information would it contain? What would it look and act like? How would it be organized?<br />如果设想理想的关于网页可及性的网站，会包括什么样的信息？看上去和用上去会如何？会是怎样组织的？<br /><br />Participant Tasks<br />参与者任务<br /><br />Task 1<br />www.amizhang.com/blog<br />This is the homepage of a Web site dedicated to Web-related accessibility issues. Please give me your initial reactions to this page. Feel free to explore this page as you normally would. You can scroll around with your mouse, but please don't click on anything just yet.<br />这是一个有关WEB可及性网站的首页。请告诉我你对这个页面的第一反应。就像你平时一样自然的浏览这个页面吧。你可以滚动页面，不过暂且别点击任何东西<br /><br />Faciliator will ask:<br />测试员提问<br />* Have you ever seen this Web site before?<br />你以前见过这个网站吗？www.amizhang.com/blog<br />* Please give me your initial impressions about the layout of this page and what you think of the colors, graphics, photos, etc.<br />请告诉我你对这个页面布局的第一印象，以及对颜色、图形图像等的想法<br />* Without clicking on anything yet, please describe the options you see on the home page and what you think they do. Feel free to move around the page, but again I’ll ask you not to click on anything right now.<br />先不点击任何东西，请描述你在首页上看到的选项、你觉得是做什么用处的。可以滚动页面，不过再次提醒现在不要点击任何东西<br />* Without clicking on anything yet, if you were exploring, what would you click on first?<br />如果你在浏览，还没有点击过任何东西，你会先点击什么？<br />* What do you think is the purpose of this site?<br />你觉得这个网站的目标是什么？<br />* Who do you think this site is intended for?<br />你觉得这个网站是用来干什么的？<br />* Whose Web site is this?<br />这是谁的网站？<br /><br />Task 2<br /><br />I'm going to give you five minutes to freely explore this Web site. You may go anywhere you would like to go on the Web site, but please remember to speak aloud as you do so. I will tell you when the five minutes are up.<br />我会给你五分钟自由浏览这个网站。你可以去网站上任何你想去的地方，不过记得说出来。时间到的时候我会告诉你www.amizhang.com/blog<br /><br />Task 3<br /><br />Your friend Kevin mentions hearing about something called "the Web Accessibility Initiative" but he isn't sure what it is. Using this Web site, determine whether or not it contains information that would address Kevin's question.<br />你的朋友Kevin提到听过“网页可及性措施”但并不清楚具体是什么。用这个网站，找出是否有能够解决Kevien问题的信息www.amizhang.com/blog<br /><br />When you feel you have completed this task, please say so.<br />若你觉得完成了任务，请告诉我www.amizhang.com/blog<br /><br />Task 4<br /><br />Your team at work is developing a Web site and you have some concerns about how accessible the Web site might be to persons with disabilities. Using this Web site, determine whether or not it contains general hints about what Web developers need to know about Web accessibility.<br />你工作的团队整在开发一个网站，而你需要考虑对残疾人可及性要做到怎样的程度。用这个网站找出是否有WEB开发人员需要了解的与网页可及性相关的要点提示<br /><br />When you feel you have completed this task, please say so.<br />若你觉得完成了任务，请告诉我www.amizhang.com/blog<br /><br />Task 5<br /><br />A few of your colleagues are interested in finding out how to be a part of WAI's effort to develop guidelines for Web accessibility. Using this Web site, determine whether or not opportunities exist for becoming involved in WAI guideline development.<br />一些你的同事对怎样加入WAI开发网页可及性指南有兴趣。用这个网站找出是否有机会加入WAI的指南开发<br /><br />When you feel you have completed this task, please say so.<br />若你觉得完成了任务，请告诉我www.amizhang.com/blog<br /><br />Task 6<br /><br />You have just been handed a report, generated by a Web accessibility evaluation tool, which informs you that your company Web site contains graphs that do not meet "Checkpoint 1.1."<br />你刚提交了通过网页可及性评估工具生成的一个报告，其中说你们公司的网站含有不满足“要点1.1”的图表<br /><br />Using this Web site, a) determine what Checkpoint 1.1 is, and b) determine an appropriate strategy for representing these complex pictures.<br />用这个网站 a)找出要点1.1是什么 b)找出合适的表现这些复杂图片的策略www.amizhang.com/blog<br /><br />When you feel you have completed this task, please say so.<br />若你觉得完成了任务，请告诉我<br /><br />Task 7<br /><br />Your company is revising the online forms on its Web site. Find specific information on how to make the online forms accessible.<br />你的公司正在修正网站的在线表单。找出怎样让在线表单可及的详细信息www.amizhang.com/blog<br /><br />When you feel you have completed this task, please say so.<br />若你觉得完成了任务，请告诉我<br /><br />Task 8<br /><br />A company with many global divisions and Web sites in many languages has asked for your opinion on how Web accessibility laws differ around the world. Using this Web site, determine whether or not it contains relevant information.<br />一个有很多全球分部和多种语言网站的企业向你征询全球各地可行性法律的不同。用这个网站找出是否有相关的信息www.amizhang.com/blog<br /><br />When you feel you have completed this task, please say so.<br />若你觉得完成了任务，请告诉我<br /><br />Task 9<br /><br />You have been invited to be a presenter at a local conference on Web accessibility. Find information on this Web site that you would want to use to help you prepare your talk.<br />你被邀请在一个当地的网页可及性会议上演讲。在这个网站上你会用来帮助你演讲的信息www.amizhang.com/blog<br /><br />When you feel you have completed this task, please say so.<br />若你觉得完成了任务，请告诉我<br /><br />Task 10<br /><br />The company division you work in is responsible for making sure that your corporate Web site is accessible. How can your team use the WAI Web site to determine the accessibility of your company Web site?<br />你在公司工作的部门负责保证公司网站的可及性。你们的团队会怎样使用WAI网站来定义你们公司网站的可及性？<br /><br />When you feel you have completed this task, please say so.<br />若你觉得完成了任务，请告诉我www.amizhang.com/blog<br /><br />Post Test Interview<br />测试后访谈<br /><br />1. What are your overall impressions of the Web site?<br />你对这个网站的整体印象是怎样的？www.amizhang.com/blog<br />2. If you had to give the site a grade, from A to F, where A was exemplary and F was failing, what grade would you give it, and why?<br />如果给这个网站评级，A-F，A为经典的，F为失败，你会评几级，为什么？<br />3. Name three words or characteristics that describe this Web site.<br />用三个词来形容这个网站<br />4. What are the three things you like best about the Web site?<br />这个网站你最喜欢的三个点是什么？www.amizhang.com/blog<br />5. What are the three things you like least about the Web site?<br />这个网站你最不喜欢的三点是什么？<br />6. If you could make one significant change to this Web site, what change would you make?<br />如果你能给这个网站做个较大的改动，你会改变什么？<br />7. Would you return to this Web site on your own in the future? Why/why not?<br />你是否今后还会来这个网站？为什么？<br />8. What would entice you to return?<br />是什么会吸引你回来？<br />9. Are there materials you would like to see added to the Web site? Which ones?<br />有没有你希望在这个网站上增加的资料？哪些？www.amizhang.com/blog<br />10. Would you recommend this Web site to a colleague? To a friend?<br />你会把这个网站推荐给你的同事或者朋友吗？<br />11. Do you have any other questions or comments about the Web site or your experiences with it?<br />你还有任何关于这个网站或者这此体验的问题和意见吗？<br /><br />Post Test Survey<br />测试后问卷<br /><br />For our last activity I'm going to give you a short questionnaire that I would like you to fill out. The questionnaire will give you a series of statements about the Web Accessibility Initiative Web site. I would like you to rate your agreement with each statement. While you fill out the questionnaire, I will step into the observation booth to see if our observers have any further questions.<br />我们最后的事项是请你填写一个短小的问卷。问卷提供一系列的关于WAI网站的陈述。请你对陈述的同意程度评级。你填写问卷时我会去观察室看看我们的观察员是否有额外的问题<br /><br />1. The homepage is attractive.<br />首页很吸引人<br />2. The overall site is attractive.<br />整个站点很吸引人www.amizhang.com/blog<br />3. The site's graphics are pleasing.<br />网站的图片令人愉快<br />4. The site has a good balance of graphics versus text.<br />网站的图片和文字有很好的平衡<br />5. The colors used throughout the site are attractive.<br />网站使用的颜色吸引人<br />6. The typography (lettering, headings, titles) is attractive.<br />排版（字体、标题）吸引人<br />7. The homepage's content makes me want to explore the site further.<br />首页的内容让我想进一步浏览这个网站<br />8. It is easy to find my way around the site.<br />我能在网站内轻易地找到自己的方向<br />9. I can get to information quickly.<br />我能迅速找到信息www.amizhang.com/blog<br />10. It is fun to explore the site.<br />浏览这个网站很有乐趣<br />11. It is easy to remember where to find things.<br />能容易记住是在哪儿找到东西的<br />12. Information is layered effectively on different screens.<br />信息在不同界面上都很好地排布<br />13. The homepage is attention-getting.<br />首页能吸引注意<br />14. Information is easy to read.<br />信息容易阅读www.amizhang.com/blog<br />15. Information is written in a style that suits me.<br />信息的书写是适合我的方式<br />16. Screens have the right amount of information.<br />界面的信息量合适<br />17. The site effectively communicates the company's identity.<br />网站有效地传达了企业的身份<br />18. The information is relevant to my professional needs.<br />信息与我个人的需求有关<br />19. The site is designed with me in mind.<br />网站的设计考虑到了我<br />20. The site's content interests me.<br />网站的内容让我有兴趣<br />21. The site's content would keep me coming back.<br />网站的内容能让我持续回访<br />22. The site has characteristics that make it especially appealing.<br />站点的特色使其显得特别出众<br />23. The site reflects progressive, leading edge design.<br />网站展现了先进的、领先的设计<br />24. The site is exciting.<br />网站令人兴奋<br />25. The site is well-suited to first-time visitors.<br />网站对于初次到访的用户来说很合适<br />26. The site is well-suited to repeat visitors.<br />网站对于经常到访的用户很合适<br />27. The site has a clear purpose.<br />网站有一个清晰的目标<br />28. I always felt I knew what it was possible to do next.<br />我总能感觉下一步大概会要做些什么www.amizhang.com/blog<br />29. It is clear how screen elements (e.g., pop-ups, scrolling lists, menu options, etc.) work.<br />界面元素（弹出窗口、滚动条、菜单选项等）<br />30. My mistakes were easy to correct.<br />我的错误能容易纠正
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/179130#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Apr 2008 12:56:29 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/179130</link>
        <guid>http://npsajax.javaeye.com/blog/179130</guid>
      </item>
      <item>
        <title>如何把安全证书导入到java中的cacerts证书库</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/178572" style="color:red;">http://npsajax.javaeye.com/blog/178572</a>&nbsp;
          发表时间: 2008年04月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在项目开发中,有时会遇到与SSL安全证书导入打交道的，如何把证书导入java中的cacerts证书库呢？ <br />其实很简单，方法如下：<br /><br />每一步：进入某个https://www.xxx.com开头的网站,把要导入的证书下载过来，<br /><br />　　　　在该网页上右键 >> 属性 >> 点击"证书" >> <br /><br />　　　　再点击上面的"详细信息"切换栏 >><br /><br />　　　　再点击右下角那个"复制到文件"的按钮<br /><br />　　　　就会弹出一个证书导出的向导对话框，按提示一步一步完成就行了。<br /><br />　　　　例如：保存为abc.cer,放在C盘下<br /><br /><br />第二步：如何把上面那步的(abc.cer)这个证书导入java中的cacerts证书库里?<br /><br />　　　　方法如下<br /><br />　　　　假设你的jdk安装在C:\jdk1.5这个目录，<br /><br />　　　　开始 >> 运行 >> 输入cmd 进入dos命令行 >> <br /><br />　　　　再用cd进入到C:\jdk1.5\jre\lib\security这个目录下<br /><br />　　　　敲入如下命令回车执行<br /><br />　　　　keytool -import -alias cacerts -keystore cacerts -file d:\software\AKAZAM-Mail.cer -trustcacerts<br /><br />　　　　此时命令行会提示你输入cacerts证书库的密码，<br /><br />　　　　你敲入changeit就行了，这是java中cacerts证书库的默认密码，<br /><br />　　　　你自已也可以修改的。<br /><br /><br /><br />　　　　ok,大功告成！
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/178572#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 01 Apr 2008 21:44:14 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/178572</link>
        <guid>http://npsajax.javaeye.com/blog/178572</guid>
      </item>
      <item>
        <title>转 文本和下拉结合的可填可选输入框     </title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/144934" style="color:red;">http://npsajax.javaeye.com/blog/144934</a>&nbsp;
          发表时间: 2007年11月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font size="4"><strong>转自<a href="http://blog.csdn.net/Rachael1001/archive/2007/06/26/1667320.aspx">&nbsp;文本和下拉结合的可填可选输入框</a>&nbsp;</strong></font></p>
<p><font size="4"><strong></strong></font></p>
<p><font size="4"><strong>看到这个让我欣喜若狂，呵呵<script src="http://blog.csdn.net/count.aspx?ID=1667320&amp;Type=Rank"></script></strong></font></p>
<p><font size="4"><strong>文本和下拉结合的可填可选输入框</strong></font></p>
<p>前段时间客户要求输入框既可以像文本框那样输入，又可以下拉选择 。本以为会非常的复杂，后来做起来却发现并不难，只是有些巧妙的地方要注意。可填可选的输入框是由一个input text控件和select控件经过剪切叠加组合而成.</p>
<p>html代码：<br />
&lt;tr&gt;&nbsp; <br />
&nbsp;&lt;td align=&quot;right&quot;&nbsp; width=&quot;33%&quot;&gt;&amp;nbsp;&lt;/td&gt;<br />
&nbsp;&lt;td align=&quot;center&quot;&nbsp; width=&quot;33%&quot;&gt;&lt;strong&gt;工作日时限：&lt;/strong&gt;&lt;/td&gt;<br />
&nbsp;&lt;td align=&quot;left&quot;&nbsp; width=&quot;33%&quot;&gt;<br />
&nbsp;&lt;input type=&quot;text&quot; name=&quot;dayLimit&quot; style=&quot;width:45px;POSITION: absolute&quot;&gt;<br />
&nbsp;&lt;select&nbsp; id=&quot;choose&quot; onchange=&quot;document.all['dayLimit'].value=this.options[this.selectedIndex].value&quot; style=&quot;width:62px;CLIP: rect(auto auto auto 45px); POSITION: absolute&quot;&gt;<br />
&nbsp;&nbsp;&lt;option value=&quot;&quot;&gt;&lt;/option&gt;<br />
&nbsp;&nbsp;&lt;option value=&quot;5&quot;&gt;5&lt;/option&gt;<br />
&nbsp;&nbsp;&lt;option value=&quot;10&quot;&gt;10&lt;/option&gt;<br />
&nbsp;&nbsp;&lt;option value=&quot;15&quot;&gt;15&lt;/option&gt;<br />
&nbsp;&lt;/select&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;天&lt;/Td&gt;<br />
&lt;/tr&gt;</p>
<p>关键：<br />
1。由select的onchange替代input text的value值。<br />
2。rect ( number number number number )元素：<br />
&nbsp;&nbsp; 依据上-右-下-左的顺序提供自对象左上角为(0,0)坐标计算的四个偏移数值，其中任一数值都可用 auto 替换，即此边不剪切；必须将 position 属性的值设为 absolute ，此属性方可使用。<br />
3。要做这个控件，只需对rect(number number number number )最后一个number设置一个值，其余都为auto。<br />
&nbsp;&nbsp; 向下的箭头部分的长度大约17px，所以就有这样一个规律：<br />
&nbsp;&nbsp; select控件的长度＝input text控件的长度+17px<br />
&nbsp;&nbsp; 也就是说，如果我希望在页面上呈现一个217px的可填可写的select控件，就可以设置如下：<br />
&nbsp;&nbsp; input text : 45px<br />
&nbsp;&nbsp; select控件&nbsp;&nbsp;&nbsp; : 62px<br />
&nbsp;&nbsp; rect设置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ：rect(auto auto auto 45px ) </p>
<p>javascipt取值,实质是取input text的值：<br />
var dayLimit = document.all[&quot;dayLimit&quot;].value;<br />
alert(&quot;dayLimit=&quot;+dayLimit);<br />
原来就是这么简单的！</p>
          <br/>
          <span style="color:red;">
            <a href="http://npsajax.javaeye.com/blog/144934#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 29 Nov 2007 21:23:24 +0800</pubDate>
        <link>http://npsajax.javaeye.com/blog/144934</link>
        <guid>http://npsajax.javaeye.com/blog/144934</guid>
      </item>
      <item>
        <title>转《Java的AJAX请求中文编码方法》</title>
        <author>npsajax</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://npsajax.javaeye.com">npsajax</a>&nbsp;
          链接：<a href="http://npsajax.javaeye.com/blog/140376" style="color:red;">http://npsajax.javaeye.com/blog/140376</a>&nbsp;
          发表时间: 2007年11月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>转《<a href="http://yufei.javaeye.com/blog/131962" title="永久链接: Java的AJAX请求中文编码方法">Java的AJAX请求中文编码方法</a>》</p>
<p>&nbsp;</p>
<div style="MARGIN-TOP: 5px; MARGIN-LEFT: 15px"><strong>关键字:</strong> AJAX &nbsp; AJAX 中文乱码 乱码 编码 中文编码&nbsp;&nbsp;&nbsp;&nbsp; </div>
<div style="MARGIN-TOP: 10px; MARGIN-LEFT: 15px; OVERFLOW: auto">
<table width="100%">
    <tbody>
        <tr>
            <td>
            <p>这里的方案是页面(page)是基于GBK(gb2312) 的编码格式</p>
            <p>AJAX的中文情况,默认情况下,tomcat和weblogic的get和post请求的编码方案都不一样,不过前提都是要设置request.setCharactorEncoding(&quot;UTF-8&quot;)如下面代码中,get方案是很烦琐的那种将得到的参数重新编码来实现的|new String(request.getParameter(&quot;para name&quot;).getBytes(&quot;encoding name&quot;))|而post方案是比较简单而方便的,也提倡使用这种方式,因为可以基于filter来管理编码 <br />
            tomcat可以通过设置在server.xml里的Connector元素下设置URIencoding=&quot;gbk&quot;参数来让get使用post的方案(即get和post都使用request.setCharactorEncoding(&quot;UTF-8&quot;),request.getParameter(&quot;para name&quot;) )具体设置参考http://www.javaeye.com/topic/131542,不过在weblogic下无解(我个人还没发现如何实现),weblogic好像在解析get参数后自己又用什么编码格式包装过......其实AJAX get根本没有普通请求get请求作为标签的作用,我们完全可以不使用get,而只使用post</p>
            <p>测试用的jsp和servlet在下面,丢到一个项目里,在web.xml里配置servlet后运行可以看到效果,servlet的url-pattern是这个&lt;url-pattern&gt;/GetAndPostExample&lt;/url-pattern&gt;</p>
            <p>getAndPostExample.jsp <br />
            </p>
            <div class="code_title">代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-xml">
                <li class="alt"><span><span class="tag">&lt;</span><span>%@&nbsp;page&nbsp;</span><span class="attribute">language</span><span>=</span><span class="attribute-value">&quot;java&quot;</span><span>&nbsp;</span><span class="attribute">import</span><span>=</span><span class="attribute-value">&quot;java.util.Date&quot;</span><span>&nbsp;&nbsp;</span><span class="attribute">contentType</span><span>=</span><span class="attribute-value">&quot;text/html;&nbsp;charset=gbk&quot;</span><span>%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
                <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>发送带参数的信息到服务器，以及get,post的区别</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/javascript&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;xmlHttp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;show() &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(&quot;show&quot;)</span><span class="attribute">.value</span><span>=</span><span class="attribute-value">document</span><span>.getElementById(&quot;firstName&quot;).value; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;createXMLHttpRequest() &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(window.ActiveXObject) &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xmlHttp</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">new</span><span>&nbsp;ActiveXObject(&quot;Microsoft.XMLHTTP&quot;); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(window.XMLHttpRequest) &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xmlHttp</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">new</span><span>&nbsp;XMLhttpRequest(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;createQueryString() &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">firstName</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">document</span><span>.getElementById(&quot;firstName&quot;).value; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">secondName</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">document</span><span>.getElementById(&quot;secondName&quot;).value; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">birthday</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">document</span><span>.getElementById(&quot;birthday&quot;).value; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">queryString</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">&quot;firstName=&quot;</span><span>+firstName+&quot;&amp;</span><span class="attribute">secondName</span><span>=&quot;+secondName &nbsp;&nbsp;</span></li>
                <li class=""><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&quot;&amp;</span><span class="attribute">birthday</span><span>=&quot;+birthday; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;queryString; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;doRequestUsingGET() &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createXMLHttpRequest(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show(); &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">queryString</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">&quot;GetAndPostExample?&quot;</span><span>; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">queryString</span><span class="attribute-value">queryString</span><span>&nbsp;=&nbsp;queryString&nbsp;+&nbsp;createQueryString() &nbsp;&nbsp;</span></li>
                <li class=""><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&quot;&amp;</span><span class="attribute">timeStamep</span><span>=&quot;&nbsp;+&nbsp;new&nbsp;Date().getTime(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xmlHttp.onreadystatechange</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">handleStateChange</span><span>; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.open(&quot;GET&quot;,queryString,true); &nbsp;&nbsp;</span></li>
                <li class="alt"><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.setRequestHeader(&quot;RequestType&quot;,&quot;ajax&quot;); &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.send(null); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//alert(queryString); &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;doRequestUsingPOST() &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createXMLHttpRequest(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">url</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">&quot;GetAndPostExample&quot;</span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">queryString</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">createQueryString</span><span>()+&nbsp;&quot;&amp;</span><span class="attribute">timeStamp</span><span>=&quot;+&nbsp;new&nbsp;Date().getTime();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.open(&quot;POST&quot;,url,true); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xmlHttp.onreadystatechange</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">handleStateChange</span><span>; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.setRequestHeader(&quot;Content-Type&quot;,&quot;application/x-www-form-urlencoded;&quot;); &nbsp;&nbsp;</span></li>
                <li class="alt"><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置报头,说明此请求是ajax请求 &nbsp;&nbsp;</span></li>
                <li class=""><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.setRequestHeader(&quot;RequestType&quot;,&quot;ajax&quot;); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.send(queryString); &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;handleStateChange() &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span class="attribute">xmlHttp.readyState</span><span>&nbsp;==&nbsp;4) &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&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 class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span class="attribute">xmlHttp.status</span><span>&nbsp;==&nbsp;200) &nbsp;&nbsp;</span></li>
        