<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>寻寻觅觅，何处有阳光</title>
    <description>你要什么都可以，但必须付出等同的代价。</description>
    <link>http://flyneil.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>java基础知识复习笔记</title>
        <author>寻找出路的苍蝇</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://flyneil.javaeye.com">寻找出路的苍蝇</a>&nbsp;
                    链接：<a href="http://flyneil.javaeye.com/blog/186690" style="color:red;">http://flyneil.javaeye.com/blog/186690</a>&nbsp;
          发表时间: 2008年04月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>最近在学习echo3源码时忽然发现自己对java的很多基础知识还是没有掌握，很多语法从前根本就没想过还可以这么用的！比如echo3对内部类、内部接口、静态构造、对象组合等出神入化的应用，直叫人叹为观止呀。有感于自己基础之薄弱，重新拾起《java核心技术，卷一》一书，复习一下一些重要语法知识及某些以前不太在意的基础语法。特作如下笔记。</p>
<p>一、接口</p>
<p>1、主要用来描述类具有什么功能，而并不给出这些功能的具体实现。</p>
<p>2、接口的方法自动属于public的，因此在声明方法不必显式地提供public关键字。在实现类中最好也声明为public的，否则编译器会给出弱访问权限的警告信息。</p>
<p>3、在接口中可以定义常量，常量自动具有public static final属性。</p>
<p>4、接口中绝不能含有实例域，也不能在接口中实现方法。可以将接口看成是没有实例域的抽象类。</p>
<p>5、接口不可实例化但可用于声明对象，也可用于对象的instanceof 方法。</p>
<p>6、有关Cloneable接口：Object类中提供了protected clone方法，子类是若需提供克隆功能，则必须实现Cloneable接口，重新声明一个public clone方法。若克隆时只须浅拷贝，则直接调用super.clone()即可，但若需深拷贝，则只能自定义了。</p>
<p>7、标记接口：Cloneable,Serialable等接口，这此接口没有提供任何方法，仅做为一个标记。使用它们的唯一目的是可以用instanceof 进行类型检查。</p>
<p>8、回调：事件监听器</p>
<p>二、内部类</p>
<p>1、内部类是定义在另一个类中的类，使用内部类的特点：</p>
<ul>
<li>内部类可以访问外部类的数据，包括私有数据。</li>
<li>内部类对同一包中的其它类隐藏。</li>
<li>可以通过定义匿名内部类实现便捷回调。</li>
<li>内部类是一种编译器现象，与虚拟机无关。编译器将内部类翻译成用$将外部类名与内部类名分开的常规类文件，虚拟机对此类文件不做特殊处理。</li>
</ul>
<p>2、局部内部类：不能用public或private修饰符进行声明，它的作用域限定在声明它的块中，比如声明这个局部类的方法中，它只能由声明它的块访问，任何类甚至它的外围类的其它方法都访问不到它。局部内容类除可以访问外围类的域外，还可访问局部变量，不过要求这些局部变量是final的。实际上，编译器为局部内部类声明了一个final的域，用以存储对局部变量的拷贝。</p>
<p>3、匿名内部类：没有类名，直接创建其实现。针对接口创建的匿名内部类即是对该接口的一个匿名实现，针对类创建的匿名内部类则是创建该类的一个匿名子类。匿名内部类没有构造器，因为这它没有类名。</p>
<ul>
<li>对接口的匿名实现：new IntefaceType(){method and data}</li>
<li>对类的匿名子类：new ClassType(param){method and data}</li>
</ul>
<p>4、静态内部类：当内部类无须引用外围类的域时可以将其声明为static的，这样就取消对外围类的引用。</p>
<p>5、代理：<strong>在运行时动态创建实现一组接口的新类</strong>

。注意，代理类是在运行期间动态创建的，所有代理类扩展于Proxy类，在Proxy基类中定义了一个InvocationHandler实例变量，这个实例变量实现InvocationHandler接口，对代理对象中所代理接口方法的调用最后会被转发到这个InvocationHandler实例变量的invoke方法，通过该方法实现对实际对象指定方法的调用。</p>
<p>三、断言</p>
<p>1、断言的两种形式：</p>
<ul>
<li>assert 条件</li>
<li>assert 条件:表达式</li>
</ul>
<p>断言会对条件进行判断，若条件为false，则抛出一个AssertionError异常。第二种形式下会将表达式传入AssertionError对象的构造器，转换成一个消息字符串。</p>
<p>2、jdk5默认支持断言，1.4在编译时需要使用javac -source 1.4来支持断言。</p>
<p>默认情况下断言是禁用的。运行程序时可通过-enableassertions或-ea来启用，通过-disableassertions或-da来禁用。</p>
<p>3、使用断言的注意事项:</p>
<ul>
<li>断言失败是致命的、不可恢复的错误；</li>
<li>断言检查只用于开发和测试阶段。</li>
</ul>
<p>四、泛型</p>
<p>1、泛型程序设计意味着所写的代码可以被许多不同类型的对象重用。在jdk5以前泛型通过继承和强制类型转换来实现，jdk5通过类型参数来提供泛型支持。例如ArrayList&lt;T&gt;有一个类型参数T，它指示ArrayList对象的元素类型为T，当调用get方法时编译器知道返回值类型为T，不再需要通过类型转换到T，而调用add方法添加元素时，编译器只允许T类型的元素被添加到集合中。故通过泛型可以提高程序的可读性和安全性。</p>
<p>2、类型变量限定：</p>
<p>&nbsp;&nbsp;&nbsp; &lt;T extends BoundingType&gt; </p>
<p>表示T应该是绑定类型(BoundingType)的子类型。</p>
<p><br />

一个类型变量可以有多个限定：T extends BT1 &amp; BT2,限定中可以有多个接口，但只能有一个类。</p>
<p>3、JVM会为每个泛型类型提供其原始类型实现，一个泛型的原始类型名即为该泛型类去除类型参数后的名字，其泛型变量被擦除，用泛型变量的相应限定类型（无限定类型的用Object）来替代。</p>
<p>五、流与文件</p>
<p>1、输入流：可以读取字节序列的对象。输出流：可以写入字节序列的对象。类InputStream与OutputStream分别对应，而抽象类Reader与Writer则读取双字节的Unicode码。</p>
<p style="background-color: #c0c0c0;">java.io.InputStream</p>
<ul>
<li>abstract int read()：读取一个字节的数据并将其返回；当读到流的末尾时，返回-1。这是个抽象方法，需要具体的流来实现。该类的其它方法如read(int[])、skip等方法将会调用本方法。</li>
<li>int read(byte[] b)：将数据读取到字节数组中，返回实际读取的字节数目。当到达流末尾时调用此方法返回-1。</li>
<li>int read(byte[] b,int off,int len)：同上，但数组从off处开始存储，读取的字节数目最大为len。</li>
<li>long skip(long n)：在输入流中跳过n个字节，返回实际跳过的字节数。</li>
<li>int available()：返回可用的未阻塞的字节数。</li>
</ul>
<p>2、StringBuilder与StringBuffer：二者提供一致的API，区别在于：</p>
<ul>
<li>StringBuffer是线程安全的</li>
<li>StringBuilder是jdk5提供的，非线程安全，但效率较前者稍高。</li>
</ul>
<p>在单线程环境下应该用StringBuilder。</p>
<p>六、访问修饰符总结</p>
<p>1、priate--仅对本类可见</p>
<p>2、public--对所有类可见</p>
<p>3、protected--对本包和所有子类可见</p>
<p>4、默认--对本包可见</p>
<p>六、移位运算</p>
<table border="0" width="327" style="height: 67px;">
<tbody>
<tr>
<td>&lt;&lt;</td>
<td>向左移位，从右边补0</td>
<td>相当于乘以2的幂</td>
</tr>
<tr>
<td>&gt;&gt;</td>
<td>向右移位，从左边补符号位</td>
<td>相当于除以2的幂</td>
</tr>
<tr>
<td>&gt;&gt;&gt;</td>
<td>向右移位，从左边补0</td>
<td>相当于除以2的幂</td>
</tr>
</tbody>
</table>
          <br/><br/>
          <span style="color:red;">
            <a href="http://flyneil.javaeye.com/blog/186690#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 25 Apr 2008 12:11:07 +0800</pubDate>
        <link>http://flyneil.javaeye.com/blog/186690</link>
        <guid>http://flyneil.javaeye.com/blog/186690</guid>
      </item>
          <item>
        <title>为中国加油！</title>
        <author>寻找出路的苍蝇</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://flyneil.javaeye.com">寻找出路的苍蝇</a>&nbsp;
                    链接：<a href="http://flyneil.javaeye.com/blog/183705" style="color:red;">http://flyneil.javaeye.com/blog/183705</a>&nbsp;
          发表时间: 2008年04月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><strong><span style="font-family: 宋体; mso-bidi-font-family: 宋体;"><span style="font-size: small;">各位同胞：</span></span></strong>&nbsp;</p>
<p>
<p><span style="font-size: 12pt; font-family: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">奥运圣火不断受到骚扰<span lang="EN-US">,</span>尤其在巴黎。<span lang="EN-US"><br /></span>巴黎市政府竟把藏独标语挂上市政大厦！<span lang="EN-US"><br /></span>欧洲议会通过决议支持藏独为北京抹黑<span lang="EN-US"><br /></span>美国众议院通过决议要抵制中国奥运！<span lang="EN-US"><br /></span>德国总理公开支持藏独，不参加奥运<span lang="EN-US">!<br /></span>面对<span lang="EN-US">21</span>世纪的中国八国联军想干什么<span lang="EN-US">?<br /></span>让全世界看看中国人团结的力量！<span lang="EN-US"><br />5</span>月<span lang="EN-US">1</span>日<span lang="EN-US">,</span>让全国的家乐福冷场<span lang="EN-US">!<br />6</span>月<span lang="EN-US">1</span>日<span lang="EN-US">,</span>让全国的肯德基冷场<span lang="EN-US">!<span style="color: #000080;"><br /></span></span>中国人万众一心，团结起来，<span lang="EN-US"><br /></span>让全世界看看，<span lang="EN-US"><br /></span>为中国加油！<span lang="EN-US"><br /><br />5</span>月<span lang="EN-US">1</span>日北京地区抵制家乐福一天大家谁也不要去家乐福购物<span lang="EN-US">,</span>家乐福是法国最大的超市连锁集团<span lang="EN-US">,</span>目前法国路易威登<span lang="EN-US">-</span>莫特轩尼诗集团已经由第二大股东上升为第一大股东<span lang="EN-US">,</span>法国路易威登<span lang="EN-US">-</span>莫特轩尼诗集团旗下路易威登、迪奥、芬迪、娇兰、倩碧、<span lang="EN-US">Ken</span><span lang="EN-US">zo</span>，丝芙兰化妆品卖场<span lang="EN-US">,</span>以及轩尼诗等葡萄酒、香槟酒和干邑品牌<span lang="EN-US">,</span>路易威登曾给达赖捐过不少钱<span lang="EN-US">,</span>加上这次巴黎圣火传递过程中看见满街的法国人支持<span lang="EN-US">ZD</span><span lang="EN-US">,</span>实在没有理由再法国人送钱买他们的商品<span lang="EN-US">,5</span>月<span lang="EN-US">1</span>日集体不去家乐福<span lang="EN-US">,</span>叫他们看看中国人的力量让他们看看网络的力量。请转帖，放自己的<span lang="EN-US">msn</span>上等等等等，让更多的人都知道，让<span lang="EN-US">5.1</span>那天家乐福门可罗雀<span style="color: #000080;">！</span><span lang="EN-US"><br /><br /></span>明天不一定更好，但更好的明天一定会来<span lang="EN-US">...</span></span></p>
<p>&nbsp;</p>
</p>
<p><span style="font-size: 12pt; font-family: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">
<p><span lang="EN-US"><br style="mso-special-character: line-break" /><br style="mso-special-character: line-break" />&nbsp;</span></p>
</span></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://flyneil.javaeye.com/blog/183705#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Apr 2008 11:33:09 +0800</pubDate>
        <link>http://flyneil.javaeye.com/blog/183705</link>
        <guid>http://flyneil.javaeye.com/blog/183705</guid>
      </item>
          <item>
        <title>DWR应用初探</title>
        <author>寻找出路的苍蝇</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://flyneil.javaeye.com">寻找出路的苍蝇</a>&nbsp;
                    链接：<a href="http://flyneil.javaeye.com/blog/181761" style="color:red;">http://flyneil.javaeye.com/blog/181761</a>&nbsp;
          发表时间: 2008年04月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoTitle" style="margin: 12pt 0cm 3pt; text-align: left;"><span style="font-size: large;"><span style="font-family: 宋体;"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 因工作需要，最近对DWR进行了探索性使用。在使用之前DWR的大名早就如雷贯耳了，但也只是仅闻其名而已，当时只知道它可通过JS直接调用JAVA对象方法，其它就一概不知了。实际应用DWR一段时后，对其了解比较深入，不禁被其优异的异步传输特性所折服，它能完全满足我在项目中应用AJAX的需求。</span>

</span>

</span>

</span>

</p>
<p class="MsoTitle" style="margin: 12pt 0cm 3pt; text-align: left;"><span style="font-size: large;"><span style="font-family: 宋体;"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; GBP是我们的框架名称，它基于SSH，提供代码生成、基础组件调用等平台功能。在我们框架中引入DWR后，DWR代替struts充当控制层，用于接收用户请求，调用后台逻辑进行处理，最后将处理数据返回客户端。DWR全程处理从客户端到服务器端的所有传输细节。</span>

</span>

</span>

</span>

</p>
<p class="MsoTitle" style="margin: 12pt 0cm 3pt; text-align: left;"><span style="font-size: large;"><span style="font-family: 宋体; font-size: small;">下面是我在框架中使用DWR的一个初步总结，公布出来与大家共享。<strong>其中有很多内容是从网上查找资料学习到的，有些地方甚至是直接引用原文。</strong>

</span>

</span>

</p>
<p style="text-align: left;"><span style="font-size: large;"><span style="font-family: 宋体; font-size: small;">
<h1 style="MARGIN: 17pt 0cm 16.5pt 21.6pt"><span style="font-family: Times New Roman;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1&nbsp; </span>

</span>

<span lang="EN-US">DWR</span>

</span>

<span style="font-family: 宋体;">是什么</span>

</h1>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family: Times New Roman;">&nbsp;&nbsp;&nbsp;&nbsp; DWR</span>

</span>

<span style="font-family: 宋体;">是一个可以允许你去创建</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX WEB</span>

</span>

<span style="font-family: 宋体;">站点的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JAVA</span>

</span>

<span style="font-family: 宋体;">开源库，它可以通过浏览器端的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Javascript</span>

</span>

<span style="font-family: 宋体;">代码去调用服务器端的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Java</span>

</span>

<span style="font-family: 宋体;">代码，看起来就像是</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Java</span>

</span>

<span style="font-family: 宋体;">代码运行在浏览器上一样。</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">是一个完整的异步</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX</span>

</span>

<span style="font-family: 宋体;">框架，它隐藏了</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">XMLHttpRequest</span>

</span>

<span style="font-family: 宋体;">对象，程序员在开发过程中不需要接触</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">XMLHttpRequest</span>

</span>

<span style="font-family: 宋体;">对象就可以向服务器发送异步请求并通过回调方式处理服务器的返回值。</span>

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family: Times New Roman;">&nbsp;&nbsp;&nbsp; DWR</span>

</span>

<span style="font-family: 宋体;">包含两个主要部分：</span>

</p>
</span>
</span>
</p>
<ul>
<li><span style="font-family: Wingdings;"><span style="mso-list: Ignore"><span style="font-family: 'Times New Roman';">&nbsp;</span>
</span>
</span>
<span style="font-family: 宋体;">运行在服务器端的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">servlet</span>

</span>

<span style="font-family: 宋体;">控制器</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">(DwrServlet)</span>

</span>

<span style="font-family: 宋体;">，它负责接收请求，调用相应业务逻辑进行处理，向客户端返回响应。</span>
</li>
</ul>
<p style="text-align: left;"><span style="font-size: large;"><span style="font-family: 宋体; font-size: small;">
<p class="Char" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo2; mso-char-indent-count: 0">&nbsp;</p>
</span>
</span>
</p>
<ul>
<li><span style="font-family: Wingdings;"><span style="mso-list: Ignore"><span style="font-family: 'Times New Roman';">&nbsp;</span>
</span>
</span>
<span style="font-family: 宋体;">运行在浏览器端的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Javascript</span>

</span>

<span style="font-family: 宋体;">，它负责向服务器端发送请求，接收响应，动态更新页面。</span>
</li>
</ul>
<p style="text-align: left;"><span style="font-size: large;"><span style="font-family: 宋体; font-size: small;">
<p class="Char" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo2; mso-char-indent-count: 0">&nbsp;</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family: Times New Roman;">&nbsp;&nbsp;&nbsp; DWR</span>

</span>

<span style="font-family: 宋体;">工作原理是通过动态把</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Java</span>

</span>

<span style="font-family: 宋体;">类生成为</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Javascript</span>

</span>

<span style="font-family: 宋体;">。它的代码就像</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Ajax</span>

</span>

<span style="font-family: 宋体;">魔法一样，你感觉调用就像发生在浏览器端，但是实际上代码调用发生在服务器端，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">负责数据的传递和转换。这种从</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JavaScript</span>

</span>

<span style="font-family: 宋体;">到</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Java</span>

</span>

<span style="font-family: 宋体;">的远程调用功能的方式使</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">用起来有种非常像</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">RMI</span>

</span>

<span style="font-family: 宋体;">或者</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">SOAP</span>

</span>

<span style="font-family: 宋体;">的常规</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">RPC</span>

</span>

<span style="font-family: 宋体;">机制，而且</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">的优点在于不需要任何的网页浏览器插件就能运行在网页上。</span>

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family: Times New Roman;">&nbsp;&nbsp;&nbsp; Java</span>

</span>

<span style="font-family: 宋体;">从根本上讲是同步机制，然而</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Ajax</span>

</span>

<span style="font-family: 宋体;">却是异步的。所以你调用远程方法时，当数据已从网络上返回的时候，你要提供有回调</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">(callback)</span>

</span>

<span style="font-family: 宋体;">来接收数据。</span>

</p>
<p><span style="font-family: 宋体; font-size: small;">
<p style="TEXT-ALIGN: center"><img src=" http://hongliangx-gmail-com.javaeye.com/upload/picture/pic/11719/7b296acc-0611-33ad-9594-b18beff7ef99.jpg " height="355" alt="" width="581" />

</p>
</span>

</p>
</span>
<p style="TEXT-ALIGN: center"><span style="font-size: large;"><span style="font-family: 宋体; font-size: small;">&nbsp;
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span lang="EN-US"><span style="font-family: Times New Roman;">&nbsp;&nbsp;&nbsp; DWR</span>

</span>

<span style="font-family: 宋体;">动态在浏览器端生成一个</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AjaxService</span>

</span>

<span style="font-family: 宋体;">的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JavaScript</span>

</span>

<span style="font-family: 宋体;">类，以匹配服务器端</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AjaxService</span>

</span>

<span style="font-family: 宋体;">的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Java</span>

</span>

<span style="font-family: 宋体;">类。由</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">eventHandler</span>

</span>

<span style="font-family: 宋体;">去调用它，然后</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">处理所有的远程细节，包括转换所有的参数以及将返回的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Java</span>

</span>

<span style="font-family: 宋体;">对象映射成</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Javascript</span>

</span>

<span style="font-family: 宋体;">对象。在示例中，先在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">eventHandler</span>

</span>

<span style="font-family: 宋体;">方法里调用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AjaxService</span>

</span>

<span style="font-family: 宋体;">的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">getOptions() </span>

</span>

<span style="font-family: 宋体;">方法，然后通过回调</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">(callback)</span>

</span>

<span style="font-family: 宋体;">方法</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">populateList(data) </span>

</span>

<span style="font-family: 宋体;">得到返回的数据，其中</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">data</span>

</span>

<span style="font-family: 宋体;">就是</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">String[]{&quot;1&quot;, &quot;2&quot;, &quot;3&quot;}</span>

</span>

<span style="font-family: 宋体;">，最后再使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR utility </span>

</span>

<span style="font-family: 宋体;">把</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">data</span>

</span>

<span style="font-family: 宋体;">加入到下拉列表。</span>

</p>
<p>&nbsp;</p>
<h1 style="margin: 17pt 0cm 16.5pt 21.6pt; text-align: left;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><span style="font-family: Times New Roman;"><span style="font-family: 'Times New Roman';"><span style="font-size: x-large;"><strong>2&nbsp; </strong>

</span>

</span>

</span>

</span>

</span>

<span style="font-family: 宋体;">为什么使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

</h1>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span lang="EN-US"><span style="font-family: Times New Roman;">&nbsp;&nbsp;&nbsp; GBP</span>

</span>

<span style="font-family: 宋体;">是建立在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Struts+Spring+Hibernate</span>

</span>

<span style="font-family: 宋体;">之上的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">MVC</span>

</span>

<span style="font-family: 宋体;">框架，它的控制层是由</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Struts</span>

</span>

<span style="font-family: 宋体;">负责的，而视图层则是通过</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JSP</span>

</span>

<span style="font-family: 宋体;">页面呈现。</span>

</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family: Calibri;">&nbsp;</span>

</span>

<span style="font-family: 宋体;">&nbsp;</span>

</p>
<p style="TEXT-ALIGN: center"><img src="../../../upload/picture/pic/11723/bc4fcd13-478a-3c24-977a-23bf23c3c2cf.jpg " alt="" />

</p>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 由上可知，当前台页面向服务器发送一个请求时，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">struts</span>

</span>

<span style="font-family: 宋体;">调用业务逻辑处理该请求获得处理数据，然后导航到配置的页面上显示结果数据。由此可见，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">struts</span>

</span>

<span style="font-family: 宋体;">处理请求后一般是跳转到新的页面，浏览器需要进行页面刷新。这与目前流行的通过异步</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX</span>

</span>

<span style="font-family: 宋体;">局部刷新页面的方式相比，界面的用户体验显然要差很多。当然</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">struts</span>

</span>

<span style="font-family: 宋体;">也能实现</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX</span>

</span>

<span style="font-family: 宋体;">异步调用，但目前</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">GBP</span>

</span>

<span style="font-family: 宋体;">系统中对</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX</span>

</span>

<span style="font-family: 宋体;">的使用方式比较原始零碎，没有一套完整成熟的规范来约束。而在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">GBP</span>

</span>

<span style="font-family: 宋体;">中引入</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">的直接目的正是为了正确使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX</span>

</span>

<span style="font-family: 宋体;">，为</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX</span>

</span>

<span style="font-family: 宋体;">异步调用建立一套规范。</span>

</p>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">GBP</span>

</span>

<span style="font-family: 宋体;">架构中可以用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">来代替</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Struts</span>

</span>

<span style="font-family: 宋体;">做为控制器，用户请求通过</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">进行处理并发送响应。</span>

</p>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 异步调用过程中，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">通过</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JSP</span>

</span>

<span style="font-family: 宋体;">页面上的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">代码可以直接调用业务处理逻辑的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Java</span>

</span>

<span style="font-family: 宋体;">代码，这个调用过程看起来如下图所示：</span>

<span style="font-family: 宋体;">
<p style="TEXT-ALIGN: center"><img src="../../../upload/picture/pic/11725/a1c6d3be-68e9-3a71-98e5-3c25aad557d8.jpg " alt="" />

</p>
</span>

</p>
<p>&nbsp;</p>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">时通过在浏览器端调用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">对象的方法就可以触发服务器</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JAVA</span>

</span>

<span style="font-family: 宋体;">对象的相应方法，并且自动完成</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">对象与</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JAVA</span>

</span>

<span style="font-family: 宋体;">对象之间的数据类型转换，看起来就像是</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Java</span>

</span>

<span style="font-family: 宋体;">代码直接在浏览器上执行一样。其实在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">对象并不是直接操作</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JAVA</span>

</span>

<span style="font-family: 宋体;">对象的，这之间有一个控制器层，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">方法调用时将请求发送到</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">控制器</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DwrServlet</span>

</span>

<span style="font-family: 宋体;">，然后通过</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DwrServlet</span>

</span>

<span style="font-family: 宋体;">调用相应的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JAVA</span>

</span>

<span style="font-family: 宋体;">对象。完整的调用过程如下所示：</span>

</p>
<span style="font-family: 宋体; font-size: small;">
<p style="TEXT-ALIGN: center"><img src="../../../upload/picture/pic/11727/d77af657-e156-354e-9f24-468e51067b1d.jpg" alt="" />

</p>
</span>

</span>
<p style="TEXT-ALIGN: center">&nbsp;</p>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 与</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Struts</span>

</span>

<span style="font-family: 宋体;">相比，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DwrServlet</span>

</span>

<span style="font-family: 宋体;">接收到模型返回的处理数据后并不是导航到一个新的页面，而是将这些</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JAVA</span>

</span>

<span style="font-family: 宋体;">对象数据转化为</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">对象数据然后发送到调用页面上，在页面上可以通过</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">操纵</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">CSS</span>

</span>

<span style="font-family: 宋体;">、</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DOM</span>

</span>

<span style="font-family: 宋体;">等方式来局部更新页面。由此可见，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">通过异步</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX</span>

</span>

<span style="font-family: 宋体;">方式的实现了页面的局部刷新效果，可以取得非常友好的界面体验。</span>

<span lang="EN-US"><span style="mso-spacerun: yes"><span style="font-family: Times New Roman;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>

</span>

</span>

</span>

</p>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWR</span>

</span>

<span style="font-family: 宋体;">提供了一种使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX</span>

</span>

<span style="font-family: 宋体;">的正确规范的方式。</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">将</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">XMLHttpRequest</span>

</span>

<span style="font-family: 宋体;">对象进行封装和隐藏，程序员在开发过程中只需要调用普通的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">方法就可以实现</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX</span>

</span>

<span style="font-family: 宋体;">的异步调用功能，并且能够方便地处理返回值。因此在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">GBP</span>

</span>

<span style="font-family: 宋体;">框架中引入</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">可以有效解决滥用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX</span>

</span>

<span style="font-family: 宋体;">的问题，并且可以提高页面响应速度。另外，实践说明，使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">比使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Struts</span>

</span>

<span style="font-family: 宋体;">的开发效率更高。</span>

</span>

</p>
<h1 style="margin: 17pt 0cm 16.5pt 21.6pt; text-align: left;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><span style="font-family: Times New Roman;"><span style="font-family: 'Times New Roman';"><strong><span style="font-size: x-large;">3&nbsp; </span>

</strong>

</span>

</span>

</span>

</span>

<span style="font-size: x-large;"><span style="font-family: 宋体;">如何使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

</span>

</h1>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">GBP</span>

</span>

<span style="font-family: 宋体;">框架中引入</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">可以作为接收并处理用户请求的控件器存在，与目前系统中的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">struts</span>

</span>

<span style="font-family: 宋体;">处于同一层次。如此一来，程序员使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">的方式几乎与目前的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Struts</span>

</span>

<span style="font-family: 宋体;">一致，学习成本较低，易于快速上手。下面以系统监控为例详细说明如何在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">GBP</span>

</span>

<span style="font-family: 宋体;">中使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">。</span>

</span>

</p>
<h2 style="margin: 13pt 0cm 13pt 28.8pt; text-align: left;"><span lang="EN-US" style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial"><span style="mso-list: Ignore"><span style="font-family: Arial; font-size: large;">3.1</span>

<span style="font-family: 'Times New Roman';">&nbsp;&nbsp; </span>

</span>

</span>

<span style="font-size: large;"><span style="font-family: 黑体;">编写服务器端的</span>

<span lang="EN-US"><span style="font-family: Arial;">JAVA</span>

</span>

<span style="font-family: 黑体;">类</span>

</span>

</h2>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">GBP</span>

</span>

<span style="font-family: 宋体;">框架中，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">应该与</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Struts</span>

</span>

<span style="font-family: 宋体;">处于同一层次，它不是直接调用业务逻辑</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">BO</span>

</span>

<span style="font-family: 宋体;">，而是根据统一编号调用相应</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">service</span>

</span>

<span style="font-family: 宋体;">，再由</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">service</span>

</span>

<span style="font-family: 宋体;">调用业务处理逻辑。类似</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Struts</span>

</span>

<span style="font-family: 宋体;">层的业务</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Action</span>

</span>

<span style="font-family: 宋体;">，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">也存在一个&ldquo;业务</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Action</span>

</span>

<span style="font-family: 宋体;">&rdquo;，系统监控对应的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">业务</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Action</span>

</span>

<span style="font-family: 宋体;">是</span>

</span>

<span style="font-size: 10pt; line-height: 130%; font-family: 'Courier New'; color: #000000;">com.jiuqi.GBP.action.sysapp.msc.MscControl</span>

<span style="font-size: 10pt; line-height: 130%; font-family: 宋体; color: #000000;">类，该类的具体代码如下：</span>

</p>
<p style="TEXT-ALIGN: center"><img src="../../../upload/picture/pic/11733/b076378e-fb47-38c7-b07c-eb5128f2a05a.jpg" alt="" />

</p>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 类似于</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Struts</span>

</span>

<span style="font-family: 宋体;">中一个</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Action</span>

</span>

<span style="font-family: 宋体;">对应一个</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">ActionForm</span>

</span>

<span style="font-family: 宋体;">，一般地，在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">中，一个业务</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">form</span>

</span>

<span style="font-family: 宋体;">（相当于</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Struts</span>

</span>

<span style="font-family: 宋体;">的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">ActionForm</span>

</span>

<span style="font-family: 宋体;">）需要对应一个</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">的业务</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Action</span>

</span>

<span style="font-family: 宋体;">。系统监控模块通过</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">QueryConditionExtForm</span>

</span>

<span style="font-family: 宋体;">封装所有的查询指标，因此只需一个</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">的业务</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Action</span>

</span>

<span style="font-family: 宋体;">即可处理所有请求。</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">MscControl</span>

</span>

<span style="font-family: 宋体;">类通过</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">doService</span>

</span>

<span style="font-family: 宋体;">方法可以实现一般情况下对</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">service</span>

</span>

<span style="font-family: 宋体;">的调用，而</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">doQuery</span>

</span>

<span style="font-family: 宋体;">方法则专用于分页查询。不同于</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Struts</span>

</span>

<span style="font-family: 宋体;">的业务</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Action</span>

</span>

<span style="font-family: 宋体;">一个请求必须对应一个方法并且需要在配置文件中提供导航配置的情况，使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">时上述两个方法可以处理系统监控模块的所有请求而且无需导航配置，代码数量大大减少。当然，实际项目开发过程中，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Action</span>

</span>

<span style="font-family: 宋体;">可能需要对前台提交的参数做一些特殊处理，此时只需在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Action</span>

</span>

<span style="font-family: 宋体;">中新起一个专门方法即可。</span>

</span>

</p>
<h2 style="margin: 13pt 0cm 13pt 28.8pt; text-align: left;"><span lang="EN-US" style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial"><span style="mso-list: Ignore"><span style="font-family: Arial; font-size: large;">3.2</span>

<span style="font-family: 'Times New Roman';">&nbsp; </span>

</span>

</span>

<span style="font-size: large;"><span style="font-family: 黑体;">编写浏览器端的</span>

<span lang="EN-US"><span style="font-family: Arial;">Javascript</span>

</span>

<span style="font-family: 黑体;">脚本</span>

</span>

</h2>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 以系统监控系统日志查询为例，了解一下</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">是如何通过</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Javascript</span>

</span>

<span style="font-family: 宋体;">脚本发送请求的。</span>

</span>

</p>
<p class="Char" style="margin: 0cm 0cm 0pt; text-align: left;"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 在系统日志查询主界面上点击&ldquo;查询&rdquo;按钮时触发如下</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">脚本：</span>

</span>

</p>
<p class="MsoTitle" style="TEXT-ALIGN: center"><img src="../../../upload/picture/pic/11731/3b3d68e0-3f00-3739-b496-19633de907b8.jpg" alt="" />

</p>
<p class="MsoTitle" style="MARGIN: 12pt 0cm 3pt; TEXT-ALIGN: left">&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: small;"><span style="font-family: 宋体;">其中</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">对象</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">mscCtrl</span>

</span>

<span style="font-family: 宋体;">就是</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Java</span>

</span>

<span style="font-family: 宋体;">类</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">MscControl</span>

</span>

<span style="font-family: 宋体;">类的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">映射，浏览器端</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">mscCtrl</span>

</span>

<span style="font-family: 宋体;">对</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">doQuery</span>

</span>

<span style="font-family: 宋体;">方法的调用，通过</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DwrServlet</span>

</span>

<span style="font-family: 宋体;">处理转化为服务器端</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">MscControl</span>

</span>

<span style="font-family: 宋体;">实例对</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">doQuery</span>

</span>

<span style="font-family: 宋体;">方法的调用，实现查询请求处理。传入的最后一个参数</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">query_meta_obj</span>

</span>

<span style="font-family: 宋体;">就是用于回调的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">对象，它接收服务器返回的数据传给回调函数进行处理，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">query_meta_obj</span>

</span>

<span style="font-family: 宋体;">对象还封装了发送</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">请求时的其它参数。</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">query_meta_obj</span>

</span>

<span style="font-family: 宋体;">对象代码如下：</span>

</span>

</p>
<span style="font-size: large;">
<p class="Char" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center"><span style="font-size: small;"><span style="font-family: 宋体;"><img src="../../../upload/picture/pic/11729/16592862-9e4d-3e3a-b485-d646e0a2a4ff.jpg" alt="" />

</span>

</span>

</p>
</span>

</span>

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center">&nbsp;</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 其中</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">callback</span>

</span>

<span style="font-family: 宋体;">属性就是回调函数，用于接收查询结果数据，刷新列表显示结果：</span>

</span>

</p>
<p class="MsoTitle" style="TEXT-ALIGN: center"><img src="../../../upload/picture/pic/11743/67df50ff-e61d-380e-9653-a53394336e5d.jpg" alt="" />

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 可以看到，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWRUtil.addRows</span>

</span>

<span style="font-family: 宋体;">方法实现了对查询结果列表的更新。</span>

</span>

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 浏览器端对</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">的操作过程总结如下：</span>

</span>

</p>
<p style="TEXT-ALIGN: center"><img src="../../../upload/picture/pic/11741/3b61c655-67e5-3717-98db-6dd33492f078.jpg" alt="" />

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 可以看到，</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">的处理流程很清晰，对开发人员而言，容易产生困难的地方可能就在回调处理方面，实现</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">回调需要一定的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">JS</span>

</span>

<span style="font-family: 宋体;">编码经验。脚本文件</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">/script/util/dwrutil.js</span>

</span>

<span style="font-family: 宋体;">提供了一些通用的回调处理方法，可以作为参考。</span>

</span>

</p>
<h2 style="MARGIN: 13pt 0cm 13pt 28.8pt"><span lang="EN-US" style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial"><span style="mso-list: Ignore"><span style="font-family: Arial; font-size: large;">3.3</span>

<span style="font-family: 'Times New Roman';">&nbsp; </span>

</span>

</span>

<span style="font-family: 黑体;"><span style="font-size: large;">配置文件</span>

</span>

</h2>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">&nbsp;&nbsp;&nbsp; DWR</span>

</span>

<span style="font-family: 宋体;">的运行需要配置文件的支持。在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">GBP</span>

</span>

<span style="font-family: 宋体;">中引入</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">，首先需要修改</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">web.xml</span>

</span>

<span style="font-family: 宋体;">文件并引入</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">本身的配置文件</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">dwr-GBP.xml</span>

</span>

<span style="font-family: 宋体;">，还需要在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Spring</span>

</span>

<span style="font-family: 宋体;">的配置文件中声明服务器端对象的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">bean</span>

</span>

<span style="font-family: 宋体;">。</span>

</span>

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">&nbsp;&nbsp;&nbsp; 1</span>

</span>

<span style="font-family: 宋体;">、在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">web.xml</span>

</span>

<span style="font-family: 宋体;">中</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">作为一个</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">servlet</span>

</span>

<span style="font-family: 宋体;">进行配置：</span>

</span>

</p>
</span>

</p>
<pre name="code" class="xml">  &lt;servlet&gt; <br />



	&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />



	&lt;servlet-class&gt;org.directwebremoting.servlet.DwrServlet&lt;/servlet-class&gt; <br />



	&lt;load-on-startup&gt;5&lt;/load-on-startup&gt;<br />



	&lt;init-param&gt;<br />



		&lt;param-name&gt;debug&lt;/param-name&gt;<br />



		&lt;param-value&gt;true&lt;/param-value&gt;<br />



	&lt;/init-param&gt;<br />



	&lt;!-- Annotation --&gt;<br />



	&lt;init-param&gt; <br />



		&lt;param-name&gt;classes&lt;/param-name&gt; <br />



		&lt;param-value&gt;java.lang.Object&lt;/param-value&gt; <br />



	&lt;/init-param&gt;<br />



	&lt;init-param&gt; <br />



		&lt;param-name&gt;logLevel&lt;/param-name&gt; <br />



		&lt;param-value&gt;DEBUG&lt;/param-value&gt; <br />



	&lt;/init-param&gt;<br />



	&lt;init-param&gt;<br />



		&lt;param-name&gt;config-user&lt;/param-name&gt;<br />



		&lt;param-value&gt;WEB-INF/files/dwr-gbp.xml&lt;/param-value&gt;<br />



	&lt;/init-param&gt;<br />



  &lt;/servlet&gt;</pre>
<p style="text-align: left;"><span style="font-size: large;">
<p>&nbsp;</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp; 配置其</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">URL</span>

</span>

<span style="font-family: 宋体;">映射方式：</span>

</span>

</p>
<p><span style="font-size: small;"><span style="font-family: 宋体;">&lt;servlet-mapping&gt; <br />

&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />

&lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt; <br />

&lt;/servlet-mapping&gt;
<p class="Char" style="MARGIN: 0cm 0cm 0pt">&nbsp;</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><span style="font-family: Times New Roman;">2</span>

</span>

<span style="font-family: 宋体;">、在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">配置文件</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">dwr-gbp.xml</span>

</span>

<span style="font-family: 宋体;">中描述浏览器端与服务器端对象的转换关系：</span>

</p>
<p><span style="font-family: 宋体;">&lt;dwr&gt; <br />

&lt;allow&gt; <br />

&lt;convert converter=&quot;bean&quot; match=&quot;com.xxx.gbp.formbean.form.*&quot; /&gt; <br />

&lt;create creator=&quot;spring&quot; javascript=&quot;mscCtrl&quot;&gt; <br />

&lt;param name=&quot;beanName&quot; value=&quot;mscControl&quot; /&gt; <br />

&lt;include method=&quot;doService&quot;/&gt; <br />

&lt;include method=&quot;doQuery&quot;/&gt; <br />

&lt;/create&gt; <br />

&lt;/allow&gt; <br />

&lt;/dwr&gt;
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: 宋体;">上述配置表明，浏览器端对象为</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">mscCtrl</span>

</span>

<span style="font-family: 宋体;">，服务器端对象是一个</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Spring</span>

</span>

<span style="font-family: 宋体;">的</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">bean</span>

</span>

<span style="font-family: 宋体;">，名为</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">mscControl</span>

</span>

<span style="font-family: 宋体;">，故需要在</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">Spring</span>

</span>

<span style="font-family: 宋体;">配置文件中声明。</span>

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt">&nbsp;</p>
</span>

</p>
<h1 style="MARGIN: 17pt 0cm 16.5pt 21.6pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore"><span style="font-family: Times New Roman;">4&nbsp; </span>

</span>

</span>

<span style="font-family: 宋体;">结论：</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">是否适合</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">GBP</span>

</span>

<span style="font-family: 宋体;">？</span>

</h1>
<p class="Char" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp; 使用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">DWR</span>

</span>

<span style="font-family: 宋体;">的优点：</span>

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; mso-char-indent-count: 0"><span style="font-family: Wingdings;"><span style="mso-list: Ignore">&sup2;<span style="font-family: 'Times New Roman';">&nbsp; </span>

</span>

</span>

<span style="font-family: 宋体;">规范化应用</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">AJAX</span>

</span>

<span style="font-family: 宋体;">，紧跟业界技术潮流；</span>

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; mso-char-indent-count: 0"><span style="font-family: Wingdings;"><span style="mso-list: Ignore">&sup2;<span style="font-family: 'Times New Roman';">&nbsp; </span>

</span>

</span>

<span style="font-family: 宋体;">提高界面响应速度，增强用户体验；</span>

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; mso-char-indent-count: 0"><span style="font-family: Wingdings;"><span style="mso-list: Ignore">&sup2;<span style="font-family: 'Times New Roman';">&nbsp; </span>

</span>

</span>

<span style="font-family: 宋体;">简化前台开发流程，减少代码量，提高开发效率；</span>

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; mso-char-indent-count: 0"><span style="font-family: Wingdings;"><span style="mso-list: Ignore">&sup2;<span style="font-family: 'Times New Roman';">&nbsp; </span>

</span>

</span>

<span style="font-family: 宋体;">与</span>

<span lang="EN-US"><span style="font-family: Times New Roman;">GBP</span>

</span>

<span style="font-family: 宋体;">的集成比较容易；</span>

</p>
<p class="Char" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; mso-char-indent-count: 0">&nbsp;</p>
</span>

</span>

</p>
</span>

</p>
<p class="MsoNormal" style="text-align: left;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">&nbsp;&nbsp;&nbsp; DWR</span>

<span style="font-size: 12pt; font-family: 宋体;">是一个异步</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">AJAX</span>

<span style="font-size: 12pt; font-family: 宋体;">框架，非常适合处理异步类请求。但它并不是万能的，在有些方面使用</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">DWR</span>

<span style="font-size: 12pt; font-family: 宋体;">并不合适：</span>

</p>
<p style="text-align: left;">&nbsp;</p>
<p class="Char" style="margin-left: 42pt; text-indent: -21pt; text-align: left;"><!--       [if !supportLists]--><span style="font-family: Wingdings;"><span>&Oslash;<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;
</span>

</span>

</span>

<!--       [endif]--><span style="font-family: 宋体;">确实需要通过</span>

<span lang="EN-US">Form</span>

<span style="font-family: 宋体;">方式提交请求，如保存照片信息时；</span>

</p>
<p class="Char" style="margin-left: 42pt; text-indent: -21pt; text-align: left;"><!--       [if !supportLists]--><span style="font-family: Wingdings;"><span>&Oslash;<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;
</span>

</span>

</span>

<!--       [endif]--><span style="font-family: 宋体;">处理文件上传下载请求；</span>

</p>
<p class="Char" style="margin-left: 42pt; text-indent: -21pt; text-align: left;"><!--       [if !supportLists]--><span style="font-family: Wingdings;"><span>&Oslash;<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;
</span>

</span>

</span>

<!--       [endif]--><span style="font-family: 宋体;">处理导入导出请求；</span>

</p>
<p class="Char" style="margin-left: 42pt; text-indent: -21pt; text-align: left;"><!--       [if !supportLists]--><span style="font-family: Wingdings;"><span>&Oslash;<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;
</span>

</span>

</span>

<!--       [endif]--><span style="font-family: 宋体;">构造树结构时，目前也无法用</span>

<span lang="EN-US">DWR</span>

<span style="font-family: 宋体;">改造；</span>

</p>
<p class="MsoNormal" style="text-align: left;">&nbsp;</p>
<p class="MsoNormal" style="text-align: left;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">&nbsp;&nbsp;&nbsp; DWR</span>

<span style="font-size: 12pt; font-family: 宋体;">的优点十分明显，但在处理与</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Servlet</span>

<span style="font-size: 12pt; font-family: 宋体;">耦合度比较高的请求时存在困难。</span>

</p>
<p class="MsoNormal" style="text-align: left;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">&nbsp;&nbsp;&nbsp; </span>

<span style="font-size: 12pt; font-family: 宋体;">另外，</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">DWR</span>

<span style="font-size: 12pt; font-family: 宋体;">在高并发及大数据量情况下的表现尚未经过测试，我对此并不是很放心。</span>

</p>
<p class="MsoNormal" style="text-align: left;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">&nbsp;&nbsp;&nbsp; </span>

<span style="font-size: 12pt; font-family: 宋体;">综合</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">DWR</span>

<span style="font-size: 12pt; font-family: 宋体;">的优点与缺点，考虑到</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">GBP</span>

<span style="font-size: 12pt; font-family: 宋体;">的现有架构，推荐在</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">GBP</span>

<span style="font-size: 12pt; font-family: 宋体;">中引入</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">DWR</span>

<span style="font-size: 12pt; font-family: 宋体;">框架，做为控制层与</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Struts</span>

<span style="font-size: 12pt; font-family: 宋体;">并存，开发过程中以</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">DWR</span>

<span style="font-size: 12pt; font-family: 宋体;">为主，以</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Struts</span>

<span style="font-size: 12pt; font-family: 宋体;">为辅，充分发挥</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">DWR</span>

<span style="font-size: 12pt; font-family: 宋体;">的优势，在</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">DWR</span>

<span style="font-size: 12pt; font-family: 宋体;">不擅长的地方用</span>

<span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Struts</span>

<span style="font-size: 12pt; font-family: 宋体;">处理。</span>

</p>
<p class="MsoNormal" style="text-align: left;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">&nbsp;&nbsp;&nbsp; </span>

<span style="font-size: 12pt; font-family: 宋体;">推荐指数：</span>

<span style="font-size: 12pt; font-family: 宋体;">★★★★★</span>

</p>
<p class="MsoNormal" style="text-align: left;"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">&nbsp;&nbsp;&nbsp; </span>

<span style="font-size: 12pt; font-family: 宋体;">技术难度：</span>

<span style="font-size: 12pt; font-family: 宋体;">★★☆☆☆</span>

</p>
<p class="MsoNormal" style="text-align: left;"><span style="font-size: 12pt; font-family: 宋体;">&nbsp;</span>

</p>
<p class="MsoNormal" style="text-align: left;"><span style="font-size: 12pt; font-family: 宋体;">&nbsp;</span>

</p>
<p class="MsoNormal" style="text-align: left;"><span style="font-size: 12pt; font-family: 宋体;">&nbsp;</span>

</p>
<p class="MsoNormal" style="text-align: left;"><span style="font-size: 12pt; font-family: 宋体;">&nbsp;</span>

</p>
<p class="MsoNormal" style="text-align: left;"><span style="font-size: 12pt; font-family: 宋体;">&nbsp;</span>

</p>
<p class="MsoNormal" style="text-align: left;"><em><span style="font-size: 12pt; font-family: 宋体;">参考资料：</span>

</em>

</p>
<p class="MsoNormal" style="text-align: left;"><em><span style="font-size: 12pt; font-family: 宋体;">《<span lang="EN-US">DWR</span>

中文文档<span lang="EN-US">V0.9</span>

》<span lang="EN-US">----</span>

方佳玮</span>

</em>

</p>
<p class="MsoNormal" style="text-align: left;"><span lang="EN-US"><a href="http://www.javaeye.com/"><em><span style="font-size: 12pt; font-family: 宋体; color: purple;">Www.javaeye.com</span>

</em>

</a>

</span>

<em><span style="font-size: 12pt; font-family: 宋体;">网站相关资料</span>

</em>

</p>
<p style="text-align: left;"><span style="font-size: large;">
<p><span style="font-size: small;"><span style="font-family: 宋体;">
<p class="Char" style="MARGIN: 0cm 0cm 0pt">&nbsp;</p>
</span>

</span>

</p>
</span>

</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://flyneil.javaeye.com/blog/181761#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 11 Apr 2008 14:14:18 +0800</pubDate>
        <link>http://flyneil.javaeye.com/blog/181761</link>
        <guid>http://flyneil.javaeye.com/blog/181761</guid>
      </item>
      </channel>
</rss>