<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>骑着摩托追飞机</title>
    <description>  不断学习中......</description>
    <link>http://imagination-fly.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>工作中的体会</title>
        <author>Imagination_Fly</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imagination-fly.javaeye.com">Imagination_Fly</a>&nbsp;
          链接：<a href="http://imagination-fly.javaeye.com/blog/210198" style="color:red;">http://imagination-fly.javaeye.com/blog/210198</a>&nbsp;
          发表时间: 2008年07月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          转眼间,在计算机面前一面对就是两年整了.很多时候都觉得麻木了.特别是在工作中遇到困难核挫折的时候,显得更加无奈和茫然,<img src="/images/smiles/icon_mad.gif"/>.. <br />  我们公司一直是作CRM，OA，HRM以及MIS系统.对于那些高手来说，觉得这块肯定很简单.不过呀，对于我们这种出道才工作那么一两年的coder来说还是有相对大的难度.至少刚开始工作的那段时间是这样的.工作这么久了,很多时候在挣扎和徘徊.06-07年底这段时间我是努力地天天写代码,思考思考再思考.每天吃饭睡觉除了想如何解决这个问题或者某个模块中的问题是如何解决的之外,真的很少考虑到用我们产品的客户.话还得从去年6月份说起走.当时我们帮客户做好了CRM系统,其它实施者去客户那发布,可谓说刚开始,一路ok.现在整个项目发布了,可以跟客户show下啦.让他们自己来体会下.对于客户来说，并不在意我们做得多漂亮.只要他们要的你能做出来.就ok了.<br />  如果是一个人用,当然好说,他们用的人多了,问题和要求就开始多起来了.比如某个客户觉得整体效果不美观.有客户说加些其它的一些额外功能.还有的客户遇到问题了.直接让你跟他解释代码，更至于有客户更牛,说软件肯定开发起来很简单,就那么几行代码就搞定.<img src="/images/smiles/icon_question.gif"/>出错了,他非得让实施者把代码给他看看,找出个原因来.<img src="/images/smiles/icon_evil.gif"/>真的是无语.但是后来发现项目经理从客户那每次都带回来不同的需求,也没有好好地归结就布置给我们了,做好后一同又拿去给客户发布,问题又出来了.要么就是有的功能对于他们来说是多余的.这样对于我们这些程序员幼小的心灵是一次次小小的伤害和磨练呢.我负责的CRM这块.客户说有的功能添加有的删除,等把添加的添加了，删除的删除了，实施者去发布.没隔两天.客户要求删除的再添加.my god 。。我真是服了.没辙.我有次的确是急了,直接跑过去,跟他们面对面地谈，他们到底要些什么，要实现些什么功能.我一一作下笔录.不难从客户那发现.实质上他们要的东西也许就是那么几个功能,可能对于专门做需求的来说.他们夸海口短时间什么都能实现.但是我觉得如果派遣技术员努力地跟他们沟通,然后降他们说的画出一个简单的概念图,能实现的，或者时间花费较长的都一一告知他们,也就不会给我们这些程序员造成每次都是他们在催我们赶紧.这样的话,大可将他们的业务需求转换成我们的功能逻辑.这样的话,可能在某些时候不需要浪费更多的时间重复一件事.但是对于有的公司来说。可能像我们遇到的这些问题并不是什么问题,顶多推卸给做需求的,话说回来.经过几次的面对面谈.发现好多问题都能迎刃而解.可能正所谓这也是我们每个程序员所必须掌握的吧.<br />  沟通中掌握他们的需求.将需求在脑子里变相地转化成业务逻辑.这样也许不仅仅提高了我们开发人员的业务逻辑处理能力,更好地也是对我们沟通方面的一个提升.
          <br/><br/>
          <span style="color:red;">
            <a href="http://imagination-fly.javaeye.com/blog/210198#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 01 Jul 2008 16:22:32 +0800</pubDate>
        <link>http://imagination-fly.javaeye.com/blog/210198</link>
        <guid>http://imagination-fly.javaeye.com/blog/210198</guid>
      </item>
      <item>
        <title>请教问题------</title>
        <author>Imagination_Fly</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imagination-fly.javaeye.com">Imagination_Fly</a>&nbsp;
          链接：<a href="http://imagination-fly.javaeye.com/blog/129849" style="color:red;">http://imagination-fly.javaeye.com/blog/129849</a>&nbsp;
          发表时间: 2007年10月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          机子出问题了 数据库备份全没了<img src="/images/smiles/icon_cry.gif"/> 在MYSQL里数据库全没了 唯独在项目中有.HBM.XNL文件 请问怎样能将.HBM.XML文件转化成数据库建表SQL语句。。。谢谢了
          <br/><br/>
          <span style="color:red;">
            <a href="http://imagination-fly.javaeye.com/blog/129849#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 08 Oct 2007 17:40:11 +0800</pubDate>
        <link>http://imagination-fly.javaeye.com/blog/129849</link>
        <guid>http://imagination-fly.javaeye.com/blog/129849</guid>
      </item>
      <item>
        <title>JSF框架</title>
        <author>Imagination_Fly</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imagination-fly.javaeye.com">Imagination_Fly</a>&nbsp;
          链接：<a href="http://imagination-fly.javaeye.com/blog/117914" style="color:red;">http://imagination-fly.javaeye.com/blog/117914</a>&nbsp;
          发表时间: 2007年08月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><strong><u><span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: #993300; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt; mso-bidi-language: HI">JSF</span></u></strong><strong><u><span style="FONT-SIZE: 9pt; COLOR: #993300; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 12.0pt; mso-bidi-language: HI">学习心得之基本概念理解</span></u></strong><span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-language: HI"><o:p></o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-INDENT: 9pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-char-indent-count: 1.0; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-language: HI">前段日子接触一个项目采用了<span lang="EN-US">JSF</span>框架<span lang="EN-US">,</span>在开发的过程中也出现了或多或少的难题，但是毕竟计算机知识嘛，边学边用。先将体会和对它的理解写出来。与各位<span lang="EN-US">JSF</span>爱好者分享分享<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" align="left" style="MARGIN-LEFT: 24pt; TEXT-INDENT: -24pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-list: l0 level1 lfo1; tab-stops: list 24.0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-list: Ignore">一、<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">了解基本概念<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" align="left" style="TEXT-INDENT: 22.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-char-indent-count: 2.5"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">JSF </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">将表示和应用程序行为明确分开，<span lang="EN-US">JSF</span>是一种事件驱动型的组件模型，<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 18pt"><span lang="EN-GB" style="FONT-SIZE: 9pt; mso-ansi-language: EN-GB">1</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ansi-language: EN-GB; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、理解使用</span><span lang="EN-GB" style="FONT-SIZE: 9pt; mso-ansi-language: EN-GB">JSF</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ansi-language: EN-GB; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的必要性</span><span lang="EN-GB" style="FONT-SIZE: 9pt; mso-ansi-language: EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 18pt"><span lang="EN-GB" style="FONT-SIZE: 9pt; mso-ansi-language: EN-GB">2</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ansi-language: EN-GB; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、掌握</span><span lang="EN-GB" style="FONT-SIZE: 9pt; mso-ansi-language: EN-GB"> JSF </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ansi-language: EN-GB; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">体系结构</span><span lang="EN-GB" style="FONT-SIZE: 9pt; mso-ansi-language: EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 18pt"><span lang="EN-GB" style="FONT-SIZE: 9pt; mso-ansi-language: EN-GB">3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ansi-language: EN-GB; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、掌握</span><span lang="EN-US" style="FONT-SIZE: 9pt">JSF </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的工作方式</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 18pt"><span lang="EN-US" style="FONT-SIZE: 9pt">4</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、了解</span><span lang="EN-US" style="FONT-SIZE: 9pt">JSF</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的用户界面模型</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 18pt"><span lang="EN-US" style="FONT-SIZE: 9pt">5</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、理解受管理的</span><span lang="EN-US" style="FONT-SIZE: 9pt">Bean</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的作用</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">二、<span lang="EN-US">JSF </span>生命周期<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" align="left" style="TEXT-INDENT: 18pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-char-indent-count: 2.0"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">JSF</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">的每个组件基本上都是可替换的，像是转换器（<span lang="EN-US">Converter</span>）、验证器（<span lang="EN-US">Validator</span>）、组件（<span lang="EN-US">Component</span>）、绘制器 （<span lang="EN-US">Renderer</span>）等等，每个组件都可以替换让<span lang="EN-US">JSF</span>在使用时更有弹性，但相对的所付出的就是组件组合时的复杂性，为此，最基本的，如果您打算自订一些<span lang="EN-US"> JSF</span>组件，那么您对于<span lang="EN-US">JSF</span>处理请求的每个阶段必须要有所了解。<span lang="EN-US"> <br />
</span>下图是<span lang="EN-US">JSF</span>处理请求时的每个阶段与简单说明，起始状态即使用者端发出请求时，终止状态则相当于绘制器发出响应时：<span lang="EN-US"> <br style="mso-special-character: line-break" />
<br style="mso-special-character: line-break" />
<o:p></o:p></span></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape fillcolor="#fcccc8" id="_x0000_s1058" type="#_x0000_t75" style="MARGIN-TOP: 5.55pt; Z-INDEX: 3; MARGIN-LEFT: -1in; WIDTH: 562.9pt; POSITION: absolute; HEIGHT: 238.3pt; mso-wrap-style: none; v-text-anchor: middle"><v:fill opacity="26214f"></v:fill><v:imagedata src="file:///C:\DOCUME~1\LionKing\LOCALS~1\Temp\msohtml1\01\clip_image001.wmz" o:title=""></v:imagedata><v:shadow color="#ddd"></v:shadow></v:shape><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<br clear="all" style="mso-ignore: vglayout" />
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br style="mso-special-character: line-break" />
<br style="mso-special-character: line-break" />
<o:p></o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">扣除事件处理，<span lang="EN-US">JSF</span>总共必须经过六个阶段：<span lang="EN-US"> <br />
&bull;</span>恢复视图<span lang="EN-US">(Restore View</span>）<span lang="EN-US"> <br />
<span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span>对于选择的页面如果是初次浏览则建立新的组件树。如果是会话阶段，会从使用者端或服务器端的数据找寻数据以回复每个组件的状态并重建组件树，如果不包括请求参数，则直接跳过接下来的阶段直接绘制响应。<span lang="EN-US"> <br />
&bull; </span>应用请求值<span lang="EN-US">(Apply Request Values) <br />
<span style="mso-spacerun: yes">&nbsp; </span></span>每个组件尝试从到来的请求中找寻自己的参数并更新组件值，在这边会触发<span lang="EN-US">ActionEvent</span>，这个事件会被排入队列中，然后在唤起应用程序阶段之后才会真正由事件处理者进行处理。 然而对于设定<span lang="EN-US">immeduate</span>为<span lang="EN-US">true</span>的命令（<span lang="EN-US">Commamnd</span>）组件来说，会立即处理事件并跳过之后的阶段直接绘制响应，而对于设定<span lang="EN-US">immediate</span>为<span lang="EN-US">true</span>的输入（<span lang="EN-US">Input</span>）组件，会马上进行转换验证并处理值变事件，之后跳过接下来的阶段，直接绘制响应。<span lang="EN-US"> <br />
&bull; </span>处理验证<span lang="EN-US">(Process Validations</span>）<span lang="EN-US"> <br />
<span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span>进行转换与验证处理，如果验证错误，则会跳过之后的阶段，直接绘制响应，结果是重新呼叫同一页绘制结果<span lang="EN-US">.</span>拥有第三方验证插件<span lang="EN-US"><br />
&bull; </span>更新模型值<span lang="EN-US">(Update Model Values)<o:p></o:p></span></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: left; mso-pagination: widow-orphan"><span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">更新每一个与组件绑定的<span lang="EN-US">backing bean</span>或模型对象。<span lang="EN-US"> <br />
&bull; </span>调用应用程序<span lang="EN-US">(Invoke Application)<o:p></o:p></span></span></p>
<p class="MsoNormal" align="left" style="TEXT-INDENT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-char-indent-count: 1.5"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">处理动作事件，并进行后端应用程序逻辑。<span lang="EN-US"> <br />
&bull; </span>呈现响应<span lang="EN-US">(Render Response)<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">使用绘制器绘制页面。</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo2; tab-stops: list 21.0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; mso-bidi-font-family: 宋体"><span style="mso-list: Ignore">三、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">体系结构</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-SIZE: 9pt"><v:group coordsize="10717,5925" id="_x0000_s1026" coordorigin="2362,4075" editas="canvas" style="WIDTH: 415.3pt; HEIGHT: 229.25pt; mso-position-horizontal-relative: char; mso-position-vertical-relative: line"><o:lock v:ext="edit" aspectratio="t"></o:lock><v:shape id="_x0000_s1027" type="#_x0000_t75" o:preferrelative="f" style="LEFT: 2362px; WIDTH: 10717px; POSITION: absolute; TOP: 4075px; HEIGHT: 5925px"><v:fill o:detectmouseclick="t"></v:fill><v:path o:extrusionok="t" o:connecttype="none"></v:path><o:lock text="t" v:ext="edit"></o:lock></v:shape><v:shape id="_x0000_s1028" type="#_x0000_t75" style="LEFT: 2597px; WIDTH: 1174px; POSITION: absolute; TOP: 7128px; HEIGHT: 1374px"><v:imagedata cropleft="583f" cropright="56723f" src="file:///C:\DOCUME~1\LionKing\LOCALS~1\Temp\msohtml1\01\clip_image003.png" cropbottom="24694f" o:title="" croptop="26600f"></v:imagedata></v:shape><v:roundrect fillcolor="#ccecff" id="_x0000_s1029" arcsize="10923f" style="LEFT: 4699px; WIDTH: 8380px; POSITION: absolute; TOP: 4766px; HEIGHT: 5234px; mso-wrap-style: none; v-text-anchor: middle"><v:fill focus="100%" type="gradient" rotate="t"></v:fill><v:shadow color="#ddd"></v:shadow></v:roundrect><v:shapetype o:spt="22" coordsize="21600,21600" id="_x0000_t22" adj="5400" path="m10800,qx0@1l0@2qy10800,21600,21600@2l21600@1qy10800,xem0@1qy10800@0,21600@1nfe"><v:formulas><v:f eqn="val #0"></v:f><v:f eqn="prod #0 1 2"></v:f><v:f eqn="sum height 0 @1"></v:f></v:formulas><v:path o:extrusionok="f" o:connectangles="270,270,180,90,0" o:connecttype="custom" textboxrect="0,@0,21600,@2" gradientshapeok="t" o:connectlocs="10800,@0;10800,0;0,10800;10800,21600;21600,10800"></v:path><v:handles><v:h position="center,#0" yrange="0,10800"></v:h></v:handles><o:complex v:ext="view"></o:complex></v:shapetype><v:shape fillcolor="#ffe2c5" id="_x0000_s1030" type="#_x0000_t22" adj="2469" style="LEFT: 10615px; WIDTH: 1738px; POSITION: absolute; TOP: 5655px; HEIGHT: 3161px; mso-wrap-style: none; v-text-anchor: middle"><v:fill angle="-90" focus="-50%" type="gradient" rotate="t" color2="#39f"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="1.70181mm,.85089mm,1.70181mm,.85089mm">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><strong><span style="FONT-SIZE: 13.5pt; COLOR: white; FONT-FAMILY: 黑体; mso-bidi-font-family: 黑体; mso-ansi-language: ZH-CN; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; text-shadow: auto">应用程序</span></strong><strong><span style="FONT-SIZE: 13.5pt; COLOR: white; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: ZH-CN; text-shadow: auto"><o:p></o:p></span></strong></p>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><strong><span style="FONT-SIZE: 13.5pt; COLOR: white; FONT-FAMILY: 黑体; mso-bidi-font-family: 黑体; mso-ansi-language: ZH-CN; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; text-shadow: auto">数据</span></strong><strong><span style="FONT-SIZE: 13.5pt; COLOR: white; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: ZH-CN; text-shadow: auto"><o:p></o:p></span></strong></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:shape><v:shapetype o:spt="70" coordsize="21600,21600" id="_x0000_t70" adj="5400,4320" path="m10800,l21600@0@3@0@3@2,21600@2,10800,21600,0@2@1@2@1@0,0@0xe"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="val #1"></v:f><v:f eqn="val #0"></v:f><v:f eqn="sum 21600 0 #1"></v:f><v:f eqn="sum 21600 0 #0"></v:f><v:f eqn="prod #1 #0 10800"></v:f><v:f eqn="sum #1 0 @4"></v:f><v:f eqn="sum 21600 0 @5"></v:f></v:formulas><v:path o:connectangles="270,180,180,180,90,0,0,0" o:connecttype="custom" textboxrect="@1,@5,@3,@6" o:connectlocs="10800,0;0,@0;@1,10800;0,@2;10800,21600;21600,@2;@3,10800;21600,@0"></v:path><v:handles><v:h position="#0,#1" yrange="0,10800" xrange="0,10800"></v:h></v:handles></v:shapetype><v:shape fillcolor="#fc0" id="_x0000_s1031" type="#_x0000_t70" adj="5756,1843" style="LEFT: 8145px; WIDTH: 692px; POSITION: absolute; TOP: 4280px; HEIGHT: 4171px; mso-wrap-style: none; v-text-anchor: middle; rotation: 90"><v:fill focus="100%" type="gradient" rotate="t"></v:fill><v:shadow color="#ddd"></v:shadow></v:shape><v:rect strokecolor="purple" id="_x0000_s1032" style="LEFT: 4985px; WIDTH: 1487px; POSITION: absolute; TOP: 5314px; HEIGHT: 3852px; mso-wrap-style: none; v-text-anchor: middle"><v:fill angle="-135" focus="100%" type="gradient" rotate="t" color2="#c9f"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="1.70181mm,.85089mm,1.70181mm,.85089mm">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><strong><span lang="EN-US" style="FONT-SIZE: 13.5pt; COLOR: #ffe2c5; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">Faces<o:p></o:p></span></strong></p>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><strong><span lang="EN-US" style="FONT-SIZE: 13.5pt; COLOR: #ffe2c5; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">Servlet<o:p></o:p></span></strong></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:rect><v:group coordsize="912,1104" id="_x0000_s1033" coordorigin="1776,2688" style="LEFT: 7390px; WIDTH: 2072px; POSITION: absolute; TOP: 7037px; HEIGHT: 1779px"><v:rect strokecolor="#ddd" fillcolor="#c9f" id="_x0000_s1034" style="LEFT: 1776px; WIDTH: 624px; POSITION: absolute; TOP: 2688px; HEIGHT: 816px; v-text-anchor: middle-center"><v:fill focusposition=".5,.5" method="linear sigma" focus="100%" focussize="" type="gradientRadial" color2="fill darken(143)"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="1.70181mm,.85089mm,1.70181mm,.85089mm">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体; mso-ansi-language: DE">Action </span><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: DE"><o:p></o:p></span></p>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体; mso-ansi-language: DE">Servlet</span><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: DE"><o:p></o:p></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:rect><v:rect strokecolor="#ddd" fillcolor="#c9f" id="_x0000_s1035" style="LEFT: 1872px; WIDTH: 624px; POSITION: absolute; TOP: 2784px; HEIGHT: 816px; v-text-anchor: middle-center"><v:fill focusposition=".5,.5" method="linear sigma" focus="100%" focussize="" type="gradientRadial" color2="fill darken(143)"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="1.70181mm,.85089mm,1.70181mm,.85089mm">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体; mso-ansi-language: DE">Action </span><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: DE"><o:p></o:p></span></p>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体; mso-ansi-language: DE">Servlet</span><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: DE"><o:p></o:p></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:rect><v:rect strokecolor="#ddd" fillcolor="#c9f" id="_x0000_s1036" style="LEFT: 1968px; WIDTH: 624px; POSITION: absolute; TOP: 2880px; HEIGHT: 816px; v-text-anchor: middle-center"><v:fill focusposition=".5,.5" method="linear sigma" focus="100%" focussize="" type="gradientRadial" color2="fill darken(143)"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="1.70181mm,.85089mm,1.70181mm,.85089mm">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体; mso-ansi-language: DE">Action </span><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: DE"><o:p></o:p></span></p>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体; mso-ansi-language: DE">Servlet</span><span lang="DE" style="FONT-SIZE: 12pt; COLOR: #dddddd; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: DE"><o:p></o:p></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:rect><v:rect strokecolor="#ddd" fillcolor="#c9f" id="_x0000_s1037" style="LEFT: 2064px; WIDTH: 624px; POSITION: absolute; TOP: 2976px; HEIGHT: 816px; v-text-anchor: middle-center"><v:fill focusposition=".5,.5" method="linear sigma" focus="100%" focussize="" type="gradientRadial" color2="fill darken(143)"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="1.70181mm,.85089mm,1.70181mm,.85089mm">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><strong><span lang="DE" style="FONT-SIZE: 12pt; COLOR: white; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体; mso-ansi-language: DE">JSF</span></strong><span style="FONT-SIZE: 12pt; COLOR: white; FONT-FAMILY: 黑体; mso-bidi-font-family: 黑体; mso-ansi-language: ZH-CN; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">页面</span><span style="FONT-SIZE: 12pt; COLOR: white; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: ZH-CN"><o:p></o:p></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:rect></v:group><v:shape fillcolor="#fc0" id="_x0000_s1038" type="#_x0000_t70" adj="5638,2380" style="LEFT: 9738px; WIDTH: 592px; POSITION: absolute; TOP: 7483px; HEIGHT: 1084px; mso-wrap-style: none; v-text-anchor: middle; rotation: 90"><v:fill focus="100%" type="gradient" rotate="t"></v:fill><v:shadow color="#ddd"></v:shadow></v:shape><v:shape fillcolor="#fc0" id="_x0000_s1039" type="#_x0000_t70" adj="5638,2380" style="LEFT: 6602px; WIDTH: 592px; POSITION: absolute; TOP: 7532px; HEIGHT: 985px; mso-wrap-style: none; v-text-anchor: middle; rotation: 90"><v:fill focus="100%" type="gradient" rotate="t"></v:fill><v:shadow color="#ddd"></v:shadow></v:shape><v:shape fillcolor="#fc0" id="_x0000_s1040" type="#_x0000_t70" adj="5638,2380" style="LEFT: 4173px; WIDTH: 593px; POSITION: absolute; TOP: 6151px; HEIGHT: 984px; mso-wrap-style: none; v-text-anchor: middle; rotation: 90"><v:fill focus="100%" type="gradient" rotate="t"></v:fill><v:shadow color="#ddd"></v:shadow></v:shape><v:shape fillcolor="#fc0" id="_x0000_s1041" type="#_x0000_t70" adj="5638,2380" style="LEFT: 4181px; WIDTH: 591px; POSITION: absolute; TOP: 7829px; HEIGHT: 985px; mso-wrap-style: none; v-text-anchor: middle; rotation: 90"><v:fill focus="100%" type="gradient" rotate="t"></v:fill><v:shadow color="#ddd"></v:shadow></v:shape><v:shapetype o:spt="202" coordsize="21600,21600" id="_x0000_t202" path="m,l,21600r21600,l21600,xe"><v:stroke joinstyle="miter"></v:stroke><v:path o:connecttype="rect" gradientshapeok="t"></v:path></v:shapetype><v:shape fillcolor="#fcccc8" filled="f" stroked="f" id="_x0000_s1042" type="#_x0000_t202" style="LEFT: 6897px; WIDTH: 3253px; POSITION: absolute; TOP: 4173px; HEIGHT: 900px"><v:fill opacity="26214f"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="1.70181mm,.85089mm,1.70181mm,.85089mm" style="mso-fit-shape-to-text: t">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><strong><span lang="EN-US" style="FONT-SIZE: 14.5pt; COLOR: #993366; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">Web </span></strong><strong><span style="FONT-SIZE: 14.5pt; COLOR: #993366; FONT-FAMILY: 黑体; mso-bidi-font-family: 黑体; mso-ansi-language: ZH-CN; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">容器</span></strong><strong><span style="FONT-SIZE: 14.5pt; COLOR: #993366; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: ZH-CN"><o:p></o:p></span></strong></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:shape><v:shape fillcolor="#fcccc8" filled="f" stroked="f" id="_x0000_s1043" type="#_x0000_t202" style="LEFT: 4825px; WIDTH: 1972px; POSITION: absolute; TOP: 9194px; HEIGHT: 899px"><v:fill opacity="26214f"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="1.70181mm,.85089mm,1.70181mm,.85089mm" style="mso-fit-shape-to-text: t">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: 黑体; mso-bidi-font-family: 黑体; mso-ansi-language: ZH-CN; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">控制器</span><span style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: ZH-CN"><o:p></o:p></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:shape><v:shape fillcolor="#fcccc8" filled="f" stroked="f" id="_x0000_s1044" type="#_x0000_t202" style="LEFT: 7786px; WIDTH: 1971px; POSITION: absolute; TOP: 9112px; HEIGHT: 900px"><v:fill opacity="26214f"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="1.70181mm,.85089mm,1.70181mm,.85089mm" style="mso-fit-shape-to-text: t">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: 黑体; mso-bidi-font-family: 黑体; mso-ansi-language: ZH-CN; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">视图</span><span style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: ZH-CN"><o:p></o:p></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:shape><v:shape fillcolor="#fcccc8" filled="f" stroked="f" id="_x0000_s1045" type="#_x0000_t202" style="LEFT: 10447px; WIDTH: 1971px; POSITION: absolute; TOP: 9112px; HEIGHT: 900px"><v:fill opacity="26214f"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="1.70181mm,.85089mm,1.70181mm,.85089mm" style="mso-fit-shape-to-text: t">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: 黑体; mso-bidi-font-family: 黑体; mso-ansi-language: ZH-CN; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">模型</span><span style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体; mso-ansi-language: ZH-CN"><o:p></o:p></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:shape><v:shape id="_x0000_s1046" type="#_x0000_t75" style="LEFT: 2362px; WIDTH: 1774px; POSITION: absolute; TOP: 4075px; HEIGHT: 2265px"><v:imagedata src="file:///C:\DOCUME~1\LionKing\LOCALS~1\Temp\msohtml1\01\clip_image004.jpg" o:title="Untitled-1"></v:imagedata></v:shape><w:wrap type="none"></w:wrap><w:anchorlock></w:anchorlock></v:group></span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo2; tab-stops: list 21.0pt"><span lang="EN-US" style="FONT-SIZE: 9pt; mso-bidi-font-family: 宋体"><span style="mso-list: Ignore">四、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工作方式</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-SIZE: 9pt"><v:group coordsize="11043,6180" id="_x0000_s1047" coordorigin="2362,4585" editas="canvas" style="WIDTH: 415.3pt; HEIGHT: 232pt; mso-position-horizontal-relative: char; mso-position-vertical-relative: line"><o:lock v:ext="edit" aspectratio="t"></o:lock><v:shape id="_x0000_s1048" type="#_x0000_t75" o:preferrelative="f" style="LEFT: 2362px; WIDTH: 11043px; POSITION: absolute; TOP: 4585px; HEIGHT: 6180px"><v:fill o:detectmouseclick="t"></v:fill><v:path o:extrusionok="t" o:connecttype="none"></v:path><o:lock text="t" v:ext="edit"></o:lock></v:shape><v:line from="9066,5572" to="10940,8634" id="_x0000_s1049" strokeweight="1.25pt" style="POSITION: absolute; mso-wrap-style: none; v-text-anchor: middle"><v:stroke endarrow="block"></v:stroke><v:shadow color="#ddd"></v:shadow></v:line><v:oval fillcolor="#39f" id="_x0000_s1050" style="LEFT: 9504px; WIDTH: 4219px; POSITION: absolute; TOP: 8634px; HEIGHT: 1581px; mso-wrap-style: none; v-text-anchor: middle"><v:fill focusposition="1,1" focus="100%" focussize="" type="gradientRadial" rotate="t"><o:fill type="gradientCenter" v:ext="view"></o:fill></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="4.68pt,2.34pt,4.68pt,2.34pt">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><strong><span lang="EN-US" style="FONT-SIZE: 15.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">FacesContext<o:p></o:p></span></strong></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:oval><v:line from="4531,5572" to="6405,8337" id="_x0000_s1051" strokeweight="1.25pt" style="POSITION: absolute; mso-wrap-style: none; v-text-anchor: middle; flip: x"><v:stroke endarrow="block"></v:stroke><v:shadow color="#ddd"></v:shadow></v:line><v:oval fillcolor="#39f" id="_x0000_s1052" style="LEFT: 3012px; WIDTH: 2780px; POSITION: absolute; TOP: 8337px; HEIGHT: 1581px; mso-wrap-style: none; v-text-anchor: middle"><v:fill focusposition="1,1" focus="100%" focussize="" type="gradientRadial" rotate="t"><o:fill type="gradientCenter" v:ext="view"></o:fill></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="4.68pt,2.34pt,4.68pt,2.34pt">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><strong><span lang="EN-US" style="FONT-SIZE: 15.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">Lifecycle<o:p></o:p></span></strong></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:oval><v:shape fillcolor="#fcccc8" filled="f" stroked="f" id="_x0000_s1053" type="#_x0000_t202" style="LEFT: 9657px; WIDTH: 3551px; POSITION: absolute; TOP: 6262px; HEIGHT: 1723px"><v:fill opacity="26214f"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="4.68pt,2.34pt,4.68pt,2.34pt" style="mso-fit-shape-to-text: t">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span lang="EN-US" style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">1. </span><span style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: 黑体; mso-bidi-font-family: 黑体; mso-ansi-language: ZH-CN; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">创建</span><span lang="EN-US" style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">FacesContext<o:p></o:p></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:shape><v:shape fillcolor="#fcccc8" filled="f" stroked="f" id="_x0000_s1054" type="#_x0000_t202" style="LEFT: 2362px; WIDTH: 3550px; POSITION: absolute; TOP: 6165px; HEIGHT: 1723px"><v:fill opacity="26214f"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="4.68pt,2.34pt,4.68pt,2.34pt" style="mso-fit-shape-to-text: t">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span lang="EN-US" style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">2. </span><span style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: 黑体; mso-bidi-font-family: 黑体; mso-ansi-language: ZH-CN; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">把控制权交给</span><span lang="EN-US" style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">Lifecycle<o:p></o:p></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:shape><v:line from="6701,9127" to="9559,9424" id="_x0000_s1055" strokeweight="1.25pt" style="POSITION: absolute; mso-wrap-style: none; v-text-anchor: middle"><v:stroke endarrow="block"></v:stroke><v:shadow color="#ddd"></v:shadow></v:line><v:shape fillcolor="#fcccc8" filled="f" stroked="f" id="_x0000_s1056" type="#_x0000_t202" style="LEFT: 6110px; WIDTH: 3548px; POSITION: absolute; TOP: 9719px; HEIGHT: 1724px"><v:fill opacity="26214f"></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="4.68pt,2.34pt,4.68pt,2.34pt" style="mso-fit-shape-to-text: t">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><span lang="EN-US" style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">3. </span><span style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: 黑体; mso-bidi-font-family: 黑体; mso-ansi-language: ZH-CN; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">分</span><span lang="EN-US" style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">6</span><span style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: 黑体; mso-bidi-font-family: 黑体; mso-ansi-language: ZH-CN; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">个阶段处理</span><span lang="EN-US" style="FONT-SIZE: 14.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">FacesContext<o:p></o:p></span></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:shape><v:oval fillcolor="#39f" id="_x0000_s1057" style="LEFT: 5960px; WIDTH: 3992px; POSITION: absolute; TOP: 4585px; HEIGHT: 1185px; mso-wrap-style: none; v-text-anchor: middle"><v:fill focusposition="1,1" focus="100%" focussize="" type="gradientRadial" rotate="t"><o:fill type="gradientCenter" v:ext="view"></o:fill></v:fill><v:shadow color="#ddd"></v:shadow><v:textbox inset="4.68pt,2.34pt,4.68pt,2.34pt">
<table cellspacing="0" width="100%" cellpadding="0">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal" align="center" style="TEXT-ALIGN: center; mso-layout-grid-align: none"><strong><span lang="EN-US" style="FONT-SIZE: 15.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: Arial; mso-fareast-font-family: 黑体">FacesServlet</span></strong><strong><span lang="EN-US" style="FONT-SIZE: 15.5pt; COLOR: black; FONT-FAMILY: Arial; mso-bidi-font-family: 黑体; mso-fareast-font-family: 黑体"><o:p></o:p></span></strong></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:oval><w:wrap type="none"></w:wrap><w:anchorlock></w:anchorlock></v:group></span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">五、</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="TEXT-INDENT: 21pt"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang="EN-US" style="FONT-SIZE: 9pt">faces-config.xml </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件中配置受管理的</span><span lang="EN-US" style="FONT-SIZE: 9pt">Bean<o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">六、</span><span lang="EN-US" style="FONT-SIZE: 9pt">Strust</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与</span><span lang="EN-US" style="FONT-SIZE: 9pt">Jsf</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的区别</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="TEXT-INDENT: 13.5pt; mso-char-indent-count: 1.5"><span lang="EN-US" style="FONT-SIZE: 9pt">1</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US" style="FONT-SIZE: 9pt">Struts</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">侧重于控制层，而</span><span lang="EN-US" style="FONT-SIZE: 9pt">JSF</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">则侧重于表示层</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="TEXT-INDENT: 13.5pt; mso-char-indent-count: 1.5"><span lang="EN-US" style="FONT-SIZE: 9pt; mso-bidi-language: HI">2</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-language: HI; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、和</span><span lang="EN-US" style="FONT-SIZE: 9pt">JSP</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对应的</span><span lang="EN-US" style="FONT-SIZE: 9pt">Bean</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不同</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="TEXT-INDENT: 13.5pt; mso-char-indent-count: 1.5"><span lang="EN-GB" style="FONT-SIZE: 9pt; mso-ansi-language: EN-GB">3</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ansi-language: EN-GB; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、数据验证</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="TEXT-INDENT: 13.5pt; mso-char-indent-count: 1.5"><span lang="EN-GB" style="FONT-SIZE: 9pt; mso-ansi-language: EN-GB">4</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ansi-language: EN-GB; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、控制层</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="TEXT-INDENT: 13.5pt; mso-char-indent-count: 1.5"><span lang="EN-GB" style="FONT-SIZE: 9pt; mso-ansi-language: EN-GB">5</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ansi-language: EN-GB; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、页面导航</span><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="TEXT-INDENT: 13.5pt; mso-char-indent-count: 1.5"><span lang="EN-GB" style="FONT-SIZE: 9pt; mso-ansi-language: EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-SIZE: 9pt"><o:p>&nbsp;</o:p></span></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://imagination-fly.javaeye.com/blog/117914#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 29 Aug 2007 11:57:55 +0800</pubDate>
        <link>http://imagination-fly.javaeye.com/blog/117914</link>
        <guid>http://imagination-fly.javaeye.com/blog/117914</guid>
      </item>
      <item>
        <title>Prototype.js文件的使用</title>
        <author>Imagination_Fly</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imagination-fly.javaeye.com">Imagination_Fly</a>&nbsp;
          链接：<a href="http://imagination-fly.javaeye.com/blog/113483" style="color:red;">http://imagination-fly.javaeye.com/blog/113483</a>&nbsp;
          发表时间: 2007年08月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp; 前些日子买了本《征服AJAX-WEB2.0技术详解》开始学习AJAX技术和JAVASCRIPT脚本语言.在书中介绍javascript面向对象章节中接触了一点点prototye1.3.1.js,但由于书上介绍得较浅,又加上小弟刚住那地方没有连到网,一直没有去网上下这个javascript包,然后公司让开发的系统又用到了ajax技术,所以就上网囫囵吞枣的去网上细翻了些资料,看到prototype1.5已经出来了(嘻嘻,可能很多大哥大姐都发现了),也顺便学学1.5的东西.对自己学js提供一个便捷.废话不要太多.今天就聊聊它的一些概念和比较.<br />
</p>
<br />
<p><font size="4" color="#800000">1.&nbsp;Prototype是什么?</font><br />
prototype.js&nbsp;是一个由Sam&nbsp;Stephenson写的JavaScript包。这个构思奇妙编写良好的一段兼容标准的一段代码将承担创造胖客户端，&nbsp;高交互性WEB应用程序的重担。轻松加入Web&nbsp;2.0特性.</p>
<p><font size="4" color="#800000">2.&nbsp;通用性方法</font><br />
这个程序包里面包含了许多预定义的对象和通用性方法。编写这些方法的明显的目的就是为了减少你大量的重复编码和惯用法。<br />
<br />
从Prototype1.5.x版本开始，你可以更方便的如下面代码一样操作DOM对象了:&nbsp;<br />
<br />
<br />
&nbsp;程序代码<br />
<br />
var&nbsp;ele&nbsp;=&nbsp;$(&quot;element&quot;);<br />
ele.hide();&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; //隐藏DOM对象对比从前的版本var&nbsp;ele&nbsp;=&nbsp;$(&quot;element&quot;);<br />
Element.hide(ele);&nbsp;//隐藏DOM对象&nbsp;&nbsp;  <br />
<br />
这样的改变有啥好处呢？&nbsp;我觉得首先是更面向对象了，其次就是便于将来部分IDE里的代码提示<br />
<br />
2.1.&nbsp;使用&nbsp;$()方法<br />
$()&nbsp;方法是在DOM中使用过于频繁的&nbsp;document.getElementById()&nbsp;方法的一个便利的简写，就像DOM方法一样，这个方法返回参数传入的id的那个元素。<br />
<br />
比起DOM中的方法,这个更好一些.我们可以传入多个id作为参数然后&nbsp;$()&nbsp;返回一个带有所有要求的元素的一个&nbsp;Array&nbsp;对象。下面的例子来描述这些.(导入的是1.3)<br />
<br />
&nbsp;程序代码</p>
<br />
<p> </p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span><script src=</span><span class="string">"prototype-1.3.1.js"</span><span>>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><script>  </span></li>
    <li class=""><span><span class="keyword">function</span><span> try1()  </span></span></li>
    <li class="alt"><span>{  </span></li>
    <li class=""><span><span class="keyword">var</span><span> d = $('myDiv');  </span></span></li>
    <li class="alt"><span>alert(d.innerHTML);  </span></li>
    <li class=""><span>}  </span></li>
    <li class="alt"><span>  </span></li>
    <li class=""><span><span class="keyword">function</span><span> try2()  </span></span></li>
    <li class="alt"><span>{  </span></li>
    <li class=""><span><span class="keyword">var</span><span> divs = $('myDiv','myOtherDiv');  </span></span></li>
    <li class="alt"><span><span class="keyword">for</span><span>(i=0; i<divs.length; i++)  </span></span></li>
    <li class=""><span>{  </span></li>
    <li class="alt"><span>alert(divs[i].innerHTML);  </span></li>
    <li class=""><span>}  </span></li>
    <li class="alt"><span>}  </span></li>
    <li class=""><span></script>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>这个方法的另一个好处就是你可以传入id字符串或者元素对象自己，这使得在创建可以传入任何形式参数的方法的时候，&nbsp;它变得非常有用。<br />
<br />
2.2.&nbsp;使用$F()方法<br />
$F()方法是另一个非常受欢迎的简写。它可以返回任何输入表单控件的值，如文本框或下拉框。&nbsp;这个方法可以传入元素的id或者元素自己。<br />
</p>
<p>&nbsp;程序代码</p>
<p> </p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span><script>  </span></span></li>
    <li class=""><span><span class="keyword">function</span><span> try3()  </span></span></li>
    <li class="alt"><span>{  </span></li>
    <li class=""><span>alert( $F('Name') );  </span></li>
    <li class="alt"><span>}  </span></li>
    <li class=""><span></script>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
<p>&nbsp;</p>
<p> 2.3.&nbsp;使用Try.these()方法<br />
Try.these()&nbsp;方法使得实现当你想调用不同的方法直到其中的一个成功正常的这种需求变得非常容易，&nbsp;他把一系列的方法作为参数并且按顺序的一个一个的执行这些方法直到其中的一个成功执行，返回成功执行的那个方法的返回值。<br />
<br />
在下面的例子中，&nbsp;xmlNode.text在一些浏览器中好用，但是xmlNode.textContent在另一些浏览器中正常工作。&nbsp;使用Try.these()方法我们可以得到正常工作的那个方法的返回值。</p>
<p><br />
&nbsp;程序代码</p>
<br />
<p> </p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span><script language=</span><span class="string">"javascript"</span><span>>  </span></span></li>
    <li class=""><span><span class="keyword">function</span><span> getXmlNodeValue(xmlNode){  </span></span></li>
    <li class="alt"><span><span class="keyword">return</span><span> Try.these(  </span></span></li>
    <li class=""><span><span class="keyword">function</span><span>() {</span><span class="keyword">return</span><span> xmlNode.text;},  </span></span></li>
    <li class="alt"><span><span class="keyword">function</span><span>() {</span><span class="keyword">return</span><span> xmlNode.textContent;)  </span></span></li>
    <li class=""><span>);  </span></li>
    <li class="alt"><span>}  </span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<br />
<p>&nbsp;</p>
<p><font size="4" color="#800000">3.&nbsp;Ajax&nbsp;对象</font><br />
上面提到的共通方法非常好，但是面对它吧，它们不是最高级的那类东西。它们是吗？你很可能自己编写了这些甚至在你的脚本里面有类似功能的方法。但是这些方法只是冰山一角。<br />
<br />
我很肯定你对prototype.js感兴趣的原因很可能是由于它的AJAX能力。所以让我们解释当你需要完成AJAX逻辑的时候，这个包如何让它更容易。<br />
<br />
Ajax&nbsp;对象是一个预定义对象，由这个包创建，为了封装和简化编写AJAX&nbsp;功能涉及的狡猾的代码。&nbsp;这个对象包含一系列的封装AJAX逻辑的类。我们来看看它们的一些。<br />
<br />
3.1.&nbsp;使用&nbsp;Ajax.Request类<br />
如果你不使用任何的帮助程序包，你很可能编写了整个大量的代码来创建XMLHttpRequest对象并且异步的跟踪它的进程，&nbsp;然后解析出响应&nbsp;然后处理它。当你不需要支持多于一种类型的浏览器时你会感到非常的幸运。<br />
<br />
为了支持&nbsp;AJAX&nbsp;功能。这个包定义了&nbsp;Ajax.Request&nbsp;类。<br />
<br />
假如你有一个应用程序可以通过url&nbsp;http://yoursever/app/get_sales?empID=1234&amp;year=1998与服务器通信。它返回下面这样的XML&nbsp;响应。</p>
<p>&nbsp;程序代码</p>
<br />
<p> </p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag"><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;utf-8&quot;</span><span>&nbsp;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">ajax-response</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">response</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;object&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;productDetails&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">monthly-sales</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">employee-sales</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">employee-id</span><span class="tag">&gt;</span><span>1234</span><span class="tag"><!--</span--><span class="tag-name">employee-id</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">year-month</span><span class="tag">&gt;</span><span>1998-01</span><span class="tag"><!--</span--><span class="tag-name">year-month</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">sales</span><span class="tag">&gt;</span><span>$8,115.36</span><span class="tag"><!--</span--><span class="tag-name">sales</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span><span class="tag"><!--</span--><span class="tag-name">employee-sales</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span><span class="tag"><!--</span--><span class="tag-name">response</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span><span class="tag"><!--</span--><span class="tag-name">ajax-response</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
</ol>
</div>
<p>&nbsp;</p>
<br />
<p>&nbsp;</p>
<p>用&nbsp;Ajax.Request对象和服务器通信并且得到这段XML是非常简单的。下面的例子演示了它是如何完成的。<br />
<br />
<br />
&nbsp;程序代码</p>
<br />
<p> </p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span><script language=</span><span class="string">"javasript"</span><span>>  </span></span></li>
    <li class=""><span><span class="keyword">function</span><span> searchSales()  </span></span></li>
    <li class="alt"><span>{  </span></li>
    <li class=""><span><span class="keyword">var</span><span> empID = $F('lstEmployees');  </span></span></li>
    <li class="alt"><span><span class="keyword">var</span><span> y = $F('lstYears');  </span></span></li>
    <li class=""><span><span class="keyword">var</span><span> url = 'http:</span><span class="comment">//yoursever/app/get_sales';</span><span>  </span></span></li>
    <li class="alt"><span><span class="keyword">var</span><span> pars = 'empID=' + empID + '&year=' + y;  </span></span></li>
    <li class=""><span><span class="keyword">var</span><span> myAjax = </span><span class="keyword">new</span><span> Ajax.Request(  </span></span></li>
    <li class="alt"><span>url,  </span></li>
    <li class=""><span>{method: 'get', parameters: pars, onComplete: showResponse}  </span></li>
    <li class="alt"><span>);  </span></li>
    <li class=""><span>  </span></li>
    <li class="alt"><span>}  </span></li>
    <li class=""><span>  </span></li>
    <li class="alt"><span><span class="keyword">function</span><span> showResponse(originalRequest)  </span></span></li>
    <li class="alt"><span>{  <span class="comment"></span><span>  <br />
    </span></span></li>
    <li class=""><span>$('result').value = originalRequest.responseText;  </span></li>
    <li class="alt"><span>}  </span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<br />
<p><br />
你看到传入&nbsp;Ajax.Request构造方法的第二个对象了吗？&nbsp;参数{method:&nbsp;'get',&nbsp;parameters:&nbsp;pars, &nbsp;onComplete:&nbsp;showResponse}&nbsp;表示一个匿名对象的真实写法。他表示你传入的这个对象有一个名为&nbsp;method&nbsp;值为 &nbsp;'get'的属性，另一个属性名为&nbsp;parameters&nbsp;包含HTTP请求的查询字符串，和一个onComplete&nbsp;属性/方法包含函数 showResponse。<br />
<br />
还有一些其它的属性可以在这个对象里面定义和设置，如&nbsp;asynchronous，可以为true&nbsp;或&nbsp;false&nbsp;来决定AJAX对服务器的调用是否是异步的（默认值是&nbsp;true）。<br />
<br />
这个参数定义AJAX调用的选项。在我们的例子中，在第一个参数通过HTTP&nbsp;GET命令请求那个url，传入了变量&nbsp;pars包含的查询字符串，&nbsp;Ajax.Request&nbsp;对象在它完成接收响应的时候将调用showResponse&nbsp;方法。<br />
<br />
也 许你知道，&nbsp;XMLHttpRequest在HTTP请求期间将报告进度情况。这个进度被描述为四个不同阶段：Loading,&nbsp;Loaded, &nbsp;Interactive,&nbsp;或&nbsp;Complete。你可以使&nbsp;Ajax.Request&nbsp;对象在任何阶段调用自定义方法&nbsp;，Complete&nbsp;是最常用 的一个。想调用自定义的方法只需要简单的在请求的选项参数中的名为&nbsp;onXXXXX&nbsp;属性/方法中提供自定义的方法对象。&nbsp;就像我们例子中的 &nbsp;onComplete&nbsp;。你传入的方法将会被用一个参数调用，这个参数是&nbsp;XMLHttpRequest&nbsp;对象自己。你将会用这个对象去得到返回的数据 并且或许检查包含有在这次调用中的HTTP结果代码的&nbsp;status&nbsp;属性。<br />
<br />
还有另外两个有用的选项用来处理结果。我们可以在 onSuccess&nbsp;选项处传入一个方法，当AJAX无误的执行完后调用，&nbsp;相反的，也可以在onFailure选项处传入一个方法，当服务器端出现错误 时调用。正如onXXXXX&nbsp;选项传入的方法一样，这两个在被调用的时候也传入一个带有AJAX请求的XMLHttpRequest对象。<br />
<br />
我们的例子没有用任何有趣的方式处理这个&nbsp;XML响应，&nbsp;我们只是把这段XML放进了一个文本域里面。对这个响应的一个典型的应用很可能就是找到其中的想要的信息，然后更新页面中的某些元素，&nbsp;或者甚至可能做某些XSLT转换而在页面中产生一些HTML。<br />
<br />
3.2.&nbsp;使用&nbsp;Ajax.Updater&nbsp;类<br />
如果你的服务器的另一端返回的信息已经是HTML了，那么使用这个程序包中&nbsp;Ajax.Updater&nbsp;类将使你的生活变得更加得容易。用它你只需提供哪一个元素需要被AJAX请求返回的HTML填充就可以了，例子比我写说明的更清楚。<br />
<br />
<br />
&nbsp;程序代码</p>
<p> </p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span><script language="javascript“>  </span></span></li>
    <li class=""><span><span class="keyword">function</span><span> getHTML()  </span></span></li>
    <li class="alt"><span>{  </span></li>
    <li class=""><span><span class="keyword">var</span><span> url = 'http:</span><span class="comment">//yourserver/product/getSomeHTML';</span><span>  </span></span></li>
    <li class="alt"><span><span class="keyword">var</span><span> pars = 'someParameter=ABC';  </span></span></li>
    <li class=""><span>  </span></li>
    <li class="alt"><span><span class="keyword">var</span><span> myAjax = </span><span class="keyword">new</span><span> Ajax.Updater('placeholder', url, {method: 'get', parameters: pars});  </span></span></li>
    <li class=""><span>  </span></li>
    <li class="alt"><span>}  </span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
<p>&nbsp;</p>
<p>你可以看到，这段代码比前面的例子更加简洁，不包括&nbsp;onComplete&nbsp;方法，但是在构造方法中传入了一个元素id。&nbsp;我们来稍稍修改一下代码来描述如何在客户端处理服务器段错误成为可能。<br />
<br />
我们将加入更多的选项，&nbsp;指定处理错误的一个方法。这个是用&nbsp;onFailure&nbsp;选项来完成的。<br />
<br />
我 们也指定了一个&nbsp;placeholder&nbsp;只有在成功请求之后才会被填充。为了完成这个目的我们修改了第一个参数从一个简单的元素id到一个带有两个属性 的对象，&nbsp;success&nbsp;(一切OK的时候被用到)&nbsp;和&nbsp;failure&nbsp;(有地方出问题的时候被用到)&nbsp;在下面的例子中没有用到failure属性， 而仅仅在&nbsp;onFailure&nbsp;处使用了&nbsp;reportError&nbsp;方法。<br />
<br />
<br />
&nbsp;程序代码</p>
<p>
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span>&lt;script&nbsp;language=</span><span class="string">&quot;javascript&quot;</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">function</span><span>&nbsp;getHTML()&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>{&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;url&nbsp;=&nbsp;'http:</span><span class="comment">//yourserver/product/getSomeHTML';</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;pars&nbsp;=&nbsp;'someParameter=ABC';&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;myAjax&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Ajax.Updater(&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>{success:&nbsp;'placeholder'},&nbsp;&nbsp;</span></li>
    <li class=""><span>url,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>{method:&nbsp;'get',&nbsp;parameters:&nbsp;pars,&nbsp;onFailure:&nbsp;reportError});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">function</span><span>&nbsp;reportError(request)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>alert('Sorry.&nbsp;There&nbsp;was&nbsp;an&nbsp;error.');&nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&lt;/script&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
</p>
<p> </p>
相对应的HTML代码自己加上
          <br/><br/>
          <span style="color:red;">
            <a href="http://imagination-fly.javaeye.com/blog/113483#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 17 Aug 2007 13:50:44 +0800</pubDate>
        <link>http://imagination-fly.javaeye.com/blog/113483</link>
        <guid>http://imagination-fly.javaeye.com/blog/113483</guid>
      </item>
      <item>
        <title>正则表达式描述</title>
        <author>Imagination_Fly</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imagination-fly.javaeye.com">Imagination_Fly</a>&nbsp;
          链接：<a href="http://imagination-fly.javaeye.com/blog/113446" style="color:red;">http://imagination-fly.javaeye.com/blog/113446</a>&nbsp;
          发表时间: 2007年08月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><em><strong><font size="4" color="#800000">正则表达式regular expression</font></strong></em></p>
<p>正则表达式就是检查表达式符不符合规定.正则表达式有一个功能十分强大而又十分复杂的对象RegExp，在JavaScript1.2 版本以上提供。<br />
下面我们来看有关正则表达式的介绍：<br />
正则表达式对象用来规范一个规范的表达式(也就是表达式符不符合特定的要求，譬如是不是正确Email地址格式等)，它具有用来检查给出的字符串是否符合规则的属性和方法。除此之外，你用RegExp构造器建立的个别正则表达式对象的属性，就已经预先定义好了正则表达式对象的静态属性，我们随时可以使用它们。<br />
核心对象：<br />
在JavaScript 1.3以后版本增加了toSource方法。<br />
建立方法：<br />
文字格式或RegExp构造器函数。<br />
文字建立格式使用以下格式：<br />
/pattern/flags即/模式/标记</p>
<p>构造器函数方法使用方法如下：<br />
new RegExp(&quot;pattern&quot;[, &quot;flags&quot;])即new RegExp(&quot;模式&quot;[,&quot;标记&quot;])</p>
<p>参数：<br />
pattern(模式)<br />
表示正则表达式的文本</p>
<p>flags(标记)<br />
如果指定此项，flags可以是下面值之一：<br />
g: global match(全定匹配)<br />
i: ignore case(忽略大小写)<br />
gi: both global match and ignore case(匹配所有可能的值，也忽略大小写)</p>
<p>注意：文本格式中的参数不要使用引号标记，而构造器函数的参数则要使用引号标记。所以下面的表达式建立同样的正则表达式：<br />
/hell+0/world<br />
new RegExp(&quot;hell+o&quot;, &quot;world&quot;)</p>
<p>描述：<br />
当使用构造函数的时候，必须使用正常的字符串避开规则(在字符串中加入前导字符\ )是必须的。<br />
例如，下面的两条语句是等价的：<br />
re = new RegExp(&quot;<a href="file:////w">\\w</a>+&quot;)<br />
re = /\w+/</p>
<p>下面提供了在正则表达式中能够使用的完整对特殊字符的一个完整的列表和描述。</p>
<p>1.1：正则表达式中的特殊字符：</p>
<p>字符\<br />
意义：对于字符，通常表示按字面意义，指出接着的字符为特殊字符，\不作解释。<br />
eg：/b/匹配字符'b',通过在b 前面加一个反斜杠\，也就是/\b/，则该字符变成特殊字符，表示匹配一个单词的分界线。<br />
或者： <br />
对于几个字符，通常说明是特殊的，指出紧接着的字符不是特殊的，而应该按字面解释。<br />
eg1：*是一个特殊字符，匹配任意个字符(包括0个字符)；</p>
<p>eg2：/a*/意味匹配0个或多个a。<br />
为了匹配字面上的*，在a前面加一个反斜杠；例如：/a\*/匹配'a*'。</p>
<p>字符^<br />
意义：表示匹配的字符必须在最前边。<br />
例如：/^A/不匹配&quot;an A,&quot;中的'A'，但匹配&quot;An A.&quot;中最前面的'A'。</p>
<p>字符$<br />
意义：与^类似，匹配最末的字符。<br />
例如：/t$/不匹配&quot;eater&quot;中的't'，但匹配&quot;eat&quot;中的't'。</p>
<p>字符*<br />
意义：匹配*前面的字符0次或n次。<br />
例如:/bo*/匹配&quot;A fast booooed&quot;中的'boooo'或&quot;A bird warbled&quot;中的'b'，但不匹配&quot;A fast grunted&quot;中的任何字符。</p>
<p>字符+<br />
意义：匹配+号前面的字符1次或n次。等价于{1,}。<br />
例如：/a+/匹配&quot;candy&quot;中的'a'和&quot;caaaaaaandy.&quot;中的所有'a'。</p>
<p>字符?<br />
意义：匹配?前面的字符0次或1次。<br />
例如：/e?le?/匹配&quot;angel&quot;中的'el'和&quot;angle.&quot;中的'le'。</p>
<p><strong><font size="4" color="#800000">字符</font></strong><br />
意义：(小数点)匹配除换行符外的所有单个的字符。<br />
例如：/.n/匹配&quot;nay, an apple is on the tree&quot;中的'an'和'on'，但不匹配'nay'。</p>
<p><br />
字符(x)<br />
意义：匹配'x'并记录匹配的值。<br />
例如：/(too)/匹配和记录&quot;too bar.&quot;中的'too'。匹配子串能被结果数组中的素[1], ..., [n] 返回，或被RegExp对象的属性$1, ..., $9返回。</p>
<p>字符xy<br />
意义：匹配'x'或者'y'。<br />
例如：/greenred/匹配&quot;green apple&quot;中的'green'和&quot;red apple.&quot;中的'red'。</p>
<p>字符{n}<br />
意义：这里的n是一个正整数。匹配前面的n个字符。<br />
例如：/a{2}/不匹配&quot;candy,&quot;中的'a'，但匹配&quot;caandy,&quot; 中的所有'a'和&quot;caaandy.&quot;中前面的两个'a'。</p>
<p>字符{n,}<br />
意义：这里的n是一个正整数。匹配至少n个前面的字符。<br />
例如：/a{2,}不匹配&quot;candy&quot;中的'a'，但匹配&quot;caandy&quot;中的所有'a'和&quot;caaaaaaandy.&quot;中的所有'a'</p>
<p>字符{n,m}<br />
意义：这里的n和m都是正整数。匹配至少n个最多m个前面的字符。<br />
例如：/a{1,3}/不匹配&quot;cndy&quot;中的任何字符，但匹配 &quot;candy,&quot;中的'a'，&quot;caandy,&quot; 中的前面两个'a'和&quot;caaaaaaandy&quot;中前面的三个'a'，注意：即使&quot;caaaaaaandy&quot; 中有很多个'a'，但只匹配前面的三个'a'即&quot;aaa&quot;。</p>
<p>字符[xyz]<br />
意义：一字符列表，匹配列出中的任一字符。你可以通过连字符-指出一个字符范围。<br />
例如：[abcd]跟[a-c]一样。它们匹配&quot;brisket&quot;中的'b'和&quot;ache&quot;中的'c'。</p>
<p>字符[^xyz]<br />
意义：一字符补集，也就是说，它匹配除了列出的字符外的所有东西。 你可以使用连字符-指出一字符范围。<br />
例如：[^abc]和[^a-c]等价，它们最早匹配&quot;brisket&quot;中的'r'和&quot;chop.&quot;中的'h'。</p>
<p>字符[\b]<br />
意义：匹配一个空格(不要与\b混淆)</p>
<p>字符\b<br />
意义：匹配一个单词的分界线，比如一个空格(不要与[\b]混淆)<br />
例如：/\bn\w/匹配&quot;noonday&quot;中的'no'，/\wy\b/匹配&quot;possibly yesterday.&quot;中的'ly'。</p>
<p>字符\B<br />
意义：匹配一个单词的非分界线<br />
例如：/\w\Bn/匹配&quot;noonday&quot;中的'on'，/y\B\w/匹配&quot;possibly yesterday.&quot;中的'ye'。</p>
<p>字符\cX<br />
意义：这里的X是一个控制字符。匹配一个字符串的控制字符。<br />
例如：/\cM/匹配一个字符串中的control-M。</p>
<p>字符\d<br />
意义：匹配一个数字，等价于[0-9]。<br />
例如：/\d/或/[0-9]/匹配&quot;B2 is the suite number.&quot;中的'2'。</p>
<p>字符\D<br />
意义：匹配任何的非数字，等价于[^0-9]。<br />
例如：/\D/或/[^0-9]/匹配&quot;B2 is the suite number.&quot;中的'B'。</p>
<p>字符\f<br />
意义：匹配一个表单符</p>
<p>字符\n<br />
意义：匹配一个换行符</p>
<p>字符\r<br />
意义：匹配一个回车符</p>
<p>字符\s<br />
意义：匹配一个单个white空格符，包括空格，tab，form feed，换行符，等价于[ \f\n\r\t\v]。<br />
例如：/\s\w*/匹配&quot;foo bar.&quot;中的' bar'。</p>
<p>字符\S<br />
意义：匹配除white空格符以外的一个单个的字符，等价于[^ \f\n\r\t\v]。<br />
例如：/\S/\w*匹配&quot;foo bar.&quot;中的'foo'。</p>
<p>字符\t<br />
意义：匹配一个制表符</p>
<p>字符\v<br />
意义：匹配一个顶头制表符</p>
<p>字符\w<br />
意义：匹配所有的数字和字母以及下划线，等价于[A-Za-z0-9_]。<br />
例如：/\w/匹配&quot;apple,&quot;中的'a'，&quot;$5.28,&quot;中的'5'和&quot;3D.&quot;中的'3'。</p>
<p>字符\W <br />
意义：匹配除数字、字母外及下划线外的其它字符，等价于[^A-Za-z0-9_]。<br />
例如：/\W/或者/[^$A-Za-z0-9_]/匹配&quot;50%.&quot;中的'%'。</p>
<p>字符\n<br />
意义：这里的n是一个正整数。匹配一个正则表达式的最后一个子串的n的值(计数左圆括号)。</p>
<p>例如：/apple(,)\sorange\1/匹配&quot;apple, orange, cherry, peach.&quot;中的'apple, orange'，下面有一个更加完整的例子。<br />
注意：如果左圆括号中的数字比\n指定的数字还小，则\n取下一行的八进制escape作为描述。</p>
<p>字符\ooctal和\xhex<br />
意义：这里的\ooctal是一个八进制的escape值，而\xhex是一个十六进制的escape值，允许在一个<br />
正则表达式中嵌入ASCII码。</p>
<p><br />
当表达式被检查的时候，文字符号提供了编辑正则表达式的方法。利用文字符号可以使到正则表达<br />
式保持为常数。例如，如果你在一个循环中使用文字符号来构造一个正则表达式，正则表达式不需进行<br />
反复编译。<br />
正则表达式对象构造器，例如，new RegExp(&quot;ab+c&quot;)，提供正则表达式的运行时编译。当你知道正<br />
则表达式的模式会变化的时候，应该使用构造函数，或者你不知道正则表达式的模式，而它们是从另外<br />
的源获得的时候，比如由用户输入时。一旦你定义好了正则表达式，该正则表达式可在任何地方使用，<br />
并且可以改变，你可以使用编译方法来编译一个新的正则表达式以便重新使用。<br />
一个分离预先定义的RegExp对象可以在每个窗口中使用；也就是说，每个分离的JavaScript线程运<br />
行以获得自己的RegExp对象。因为每个脚本在一个线程中是不可中断的，这就确保了不同的脚本不会覆<br />
盖RegExp对象的值。<br />
预定义的RegExp对象包含的静态属性：input, multiline, lastMatch,lastParen, leftContext, <br />
rightContext, 以及从$1到$9。input和multiline属性能被预设。其它静态属性的值是在执行个别正则<br />
表达式对象的exec和test方法后，且在执行字符串的match和replace方法后设置的。</p>
<p><strong><font size="4" color="#800000">属性</font></strong><br />
注意RegExp对象的几个属性既有长名字又有短名字(象Perl)。这些名字都是指向相同的值。Perl是<br />
一种编程语言，而JavaScript模仿了它的正则表达式。</p>
<p>属性$1, ..., $9<br />
取得匹配的子串，如果有的话</p>
<p>属性$_<br />
参考input</p>
<p>属性$*<br />
参考multiline</p>
<p>属性$&amp;<br />
参考lastMatch</p>
<p>属性$+<br />
参考lastParen</p>
<p>属性$`<br />
参考leftContext</p>
<p>属性$'<br />
参考rightContext</p>
<p>属性constructor<br />
指定用来建立对象原型函</p>
<p>属性global<br />
决定是否测试正则表达式是否不能匹配所有的字符串，或者只是与最先的冲突。</p>
<p>属性ignoreCase<br />
决定试图匹配字符串的时候是否忽略大小写</p>
<p>属性input<br />
当正则表达式被匹配的时候，为相反的字符串。</p>
<p>属性lastIndex<br />
决定下一次匹配从那里开始</p>
<p>属性lastMatch<br />
最后一个匹配的字符</p>
<p>属性lastParen<br />
子串匹配的时候，最后一个parenthesized，如果有的话。</p>
<p>属性leftContext<br />
最近一次匹配前的子串。</p>
<p>属性multiline<br />
是否在串的多行中搜索。</p>
<p>属性prototype<br />
允许附加属性到所有的对象</p>
<p>属性rightContext<br />
最近一次匹配后的的子串。</p>
<p>属性source<br />
模式文本</p>
<p><font size="4"><strong><font color="#993300">方法</font></strong></font><br />
compile方法<br />
编译一个正则表达式对象</p>
<p>exec方法<br />
运行正则表达式匹配</p>
<p>test方法<br />
测试正则达式匹配</p>
<p>toSource方法<br />
返回一个对象的文字描述指定的对象；你可以使用这个值来建立一个新的对象。不考虑Object.toS<br />
ource方法。</p>
<p>toString方法<br />
返回一个字符串描述指定的对象，不考虑Object.toString对象。</p>
<p>valueOf方法<br />
返回指定对角的原始值。不考虑Object.valueOf方法。</p>
<p>　另外，这个对象继承了对象的watch和unwatch方法</p>
<p><font size="5" color="#808000">Example：</font><br />
eg１、下述示例脚本使用replace方法来转换串中的单词。在替换的文本中，脚本使用全局 RegExp<br />
对象的$1和$2属性的值。注意，在作为第二个参数传递给replace方法的时候，RegExp对象的$属性的名<br />
称。<br />
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br />
re = /(\w+)\s(\w+)/;<br />
str = &quot;World Hello&quot;;<br />
newstr=str.replace(re,&quot;$2, $1&quot;);<br />
document.write(newstr)<br />
&lt;/SCRIPT&gt;<br />
显示结果：&quot;Hello,World&quot;. </p>
<p>　　eg２、下述示例脚本中，RegExp.input由onChange事件处理句柄设置。在getInfo函数中，exec 方法<br />
使用RegExp.input的值作为它的参数，注意RegExp预置了$属性。</p>
<p>&lt;html&gt;<br />
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br />
function getInfo(age)<br />
{<br />
re = /(\w+)\s(\d+)/;<br />
re.exec(age.value);<br />
window.alert(RegExp.$1 + &quot;, your age is &quot; + RegExp.$2);<br />
}<br />
&lt;/SCRIPT&gt;<br />
请输入你的姓和年龄，输入完后按回车键。<br />
&lt;FORM&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type=&quot;text&quot; name=&quot;Age&quot; onChange=&quot;getInfo(this);&quot;/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/FORM&gt;<br />
&lt;/html&gt;</p>
<p><br />
$1, ..., $9属性<br />
用圆括号括着的匹配子串，如果有的话。是RegExp的属性静态，只读</p>
<p>在JavaScript 1.2, NES 3.0以上版本提供<br />
描述：因为input是静态属性，不是个别正则表达式对象的属性。你可以使用RegExp.input 访问该属性。</p>
<p>能加上圆括号的子串的数量不受限制，但正则表达式对象只能保留最后9 条。如果你要访问所有的圆括号内的匹配字串，你可以使用返回的数组。</p>
<p>这些属性能用在RegExp.replace方法替换后的字符串(输出结果)。当使用这种方式的时候，不用预先考虑RegExp对象。下面给出例子。当正则表达式中没有包含圆括号的时候，该脚本解释成$n的字面意<br />
义。(这里的n是一个正整数)。</p>
<p><br />
例如：<br />
下例脚本使用replace 方法来交换串中单词的位置。在替换后的文本字串中，脚本使用正则表达式<br />
RegExp对象的$1和$2属性的值。注意：当它们向replace方法传递参数的时候，这里没有考虑 $ 属性的<br />
RegExp对象的名称。<br />
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br />
re = /(\w+)\s(\w+)/;<br />
str = &quot;World Hello&quot;;<br />
newstr=str.replace(re,&quot;$2, $1&quot;);<br />
document.write(newstr)<br />
&lt;/SCRIPT&gt;<br />
显示的输出结果为：Hello,World。<br />
以下这些不是正则表达式的新增对象请参阅对应的JavaScript对象的属性 $_属性 参考input $*属性<br />
参考multiline $&amp;属性 参考lastMatch $+属性 参考lastParen $`属性<br />
参考leftContext $'属性 参考rightContext compile方法 在脚本运行期间编译正则表达式对象属于RegExp的方法 在JavaScript 1.2, NES 3.0以上版本提供 语法：<br />
regexp.compile(pattern[, flags]) 以数： regexp 正则表达式的名称，可以是变量名或文字串。 <br />
pattern 正则表达式的定义文本。 flags 如果指定的话，可以是下面其中的一个： &quot;g&quot;: 匹配所有可能的字串&quot;i&quot;: 忽略大小写 &quot;gi&quot;: 匹配所有可能的字串及忽略大小写 描述：<br />
使用compile方法来编译一个正则表达式 created with the RegExp constructor function。这样就强制正则表达式只编译一次，而不是每次遇到正则表达式的时候都编译一次.当你确认正则表达式能保持不变的时候可使用compile 方法来编译它(在获得它的匹配模式后)，这样就可以在脚本中重复多次使用它.你亦可以使用compile 方法来改变在运行期间改变正则表达式。例如，假如正则表达式发生变化，你可以使用compile方法来重新编译该对象来提高使用效率。使用该方法将改变正则表达式的source, global和ignoreCasesource属性的值。 constructor 指出建立对象原型的function。注意这个属性的值由函数本身提供，而不是一个字串包含RegExp的name.Property提供。 <br />
</p>
<p> 在JavaScript 1.1, NES 2.0以上版本提供 ECMA版本ECMA-262 描述：参考Object.constructor.<br />
exec方法 在指定的字符串运行匹配搜索。返回一个结果数组。 是RegExp的方法 <br />
在JavaScript 1.2, NES 3.0以上版本提供 语法： regexp.exec([str])regexp([str])<br />
参数： regexp，正则表达式的名称，可以是一个变量名或文字定义串str，要匹配正则表达式的字符串，如果省略，将使用RegExp.input的值。 <br />
描述：就如在语法描述中的一样，正则表达工的exec方法能够被直接调用(使用regexp.exec(str))或者间接调用(使用regexp(str))。<br />
假如你只是运行以找出是否匹配，可以使用String搜索方法。<br />
假如匹配成功，exec方法返回一个数组并且更新正则表达式对象属性的值和预先定义的正则表达式对象、RegExp。如果匹配失败，exec方法返回null。<br />
请看下例： &lt;SCRIPT LANGUAGE=&quot;JavaScript1.2&quot;&gt; //匹配一个b接着一个或多个d，再接着一个b//忽略大小myRe=/d(b+)(d)/ig; myArray = myRe.exec(&quot;cdbBdbsbz&quot;);<br />
&lt;/SCRIPT&gt; 下面是该脚本的返回值：对象 属性/Index 描述 例子 <br />
myArray</p>
<p>myArray的内容 [&quot;dbBd&quot;, &quot;bB&quot;, &quot;d&quot;] <br />
index<br />
基于0的匹配index 1 <br />
input<br />
原始字符串 cdbBdbsbz <br />
[0]<br />
最后匹配的字符 dbBd <br />
[1], ...[n]<br />
用圆括号括住的匹配字符串，如果有的话。不限制括号的个数。 [1] = bB<br />
[2] = d <br />
myRe<br />
lastIndex 开始下次匹配操作的index值 5 ignoreCase<br />
指出&quot;i&quot;是否使用以忽略大小写 true global<br />
指出是否使用&quot;g&quot;标记来进行匹配所有可能的字串 true source<br />
定义模式的文本字符串 d(b+)(d) RegExp lastMatch$&amp;<br />
最后匹配的字符 dbBd leftContext$\Q<br />
最新匹配前面的子串 c rightContext$'<br />
最新匹配后面的子串 bsbz $1, ...$9<br />
圆括号内的匹配子串，如果有的话。圆括号的个数不受限制，但RegExp只能保留最后9个 $1 = bB $2 = d <br />
lastParen $+<br />
最后一个加上圆括号的匹配子串，如果有的话 d </p>
<p>假如你的正则表达式使用了&quot;g&quot;标记，你可以多次使用exec 方法来连续匹配相同的串。当你这样做<br />
的时候，新的匹配将从由正则表达式的lastIndex 属性值确定的子串中开始。例如，假定你使用下面的脚本：<br />
&lt;SCRIPT LANGUAGE=&quot;JavaScript1.2&quot;&gt; myRe=/ab*/g;str = &quot;abbcdefabh&quot;<br />
myArray = myRe.exec(str);<br />
document.writeln(&quot;Found &quot;+myArray[0]+&quot;. Next match starts at &quot;+myRe.lastIndex)<br />
mySecondArray = myRe.exec(str);<br />
document.writeln(&quot;Found &quot;+mySecondArray[0]+&quot;. Next match starts at &quot;+myRe.lastIndex)<br />
&lt;/SCRIPT&gt; 这个脚本显示如下结果： Found abb. Next match starts at 3<br />
Found ab. Next match starts at 9 例子：<br />
在下面的例子中，用户输入一个名字，脚本根据输入执行匹配操作。接着检查数组看是否和其它用户的名字匹配。<br />
本脚本假定已注册的用户的姓已经存进了数组A中，或许从一个数据库中取得。 &lt;HTML&gt;<br />
&lt;SCRIPT LANGUAGE=&quot;JavaScript1.2&quot;&gt; A = [&quot;zhao&quot;,&quot;qian&quot;,&quot;sun&quot;,&quot;li&quot;,&quot;liang&quot;]<br />
function lookup() { firstName = /\w+/i(); if (!firstName)<br />
window.alert (RegExp.input + &quot;非法输入&quot;); else { count=0;<br />
for (i=0;i 输入你的姓然后按回车键。<br />
&lt;FORM&gt;&lt;INPUT TYPE:&quot;TEXT&quot; NAME=&quot;FirstName&quot; onChange=&quot;lookup(this);&quot;&gt;&lt;/FORM&gt;<br />
&lt;/HTML&gt;</p>
<p>&nbsp;global属性 正则表达式中是否使用了&quot;g&quot;标记。 RegExp属性，只读<br />
在JavaScript 1.2, NES 3.0以上版本提供 描述： global是一个个别正则表达式对象的属性<br />
如果使用了&quot;g&quot;标记，global的值为true；否则为 false。&quot;g&quot;标记指定正则表达式测试所有可能的匹配。<br />
你不能直接改变该属性的值，但可以调用compile方法来改变它。 ignoreCase 检查正则表达式是否使用了&quot;i&quot;标记<br />
RegExp属性，只读 在JavaScript 1.2, NES 3.0以上版本提供 描述：<br />
ignoreCase是个别正则表达式对象的一个属性。<br />
如果使用了&quot;i&quot;标记，则返回true，否则返回false。&quot;i&quot;标记指示在进行匹配的时候忽略大小写。<br />
你不能直接改变该属性的值，但可以通过调用compile方法来改变它 input 指出正则表达式要测试那个字串。$_是这个属性的另一个名字。<br />
RegExp的属性，静态 在JavaScript 1.2, NES 3.0以上版本提供 <br />
描述：因为input是静态的，不是某个个别的正则表达式对象的属性。你也可以使用 RegExp.input来表示。<br />
如果没有给正则表达式的exec或test方法提供字符串，并且RegExp.input中有值，则使用它的值来调用该方法。<br />
脚本或浏览器能够预置input属性。如果被预置了值且调用exec或 test方法的时候没有提供字符串<br />
则调用exec或test的时候使用input的值。input可以被浏览器以下面的方式设置：<br />
当text表单域处理句柄被调用的时候，input被设置为该text输入的字串。<br />
当textarea表单域处理句柄被调用的时候，input被设置为textarea域内输入的字串。注意multili<br />
ne亦被设置成true从而能匹配多行文本。 当select表单域处理句柄被调用的时候，input被设置成selected text的值。<br />
当链接对象的处理句柄被调用的时候，input被设置成&lt;A HREF=...&gt;和&lt;/A&gt;之间的字符串。<br />
事件理现句柄处理完毕后，input属性的值被清除。 lastIndex 可读/可写的一个整数属性，指出下一次匹配从哪里开始。<br />
RegExp的属性 在JavaScript 1.2, NES 3.0以上版本提供 <br />
描述：lastIndex 是个别的正则表达式对象的属性。 这个属性只有当正则表达式的&quot;g&quot;标记被使用以进行全串匹配的时候才被设置。实行以下规则：<br />
如果lastIndex大小字符串的长度，regexp.test和regexp.exec失败，且lastIndex被设为0。<br />
如果lastIndex等于字串的长度且正则表达式匹配空字符串，则正则表达式从lastIndex的位置开始匹配。<br />
如果lastIndex等于字符串的长度且正则表达式不匹配空字符串，则正则表达式不匹配input，且lastIndex被置为0。<br />
否则，lastIndex被设置成最近一次匹配的下一点。 例如，按下面的顺序执行脚本： re = /(hi)?/g 匹配空字符串 <br />
re(&quot;hi&quot;) 返回[&quot;hi&quot;, &quot;hi&quot;]，lastIndex置为2 <br />
re(&quot;hi&quot;) 返回[&quot;&quot;]，一个空数组，它的下标为0的元素就是匹配字符串。在这种情况下，返回空<br />
串是因为lastIndex等于2(且仍然是2)，并且&quot;hi&quot;的长度也是2。 lastMatch 最后一次匹配字符串，$&amp;是同样的意思。<br />
RegExp的属性，静态，只读 在JavaScript 1.2, NES 3.0以上版本提供 <br />
描述：因为lastMatch是静态的，所以它不是个别指定正则表达式的属性。你也可以使用RegExp.lastMatch。 lastParen<br />
最后一次加上括号的匹配字符串，如果有的话。$+是同样的意思。 RegExp属性，静态，只读<br />
在JavaScript 1.2, NES 3.0以上版本提供 <br />
描述：因为lastParen是静态的，它不是某个个别正则式的属性，你可以使用RegExp.lastParen 表达同样的意思。<br />
leftContext 最近一次匹配前面的子串，$`具有相同的意思。 RegExp的属性，静态，只读<br />
在JavaScript 1.2, NES 3.0以上版本提供 <br />
描述：因为leftContext是静态的，不是某一个正则表达式的属性，所以可以使用RegExp.leftContext来表达想同的意思。<br />
multiline 反映是否匹配多行文本，$*是相同的意思。 RegExp的属性，静态<br />
在JavaScript 1.2, NES 3.0以上版本提供 <br />
描述：因为multiline是静态的，而不是某个个别正则表达式的属性，所以能够用RegExp.multiline表达相同的意思。<br />
如果允许匹配多行文本，则multiline为true，如果搜索必须在换行时停止，则为false。<br />
脚本或浏览器能够设置multiline属性。当一个textarea的事件处理句柄被调用的时候，multiline<br />
被置为true。在事件处理句柄处理完毕后，multiline属性值被清除。也就是说，如果你设置了multili<br />
ne为true，则执行任何的事件处理句柄后，multiline被置为false。 prototype <br />
描绘类的原型。你可以根据要求使用prototype来增加类的属性或方法。为了获得prototypes 的资<br />
料，请参阅RegExp的Function.prototype.Property属性。 从JavaScript 1.1, NES 2.0版本开始提供<br />
ECMA版本ECMA-262 rightContext 最后一次匹配的右边的字符串，$'是同样的效果。<br />
RegExp的属性，静态，只读 从 JavaScript 1.2, NES 3.0以上版本开始提供 <br />
描述：因为rightContext是静态的，不是某个个别正则表达工的属性，可以使用RegExp.rightContext来达到相同的效果。<br />
source 一个只读属性，包含正则表达式定义的模式，不包侨forward slashes和&quot;g&quot;或&quot;i&quot;标记。 RegExp的属性，只读<br />
从JavaScript 1.2, NES 3.0以上版本开始提供 <br />
描述：source是个别正则表达式对象的属性，你不能直接改变它的值，但可以通过调用compile 方法来改变它。 test<br />
执行指定字符串的正则表达式匹配搜索，返回true或false。 RegExp的方法<br />
从JavaScript 1.2, NES 3.0以上版本开始提供 </p>
<p>语法：regexp.test([str])<br />
参数：regexp，正则表达式的名称，可以是变量名或正则表达式定义文字串<br />
str，要匹配的字符串，如果省略，将使用RegExp.input的值为作参数<br />
描述：当你需要知道一个字符串能否匹配某个正则表达工，可以使用test方法(与String.search方<br />
法类似)； 为了获得更多的信息(但速度将变慢)，可以使用exec方法(与String.match方法类似)。 例子：下面的例子显示test是否成功的提示：<br />
function testinput(re, str){<br />
if (re.test(str)) midstring = &quot; contains &quot;;<br />
else midstring = &quot; does not contain &quot;;<br />
document.write (str + midstring + re.source); } toSource <br />
返回一个字符串象征对象的源码 RegExp的方法 从JavaScript 1.3以上版本开始提供 </p>
<p>语法：toSource()<br />
参数：没有 描述：toSource方法返回下述的值： 对于内置的RegExp对象，toSource返回下面的字符象征源码不可用：<br />
function Boolean(){ [native code] }<br />
在RegExp场合中, toSource返回象征源码的字符串，通常这个方法是由JavaScript内部自动调用而不是不代码中显式调用。<br />
更多请看Object.toSource toString 返回描绘指定对象的字符串。 RegExp的方法<br />
从JavaScript 1.1, NES 2.0开始提供 ECMA版本ECMA-262 语法：toString() 参数：无<br />
描述：RegExp对象不考虑Object对象的toString方法；它不继承Object.toString，对于RegExp 对<br />
象，toString方法返回一个代表该对象的字符串。 例如：下面的例子显示象征RegExp对象的字符串<br />
myExp = new RegExp(&quot;a+b+c&quot;); alert(myExp.toString())<br />
displays &quot;/a+b+c/&quot; 更多请看：Object.toString valueOf 返回一个RegExp对象的原始值<br />
RegExp的方法 从JavaScript 1.1版本开始提供 ECMA版本：ECMA-262 语法：valueOf()<br />
参数：无 描述：RegExp的valueOf方法以字符串形式返回RegExp对象的原始值，这个值与RegExp.toString相等。<br />
该方法通常由JavaScript内部自动调用而不是显式调用 例子： myExp = new RegExp(&quot;a+b+c&quot;);<br />
alert(myExp.valueOf()) displays &quot;/a+b+c/&quot;</p>
eg：/apple(,)\sorange\1/匹配&quot;apple, orange, cherry, peach.&quot;中的'apple, orange,'，下面有一个更加完整的例子。注意：如果左圆括号中的数字比n指定的数字还小，则n取下一行的八进制escape作为描述。<br />
字符ooctal和xhex<br />
意义：这里的ooctal是一个八进制的escape值，而xhex是一个十六进制的escape值，允许在一个正则表达式中嵌入ASCII码。!/^\s*[\w.-]{5,15}\s*$/.test(str);&nbsp;&nbsp; //是否合法字符<br />
!/[^ \w\u4E00-\u9FA5-]/.test(str);&nbsp;&nbsp; //是否为正规字符(含中文)<br />
!/[u00-uFF]/.test(str);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //是否含有中文<br />
!/[\x00-\xff]/.test(str);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //是否含有中文
<p>function String.prototype.isGood(){return !/[^\w.-]{3,15}/g.test(this);}<br />
function String.prototype.Trim() {return this.replace(/(^\s*)(\s*$)/g,&quot;&quot;);}<br />
function String.prototype.Ltrim(){return this.replace(/(^\s*)/g, &quot;&quot;);}<br />
function String.prototype.Rtrim(){return this.replace(/(\s*$)/g, &quot;&quot;);}<br />
function String.prototype.isEmail(){<br />
&nbsp; return new RegExp(/^\w+((-\w+)(\.\w+))*\@[A-Za-z0-9]+((\.-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(this);}</p>
<p>//检查是否为任意数（实数）<br />
function isNumeric(strNumber) {<br />
&nbsp;var newPar=/^(-\+)?\d+(\.\d+)?$/<br />
&nbsp;alert(newPar.test(strNumber));}<br />
//检查是否为正数<br />
function isUnsignedNumeric(strNumber) {<br />
&nbsp;var newPar=/^\d+(\.\d+)?$/<br />
&nbsp;alert(newPar.test(strNumber)); }<br />
大于零的正整数&nbsp; /^[1-9]\d*$/<br />
大于零的正数&nbsp;&nbsp;&nbsp; /^([1-9]\d*(\.\d*[1-9])?)(0\.\d*[1-9])$/<br />
//检查是否为整数<br />
function isInteger(strInteger) {<br />
&nbsp;var newPar=/^(-\+)?\d+$/<br />
&nbsp;alert(newPar.test(strInteger)); }<br />
//检查是否为正整数<br />
function isUnsignedInteger(strInteger) {<br />
&nbsp;var newPar=/^\d+$/<br />
&nbsp;alert(newPar.test(strInteger));}</p>
<p><br />
IP的验证<br />
/^((1?\d?\d(2([0-4]\d5[0-5])))\.){3}(1?\d?\d(2([0-4]\d5[0-5])))$/</p>
<p><br />
//meizz<br />
RegExp 对象实例属性<br />
global&nbsp;&nbsp;g 全局标记(只读)<br />
ignoreCase&nbsp;i 大小写不敏感(只读)<br />
lastIndex&nbsp;指定在字符串中开始下一个匹配的位置(读写)<br />
multilane&nbsp;m 指明多行标记(只读)<br />
source&nbsp;&nbsp;正则表达式的字符串形式(只读)</p>
<p>RegExp 对象的静态属性<br />
$1, $2,...$9&nbsp;&nbsp;字符串含有最近匹配的前9个括号内了表达式的文本<br />
index&nbsp;&nbsp;&nbsp;包含最近模式匹配的第一个字符的字符串索引值<br />
input&nbsp;&nbsp;$_&nbsp;包含匹配模式的默认字符串的字符串<br />
lastIndex&nbsp;&nbsp;指明开始下一个匹配的字符串中位置的整数<br />
lastMatch&nbsp;$&amp;&nbsp;包含最近匹配的文本的字符串<br />
lastParen&nbsp;$+&nbsp;包含最近匹配的括号内子表达式的文本的字符串<br />
leftContext&nbsp;$`&nbsp;包含最近匹配的左边的文本的字符串<br />
rightContext&nbsp;$'&nbsp;包含最近匹配的右边的文本的字符串</p>
<p>/ab*c/&nbsp;&nbsp;&nbsp; 匹配 ac abc abbbbbbbbbbbbbbbc<br />
/ab+c/&nbsp;&nbsp;&nbsp; 匹配 abc abbbbbbbbbbbbbbc 不匹配 ac<br />
/ab?c/&nbsp;&nbsp;&nbsp; 匹配 ab abc 不匹配 abbc<br />
/ab{5}c/&nbsp; 匹配 abbbbbc<br />
/a(bc)+/&nbsp; 匹配 a后跟随一个或者多个&quot;bc&quot;的字符串<br />
/ab{1,5}c/匹配 a与c之间有1到5个b的字符串<br />
/ab{5,}c/ 匹配 a与c之间有5个或者5个以上个数b的字符串</p>
<p>var customer = &quot;Alan 555-1212&quot;;<br />
var pattern&nbsp; = /(\w+) ([\d-]+)/;<br />
alert(pattern.test(customer));<br />
alert(&quot;$1 = &quot;+ RegExp.$1 +&quot;\r\n$2 = &quot;+ RegExp.$2);</p>
<p>正则表达式&nbsp;&nbsp;&nbsp;匹配&nbsp;&nbsp;&nbsp;不匹配<br />
/\Wten\W/&nbsp;&nbsp;&nbsp;&quot; ten &quot;&nbsp;&nbsp;&nbsp;&quot;1ten&quot;, &quot;tents&quot;<br />
/\wten\w/&nbsp;&nbsp;&nbsp;&quot;aten1&quot;&nbsp;&nbsp;&nbsp;&quot; ten&quot;, &quot;1ten &quot;<br />
/\bten\b/&nbsp;&nbsp;&nbsp;&quot;ten&quot;&nbsp;&nbsp;&nbsp;&quot;attention&quot;, &quot;tensile&quot;, &quot;often&quot;<br />
/\d{1,3}\.\d{1,3}/&nbsp;&nbsp;&quot;128.2&quot;&nbsp;&nbsp;&nbsp;&quot;1234.33&quot;, &quot;aa.23&quot;<br />
/^(httpftphttps):\/\/.*/&nbsp;&quot;<a href="https://abc%22,%22ftp//s">https://abc&quot;,&quot;ftp://s</a>&quot;&nbsp;&quot;<a href="file:///C">file:///C</a>:&quot;, &quot;https//www.w3c.org&quot;<br />
/\w+@\w+\.\w{1,3}/&nbsp;&nbsp;&quot;<a href="mailto:meizz@hzcnc.com">sdd@126.com</a>&quot;&nbsp;&quot;dds<a href="mailto:meizz@.com">@.122.com</a>&quot;, &quot;fff<a href="mailto:meizz@hzcnc.com.cn">@sina.com.cn</a>&quot;</p>
<p>var pattern = /(\d{3})(\d{2})(\d{4})/;<br />
var ssn = &quot;123456789&quot;;<br />
ssn = ssn.replace(pattern, &quot;$1-$2-$3&quot;);<br />
alert(RegExp.$_);&nbsp;//返回要匹配的字符串123456789<br />
alert(pattern.source);&nbsp;//正则式的字符串<br />
alert(RegExp['$&amp;']);&nbsp;//最近匹配的文本字符串<br />
alert(RegExp['$+']);&nbsp;//最近匹配的括号内子表达式的文本的字符串 6789<br />
alert(RegExp['$`']);&nbsp;&nbsp;&nbsp; //包含最近匹配的左边的文本的字符串<br />
alert(RegExp[&quot;$'&quot;]);&nbsp;//包含最近匹配的右边的文本的字符串<br />
alert(ssn); &nbsp;&nbsp;//返回 123-45-6789</p>
<p><br />
实际运用的一些实例</p>
<p><br />
/^\[ \t]*$/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//匹配一个空白行。</p>
<p>/&lt;(.*)&gt;.*&lt;\/\1&gt;/&nbsp;&nbsp;&nbsp;&nbsp;//匹配一个 HTML 标记。 <br />
var str = &quot;&lt;aa href='helloworld' style='color: red'&gt;helloworld&lt;/aa&gt;&quot;;<br />
alert(str.replace(/&lt;([^ &gt;]*)( .*)?&gt;(.*?)&lt;\/\1&gt;/, &quot;&lt;label&gt;$3&lt;/label&gt;&quot;));</p>
<p>/&lt;font.*?&gt;(.*?)&lt;\/font&gt;/ 中间的(.*?) 加了 ? 之后可以切换贪婪模式(贪=&gt;非非=&gt;贪)</p>
<p>str.replace(/\b([a-z]+) \1\b/gi,&quot;$1&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //将STR里所有重复的单词去掉<br />
/^[\+-]?(0?[1-9]\d+)(\.\d{1,2})?$/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //匹配一个数字(最多两位小数)<br />
href.match(/\/([^\?/]*)(\?$)/)[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //链接里提取出文件名<br />
/\.([^\.]+)(\?$)/[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //取出路径里的文件后缀名<br />
/^#[\da-f]{6}$/i&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; //匹配 #AABBCC 这种颜色<br />
&quot;aaaaaaqqqqqqq&quot;.replace(/(.)(\1)(\1)+/g, '')//替换掉重复出现三次的字符</p>
<p><br />
var xx=&quot;abc def&quot;;<br />
var i=3;<br />
var re=new RegExp(&quot;(.{&quot;+i+&quot;}).&quot;)&nbsp;&nbsp;//http://search.csdn.net/expert/topic/3/304/2003/1/8/1340478.htm<br />
var s = xx.replace(re, &quot;$1&quot;)&nbsp;&nbsp;&nbsp;//去掉字符串中第N个字符</p>
<p>SongUrl=&quot;<a href="http://www.xxx.com/xx/.../yy/abc.mp3">http://www.xxx.com/xx/.../yy/map.mp3</a>&quot;&nbsp;//提取链接里的文件名(不带后缀)<br />
alert(SongUrl.match(/([^\/.]+)[^\/]+$/)[1]);<br />
alert(SongUrl.match(/([^\/]+)\.[^.]+$/)[1]);<br />
alert(SongUrl.replace(/(^.+\/\..+$)/g,&quot;&quot;));<br />
alert(SongUrl.replace(/^.*\/([^.]+)[.][^.]+$/,&quot;$1&quot;));<br />
alert(SongUrl.match(/[^\\\/]+(?=\?$)/));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //提取 abc.mp3</p>
<p><br />
var str = &quot;{dfds34#$#}}}{}{{sdf23}{sd}{as}{sd}&quot;;<br />
alert(str.match(/[^{}][^{}]*(?=\})/g));</p>
<p>//!!!<br />
function mm(str){return &quot;&lt;&quot;+ (str.replace(/\s/g, &quot;_&quot;)) +&quot;&gt;&quot;}<br />
var str = &quot;&lt;a&nbsp;&nbsp; a&gt; a &lt; c &gt; &lt;d&nbsp;&nbsp; e&gt;&nbsp; f&quot;;<br />
alert(str.replace(/&lt;(.*?)&gt;/g, function($0, $1){return mm($1)}));</p>
<p>var str = &quot;a &lt; c &gt; &lt;d&nbsp;&nbsp; e&gt;&nbsp; f&quot;;<br />
alert(str.replace(/&lt;(.*?)&gt;/g, function($1){return $1.replace(/\s/g, &quot;_&quot;)}));</p>
<p><br />
var pattern = /(?:abc)(def)/; //若使用不带有非俘获语法的常规号则返回First Subexpression: abc<br />
alert(&quot;abcdef&quot;.replace(pattern, &quot;First Subexpression: $1&quot;));</p>
<p><br />
(?:pattern) <br />
匹配 pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。<br />
这在使用 &quot;或&quot; 字符 () 来组合一个模式的各个部分是很有用。例如， 'industr(?:yies) <br />
就是一个比 'industryindustries' 更简略的表达式。 <br />
var s = &quot;a1;b1\\;b2;c1c2c3&quot;;<br />
alert(s.split(/(?:[^\\]);/).join(&quot;&nbsp;&nbsp; @@&nbsp;&nbsp; &quot;))</p>
<p><br />
(?=pattern) <br />
正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，<br />
也就是说，该匹配不需要获取供以后使用。例如， 'Windows (?=9598NT2000)' 能匹配<br />
&quot;Windows 2000&quot; 中的 &quot;Windows&quot; ，但不能匹配 &quot;Windows 3.1&quot; 中的 &quot;Windows&quot;。预查不<br />
消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜<br />
索，而不是从包含预查的字符之后开始。<br />
&quot;1/01/2/3/4/04/5&quot;.replace(/(^\D)(\d)(?=\D$)/g,&quot;$10$2&quot;);&nbsp; //结果是01/01/02/03/04/04/05</p>
<p>(?!pattern) <br />
负向预查，在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，<br />
也就是说，该匹配不需要获取供以后使用。例如'Windows (?!9598NT2000)' 能匹配 <br />
&quot;Windows 3.1&quot; 中的 &quot;Windows&quot;，但不能匹配 &quot;Windows 2000&quot; 中的 &quot;Windows&quot;。预查不消<br />
耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，<br />
而不是从包含预查的字符之后开始<br />
var reg = /^(http:\/\/)?(?!www\.bbs\.)(\w+\.)abc\.com/i;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://imagination-fly.javaeye.com/blog/113446#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 17 Aug 2007 11:35:18 +0800</pubDate>
        <link>http://imagination-fly.javaeye.com/blog/113446</link>
        <guid>http://imagination-fly.javaeye.com/blog/113446</guid>
      </item>
      <item>
        <title>英语经典200句</title>
        <author>Imagination_Fly</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imagination-fly.javaeye.com">Imagination_Fly</a>&nbsp;
          链接：<a href="http://imagination-fly.javaeye.com/blog/112574" style="color:red;">http://imagination-fly.javaeye.com/blog/112574</a>&nbsp;
          发表时间: 2007年08月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="postbody">以下写作经典200句背诵完会使你的写作水平突飞猛进，记住一定要烂熟于心，可以使用超循环背诵大表进行背诵，使背诵变得轻松有计划，更重要的是减少遗忘。200句并不多，永远是熟能生巧，你一辈子用的句子无非就是几十句，这200句是精华中的精华，不仅运用于写作，这些精彩的句式可以运用于口语中，使你的表达非凡！希望大家在英文考级中能用得到! <br />
背诵方法：（原则:短时间搞定） <br />
1、分单元背，把200个句子根据你自己的进度订计划，清楚每天背多少个新句子，多少个复习句子（建议使用超循环大表） <br />
2、汉译英练习 <br />
3、默写 <br />
4、口头背诵 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. According to a recent survey, four million people die each year from diseases linked to smoking.<br />
　　依照最近的一项调查，每年有4，000，000人死于与吸烟有关的疾病。 <br />
　&nbsp;&nbsp;&nbsp; 2. The latest surveys show that quite a few children have unpleasant associations with homework.<br />
　　最近的调查显示相当多的孩子对家庭作业没什么好感。<br />
　　3. No invention has received more praise and abuse than Internet.<br />
　　没有一项发明像互联网一样同时受到如此多的赞扬和批评。<br />
　　4. People seem to fail to take into account the fact that education does not end with graduation.<br />
　　人们似乎忽视了教育不应该随着毕业而结束这一事实。<br />
　　5. An increasing number of people are beginning to realize that education is not complete with graduation.<br />
　　越来越多的人开始意识到教育不能随着毕业而结束。<br />
　　6. When it comes to education, the majority of people believe that education is a lifetime study.<br />
　　说到教育，大部分人认为其是一个终生的学习。<br />
　　7. Many experts point out that physical exercise contributes directly to a person's physical fitness.<br />
　　许多专家指出体育锻炼直接有助于身体健康。<br />
　　8. Proper measures must be taken to limit the number of foreign tourists and the great efforts should be made to protect local environment and history from the harmful effects of international tourism.<br />
　　应该采取适当的措施限制外国旅游者的数量，努力保护当地环境和历史不受国际旅游业的不利影响。<br />
　　9. An increasing number of experts believe that migrants will exert positive effects on construction of city. However, this opinion is now being questioned by more and more city residents, who complain that the migrants have brought many serious problems like crime and prostitution.<br />
　　越来越多的专家相信移民对城市的建设起到积极作用。然而，越来越多的城市居民却怀疑这种说法，他们抱怨民工给城市带来了许多严重的问题，像犯罪和卖淫。<br />
　　10. Many city residents complain that it is so few buses in their city that they have to spend much more time waiting for a bus, which is usually crowded with a large number of passengers.<br />
　　许多市民抱怨城市的公交车太少，以至于他们要花很长时间等一辆公交车，而车上可能已满载乘客。<br />
　　11. There is no denying the fact that air pollution is an extremely serious problem: the city authorities should take strong measures to deal with it.<br />
　　无可否认，空气污染是一个极其严重的问题：城市当局应该采取有力措施来解决它。<br />
　　12. An investigation shows that female workers tend to have a favorable attitude toward retirement.<br />
　　一项调查显示妇女欢迎退休。<br />
　　12a. A proper part-time job does not occupy students' too much time. In fact, it is unhealthy for them to spend all of time on their study. As an old saying goes: All work and no play makes Jack a dull boy.<br />
　　一份适当的业余工作并不会占用学生太多的时间，事实上，把全部的时间都用到学习上并不健康，正如那句老话：只工作，不玩耍，聪明的孩子会变傻。<br />
　　14. Any government, which is blind to this point, may pay a heavy price.<br />
　　任何政府忽视这一点都将付出巨大的代价。<br />
　　15.Nowadays, many students always go into raptures at the mere mention of the coming life of high school or college they will begin. Unfortunately, for most young people, it is not pleasant experience on their first day on campus.<br />
　　当前，一提到即将开始的学校生活，许多学生都会兴高采烈。然而，对多数年轻人来说，校园刚开始的日子并不是什么愉快的经历。<br />
　　16. In view of the seriousness of this problem, effective measures should be taken before things get worse.<br />
　　考虑到问题的严重性，在事态进一步恶化之前，必须采取有效的措施。<br />
　　17. The majority of students believe that part-time job will provide them with more opportunities to develop their interpersonal skills, which may put them in a favorable position in the future job markets.<br />
　　大部分学生相信业余工作会使他们有更多机会发展人际交往能力，而这对他们未来找工作是非常有好处的。<br />
　　18. It is indisputable that there are millions of people who still have a miserable life and have to face the dangers of starvation and exposure.<br />
　　无可争辩，现在有成千上万的人仍过着挨饿受冻的痛苦生活。<br />
　　19. Although this view is wildly held, this is little evidence that education can be obtained at any age and at any place.<br />
　　尽管这一观点被广泛接受，很少有证据表明教育能够在任何地点、任何年龄进行。<br />
　　20. No one can deny the fact that a person's education is the most important aspect of his life.<br />
　　没有人能否认：教育是人生最重要的一方面。<br />
　　21. People equate success in life with the ability of operating computer.<br />
　　人们把会使用计算机与人生成功相提并论。<br />
　　22. In the last decades, advances in medical technology have made it possible for people to live longer than in the past.<br />
　　在过去的几十年，先进的医疗技术已经使得人们比过去活的时间更长成为可能。<br />
　　23. In fact, we have to admit the fact that the quality of life is as important as life itself.<br />
　　事实上，我们必须承认生命的质量和生命本身一样重要。<br />
　　24. We should spare no effort to beautify our environment.<br />
　　我们应该不遗余力地美化我们的环境。<br />
　　25. People believe that computer skills will enhance their job opportunities or promotion opportunities.<br />
　　人们相信拥有计算机技术可以获得更多工作或提升的机会。<br />
　　26. The information I've collected over last few years leads me to believe that this knowledge may be less useful than most people think.<br />
　　从这几年我搜集的信息来看，这些知识并没有人们想象的那么有用。<br />
　　27. Now, it is generally accepted that no college or university can educate its students by the time they graduation.<br />
　　现在，人们普遍认为没有一所大学能够在毕业时候教给学生所有的知识。<br />
　　28. This is a matter of life and death--a matter no country can afford to ignore.<br />
　　这是一个关系到生死的问题，任何国家都不能忽视。<br />
　　29. For my part, I agree with the latter opinion for the following reasons:<br />
　　我同意后者，有如下理由：<br />
　　30. Before giving my opinion, I think it is important to look at the arguments on both sides.<br />
　　在给出我的观点之前，我想看看双方的观点是重要的。<br />
　　31. This view is now being questioned by more and more people.<br />
　　这一观点正受到越来越多人的质疑。<br />
　　32. Although many people claim that, along with the rapidly economic development, the number of people who use bicycle are decreasing and bicycle is bound to die out. The information I've collected over the recent years leads me to believe that bicycle will continue to play extremely important roles in modern society.<br />
　　尽管许多人认为随着经济的高速发展，用自行车的人数会减少，自行车可能会消亡， 然而，这几年我收集的一些信息让我相信自行车仍然会继续在现代社会发挥极其重要的作用。<br />
　　33. Environmental experts point out that increasing pollution not only causes serious problems such as global warming but also could threaten to end human life on our planet.<br />
　　环境学家指出：持续增加的污染不仅会导致像全球变暖这样严重的问题，而且还将威胁到人类在这个星球的生存。<br />
　　34. In view of such serious situation, environmental tools of transportation like bicycle are more important than any time before.<br />
　　考虑到这些严重的状况，我们比以往任何时候更需要像自行车这样的环保型交通工具。<br />
　　35. Using bicycle contributes greatly to people's physical fitness as well as easing traffic jams.<br />
　　使用自行车有助于人们的身体健康，并极大地缓解了交通阻塞。<br />
　　36. Despite many obvious advantages of bicycle, it is not without its problem.<br />
　　尽管自行车有许多明显的优点，但是它也存在它的问题。<br />
　　37. Bicycle can't be compared with other means of transportation like car and train for speed and comfort.<br />
　　在速度和舒适度方面，自行车是无法和汽车、火车这样的交通工具相比的。<br />
　　38. From what has been discussed above, we may safely draw the conclusion that advantages of bicycle far outweigh its disadvantages and it will still play essential roles in modern society.<br />
　　通过以上讨论，我们可以得出结论：自行车的优点远大于缺点，并且在现代社会它仍将发挥重要作用。<br />
　　39. There is a general discussion these days over education in many colleges and institutes. One of the questions under debate is whether education is a lifetime study.<br />
　　当前在高校和研究机构对教育存在着大量争论，其中一个问题就是教育是否是个终身学习的过程。<br />
　　40. This issue has caused wide public concern.<br />
　　这个问题已经引起了广泛关注。 <br />
