﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-清睛仪明-文章分类-AJAX</title><link>http://www.blogjava.net/msmary/category/26599.html</link><description>书山有路勤为径，学海无涯苦作舟</description><language>zh-cn</language><lastBuildDate>Mon, 22 Oct 2007 00:38:27 GMT</lastBuildDate><pubDate>Mon, 22 Oct 2007 00:38:27 GMT</pubDate><ttl>60</ttl><item><title>有关Ajax技术</title><link>http://www.blogjava.net/msmary/articles/154745.html</link><dc:creator>谭明</dc:creator><author>谭明</author><pubDate>Sun, 21 Oct 2007 11:14:00 GMT</pubDate><guid>http://www.blogjava.net/msmary/articles/154745.html</guid><wfw:comment>http://www.blogjava.net/msmary/comments/154745.html</wfw:comment><comments>http://www.blogjava.net/msmary/articles/154745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/msmary/comments/commentRss/154745.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/msmary/services/trackbacks/154745.html</trackback:ping><description><![CDATA[1.什么是Ajax? <br />
Ajax的全称是：AsynchronousJavaScript+XML <br />
<br />
2.Ajax的定义： <br />
Ajax不是一个技术，它实际上是几种技术，每种技术都有其独特这处，合在一起就成了一个功能强大的新技术。 <br />
<br />
3.Ajax包括： <br />
XHTML和CSS <br />
使用文档对象模型(DocumentObjectModel)作动态显示和交互 <br />
使用XML和XSLT做数据交互和操作 <br />
使用XMLHttpRequest进行异步数据接收 <br />
使用JavaScript将它们绑定在一起 <br />
<br />
Web开发领域的最新时髦术语其实质是&#8220;旧貌换新颜&#8221;。 <br />
<br />
Ajax（AsynchronousJavaScriptandXML）是结合了Java技术、XML以及JavaScript等编程技术，可以让开发人员构建基于Java技术的Web应用，并打破了使用页面重载的惯例。 <br />
<br />
Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样，Web页面不用打断交互流程进行重新加裁，就可以动态地更新。使用Ajax，用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面。 <br />
<br />
异步JavaScript和XML（AJAX）不是什么新技术，而是指这样一种方法：使用几种现有技术——包括级联样式表（CSS）、JavaScript、XHTML、XML和可扩展样式语言转换（XSLT），开发外观及操作类似桌面软件的Web应用软件。实现Ajax的所有组件都已存在了许多年。AdaptivePath的用户体验战略部门主管兼创办合伙人JesseJamesGarrett今年2月发表在AdaptivePath网站上的一篇文章中杜撰了这个术语。 <br />
<br />
异步这个词是指AJAX应用软件与主机服务器进行联系的方式。如果使用旧模式，每当用户执行某种操作、向服务器请求获得新数据，Web浏览器就会更新当前窗口。 <br />
<br />
如果使用AJAX的异步模式，浏览器就不必等用户请求操作，也不必更新整个窗口就可以显示新获取的数据。只要来回传送采用XML格式的数据，在浏览器里面运行的JavaScript代码就可以与服务器进行联系。JavaScript代码还可以把样式表加到检索到的数据上，然后在现有网页的某个部分加以显示。 <br />
<br />
在面向消费者的诸多应用当中，Google的Gmail和GoogleMaps就是最常见的例子。在Gmail当中，AJAX负责如何开启线程会话，以显示不同邮件的文本内容。而在Maps当中，AJAX允许用户以一种似乎无缝的方式拖拉及滚动地图。 <br />
<br />
还有雅虎的Flickr像片共享应用和亚马逊网站的A9搜索引擎。另外，雅虎新的Web邮件服务可能很快就会吸引AJAX支持者的莫大关注，这项服务基于雅虎收购Oddpost后得到的技术。 <br />
<br />
这些UI都充分地使用了后台通道，也被一些开发者称为&#8220;Web2.0&#8221;，并导致了大家对Ajax应用兴趣的猛涨。 <br />
<br />
然而，AJAX应用软件厂商越来越把目光瞄准了企业。譬如说，Scalix的WebAccess电子邮件应用软件其实比微软Outlook自己的Web邮件界面更像Outlook。 <br />
<br />
不过AJAX应用软件的适用领域具有一定的局限性。因为它们利用了一些最新的Web技术，所以只能在某些Web浏览器里面运行——不过AJAX适用的浏览器正越来越多。 <br />
<br />
Ajax <br />
<br />
Ajax，异步JavaScript与XML，是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样，Web页面不用打断交互流程进行重新加裁，就可以动态地更新。使用Ajax，你可以创建接近本地桌面应用的，直接的、高可用的、更丰富的、更动态的Web用户接口界面。 <br />
<br />
Ajax处理过程 <br />
<br />
一个Ajax交互从一个称为XMLHttpRequest的JavaScript对象开始。如同名字所暗示的，它允许一个客户端脚本来执行HTTP请求，并且将会解析一个XML格式的服务器响应。Ajax处理过程中的第一步是创建一个XMLHttpRequest实例。使用HTTP方法（GET或POST）来处理请求，并将目标URL设置到XMLHttpRequest对象上。 <br />
<br />
现在，记住Ajax如何首先处于异步处理状态？当你发送HTTP请求，你不希望浏览器挂起并等待服务器的响应，取而代之的是，你希望通过页面继续响应用户的界面交互，并在服务器响应真正到达后处理它们。要完成它，你可以向XMLHttpRequest注册一个回调函数，并异步地派发XMLHttpRequest请求。控制权马上就被返回到浏览器，当服务器响应到达时，回调函数将会被调用。 <br />
<br />
在JavaWeb服务器上，到达的请求与任何其它HttpServletRequest一样。在解析请求参数后，servlet执行必需的应用逻辑，将响应序列化到XML中，并将它写回HttpServletResponse。 <br />
<br />
<br />
一个Ajax交互从一个称为XMLHttpRequest的JavaScript对象开始。如同名字所暗示的，它允许一个客户端脚本来执行HTTP请求，并且将会解析一个XML格式的服务器响应。Ajax处理过程中的第一步是创建一个XMLHttpRequest实例。使用HTTP方法（GET或POST）来处理请求，并将目标URL设置到XMLHttpRequest对象上。 <br />
<br />
现在，记住Ajax如何首先处于异步处理状态？当你发送HTTP请求，你不希望浏览器挂起并等待服务器的响应，取而代之的是，你希望通过页面继续响应用户的界面交互，并在服务器响应真正到达后处理它们。要完成它，你可以向XMLHttpRequest注册一个回调函数，并异步地派发XMLHttpRequest请求。控制权马上就被返回到浏览器，当服务器响应到达时，回调函数将会被调用。 <br />
<br />
在JavaWeb服务器上，到达的请求与任何其它HttpServletRequest一样。在解析请求参数后，servlet执行必需的应用逻辑，将响应序列化到XML中，并将它写回HttpServletResponse。 <br />
<br />
<br />
一个Ajax交互从一个称为XMLHttpRequest的JavaScript对象开始。如同名字所暗示的，它允许一个客户端脚本来执行HTTP请求，并且将会解析一个XML格式的服务器响应。Ajax处理过程中的第一步是创建一个XMLHttpRequest实例。使用HTTP方法（GET或POST）来处理请求，并将目标URL设置到XMLHttpRequest对象上。 <br />
<br />
现在，记住Ajax如何首先处于异步处理状态？当你发送HTTP请求，你不希望浏览器挂起并等待服务器的响应，取而代之的是，你希望通过页面继续响应用户的界面交互，并在服务器响应真正到达后处理它们。要完成它，你可以向XMLHttpRequest注册一个回调函数，并异步地派发XMLHttpRequest请求。控制权马上就被返回到浏览器，当服务器响应到达时，回调函数将会被调用。 <br />
<br />
在JavaWeb服务器上，到达的请求与任何其它HttpServletRequest一样。在解析请求参数后，servlet执行必需的应用逻辑，将响应序列化到XML中，并将它写回HttpServletResponse。</ca>
<img src ="http://www.blogjava.net/msmary/aggbug/154745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/msmary/" target="_blank">谭明</a> 2007-10-21 19:14 <a href="http://www.blogjava.net/msmary/articles/154745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX DWR基本使用向导(转)</title><link>http://www.blogjava.net/msmary/articles/153422.html</link><dc:creator>谭明</dc:creator><author>谭明</author><pubDate>Tue, 16 Oct 2007 17:18:00 GMT</pubDate><guid>http://www.blogjava.net/msmary/articles/153422.html</guid><wfw:comment>http://www.blogjava.net/msmary/comments/153422.html</wfw:comment><comments>http://www.blogjava.net/msmary/articles/153422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/msmary/comments/commentRss/153422.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/msmary/services/trackbacks/153422.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前言aJax也许很多人比较熟悉，但是dwr可以是应用ajax变得非常的简单，大大提高开发效率，而且dwr还提供了很多有用的js代码，可以说是如虎添翼。
<p>&nbsp;&nbsp;&nbsp; 应用解释可能有部分人根本不知道aJax和dwr是什么东西，用来做什么的？既然标题是基本使用，那我就从dwr有什么用来说说。一般来说，不管是jsp或者是asp要访问数据库都得submit一个form，然后获取数据库或者执行部分逻辑，接着web跳了另外一页把执行的结果显示出来。这个过程web相对于是刷新了一下。那么有什么办法可以令web不刷新，而页面又可以和数据库交互数据呢？有，就是ajax技术，利用web 对象把数据以xml方式submit到web server，然后返回结果，中间全部用javascript操作，页面不闪动或者刷新。但是自己操作xml对象未免有点小烦，能不能把这些工作集成到一个对象里面呢？能，就是dwr.下面开始教你如何使用。</p>
<p>&nbsp;&nbsp;&nbsp; 如何使用</p>
<p>&nbsp;&nbsp;&nbsp; 下载软件包<a href="http://getahead.ltd.uk/dwr/">http://getahead.ltd.uk/dwr/</a>这里就可以</p>
<p>&nbsp;&nbsp;&nbsp; 安装软件包解压软件包，把dwr.jar 文件拷贝到你web项目的WEB-INF/lib 目录中，同时编辑WEB-INF/web.xml文件，在此文件中加入</p>
<li><br />
<div class="codeStyle" twffan="done">
<ol>
    <li>&lt;servlet&gt;
    <li>&nbsp;&nbsp;&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;
    <li>&nbsp;&nbsp;&lt;display-name&gt;DWR&nbsp;Servlet&lt;/display-name&gt;
    <li>&nbsp;&nbsp;&lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt;
    <li>&nbsp;&nbsp;&lt;init-param&gt;
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;debug&lt;/param-name&gt;
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;true&lt;/param-value&gt;
    <li>&nbsp;&nbsp;&lt;/init-param&gt;
    <li>&lt;/servlet&gt;
    <li>
    <li>&lt;servlet-mapping&gt;
    <li>&nbsp;&nbsp;&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;
    <li>&nbsp;&nbsp;&lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt;
    <li>&lt;/servlet-mapping&gt; </li>
</ol>
</div>
<br />
<br />
另外，在WEB-INF目录中建立一个dwr.xml&nbsp;文件，文件内容入下<br />
<div class="codeStyle" twffan="done">
<ol>
    <li>&lt;!DOCTYPE&nbsp;dwr&nbsp;PUBLIC
    <li>&nbsp;&nbsp;&nbsp;&nbsp;"-//GetAhead&nbsp;Limited//DTD&nbsp;Direct&nbsp;Web&nbsp;Remoting&nbsp;1.0//EN"
    <li>&nbsp;&nbsp;&nbsp;&nbsp;"http://www.getahead.ltd.uk/dwr/dwr10.dtd"&gt;
    <li>
    <li>&lt;dwr&gt;
    <li>&nbsp;&nbsp;&lt;allow&gt;
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;create&nbsp;creator="new"&nbsp;javascript="JDate"&gt;
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param&nbsp;name="class"&nbsp;value="java.util.Date"/&gt;
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/create&gt;
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;create&nbsp;creator="new"&nbsp;javascript="Demo"&gt;
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param&nbsp;name="class"&nbsp;value="your.java.Bean"/&gt;
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/create&gt;
    <li>&nbsp;&nbsp;&lt;/allow&gt;
    <li>&lt;/dwr&gt; </li>
</ol>
</div>
<br />
<br />
&nbsp;&nbsp;&nbsp; 这个可以说也是dwr的配置文件最后，重新启动你的tomcat或者resin等jsp web server.
<li>&nbsp;&nbsp;&nbsp; 测试安装效果在ie敲入<a href="http://localhost/">http://localhost</a>：8080/[YOUR-WEBAPP]/dwr/
<li>&nbsp;&nbsp;&nbsp; 如果成功显示页面，那说明你安装正确了。
<li>&nbsp;&nbsp;&nbsp; 应用于网页测试页会显示JDate （java.util.Date） ，这个是也是例子，通过javascript调用web server中的java.util.Date，也相当于调用web server里面的一个bean.那么我们如何使用他呢？
<li>&nbsp;&nbsp;&nbsp; 你可以在自己的html文件中加入
<li><br />
&nbsp;&nbsp;
<div class="codeStyle" twffan="done">
<ol>
    <li>&lt;script&nbsp;type='text/javascript'&nbsp;src='/sc/dwr/interface/JDate.js'&gt;&lt;/script&gt;
    <li>&nbsp;&nbsp;&lt;script&nbsp;type='text/javascript'&nbsp;src='/sc/dwr/engine.js'&gt;&lt;/script&gt; </li>
</ol>
</div>
<br />
<br />
比如我们要用bean中的toLocaleString方法返回一个时间string.那么你可以在javascript中编写<br />
<br />
<div class="codeStyle" twffan="done">
<ol>
    <li>function&nbsp;displayLocaleDate()
    <li>{</font></em>
    <li>&nbsp;&nbsp;&nbsp;var&nbsp;str&nbsp;=&nbsp;JDate.toLocaleString();
    <li>&nbsp;&nbsp;&nbsp;alert(str);
    <li>}</font></em> </li>
</ol>
</div>
<br />
<br />
&nbsp;&nbsp;&nbsp; 当运行displayLocaleDate（）方法就会弹出时间。
<li>&nbsp;&nbsp;&nbsp; 总结以上只是个调用服务器Date javabean的简单例子，你可以更加自己的需要写相应的bean，可以做出非常出色的基于web聊天网站，或者实时图表显示应用。 </li>
<img src ="http://www.blogjava.net/msmary/aggbug/153422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/msmary/" target="_blank">谭明</a> 2007-10-17 01:18 <a href="http://www.blogjava.net/msmary/articles/153422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DWR实现省市县三级联动(转)</title><link>http://www.blogjava.net/msmary/articles/153420.html</link><dc:creator>谭明</dc:creator><author>谭明</author><pubDate>Tue, 16 Oct 2007 17:14:00 GMT</pubDate><guid>http://www.blogjava.net/msmary/articles/153420.html</guid><wfw:comment>http://www.blogjava.net/msmary/comments/153420.html</wfw:comment><comments>http://www.blogjava.net/msmary/articles/153420.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/msmary/comments/commentRss/153420.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/msmary/services/trackbacks/153420.html</trackback:ping><description><![CDATA[<p>本例子是由MySQL数据库，结合前台使用Struts来完成的。主要是为了说明DWR的使用，所以对于数据库的设计等等都较简单，大家觉得那里有什么不合理之处请给我留言！数据库创建的脚本在附件里面。 <br />
数据库的大概设计是，共有三个字段[id,name,parentid]，顾名思义，id就是唯一标示一条记录，name存放的是省市县的名称，parentid存放的其上级的id，例如对于省一级别的，其parentid全部为0，对于市一级别的，其parentid存放的是所对应省的id，对于县一级别的，其parentid存放的是所对应市的id。 <br />
首先在进入显示页面的时候就把所有的parentid=0的全部查出来，初始化进入省所在的下拉列表中，然后根据选择省的下拉列表，通过DWR调用java方法将其所对应的市取出来，以此类推&#8230;&#8230; <br />
这里主要需要说明的是在<span style="color: red">web.xml</span>里面需要配置如下： <br />
</p>
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">servlet</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>dwr-invoker</span><span class="tag">&lt;/</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-class</span><span class="tag">&gt;</span><span>uk.ltd.getahead.dwr.DWRServlet</span><span class="tag">&lt;/</span><span class="tag-name">servlet-class</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">init-param</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">param-name</span><span class="tag">&gt;</span><span>debug</span><span class="tag">&lt;/</span><span class="tag-name">param-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">param-value</span><span class="tag">&gt;</span><span>true</span><span class="tag">&lt;/</span><span class="tag-name">param-value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">init-param</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">servlet</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>dwr-invoker</span><span class="tag">&lt;/</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>/dwr/*</span><span class="tag">&lt;/</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">servlet-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</div>
<script>render_code();</script><br />
然后在web.xml的同目录下，创建一个<span style="color: red">dwr.xml</span>，配置如下： <br />
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;?</span><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"UTF-8"</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&lt;!DOCTYPE&nbsp;dwr&nbsp;PUBLIC&nbsp;"-//GetAhead&nbsp;Limited//DTD&nbsp;Direct&nbsp;Web&nbsp;Remoting&nbsp;0.4//EN"&nbsp;"http://www.getahead.ltd.uk/dwr/dwr.dtd"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">dwr</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">allow</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">create</span><span>&nbsp;</span><span class="attribute">creator</span><span>=</span><span class="attribute-value">"new"</span><span>&nbsp;</span><span class="attribute">javascript</span><span>=</span><span class="attribute-value">"province"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">param</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"class"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"com.xinli.struts.service.ProvinceService"</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">create</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">allow</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span class="tag">&lt;/</span><span class="tag-name">dwr</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</div>
<script>render_code();</script>对于dwr.xml需要说明的是： <br />
1.creator：定义供javascript调用的新建对象的方法，也即对象的构造方法。其可以包括【new，none，scripted，spring，jsf，struts，pageflow，ejb3】关于creator的具体用法，可以参照<a href="http://getahead.org/dwr/server/dwrxml/creators" target="blank">http://getahead.org/dwr/server/dwrxml/creators</a>。 <br />
2.javascript：java类暴露给浏览器所调用的javascript的名称，也就是在jsp页面所出现的js的名称一定和此处所定义的一致。 <br />
3.param：指定create元素所需要的参数，比如其允许创建的java类的名称。 <br />
4.name：param元素所指定的参数名称。 <br />
5.value：param元素所指定的参数值。 <br />
后台业务方法实现如下<span style="color: red">ProvinceDAO</span>： <br />
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">package</span><span>&nbsp;com.xinli.struts.dao; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;</span>
    <li class="alt"><span class="keyword">import</span><span>&nbsp;java.sql.Connection; &nbsp;&nbsp;</span></span>
    <li class=""><span class="keyword">import</span><span>&nbsp;java.sql.ResultSet; &nbsp;&nbsp;</span></span>
    <li class="alt"><span class="keyword">import</span><span>&nbsp;java.sql.SQLException; &nbsp;&nbsp;</span></span>
    <li class=""><span class="keyword">import</span><span>&nbsp;java.sql.Statement; &nbsp;&nbsp;</span></span>
    <li class="alt"><span class="keyword">import</span><span>&nbsp;java.util.HashMap; &nbsp;&nbsp;</span></span>
    <li class=""><span class="keyword">import</span><span>&nbsp;java.util.Map; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;</span>
    <li class=""><span class="keyword">import</span><span>&nbsp;com.xinli.struts.db.DBManager; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;</span>
    <li class=""><span class="comment">/** </span>&nbsp;</span>
    <li class="alt"><span><span class="comment">&nbsp;*&nbsp;@author&nbsp;fuhao </span>&nbsp;</span>
    <li class=""><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;ProvinceDAO&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;Connection&nbsp;conn&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;Statement&nbsp;stmt&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;ResultSet&nbsp;rs&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;全取所有的parentid=0的记录,也即将所有的省查询出来,放入Map中 </span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;Map&nbsp;getFirst()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;SQLException&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;map&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;HashMap(); &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql&nbsp;=&nbsp;</span><span class="string">"select&nbsp;*&nbsp;from&nbsp;province&nbsp;where&nbsp;parentid&nbsp;=&nbsp;"</span><span>&nbsp;+&nbsp;</span><span class="number">0</span><span>; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;=&nbsp;DBManager.getConnection(); &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt&nbsp;=&nbsp;conn.createStatement(); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs&nbsp;=&nbsp;stmt.executeQuery(sql); &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>&nbsp;(rs.next())&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(rs.getInt(</span><span class="string">"id"</span><span>),&nbsp;rs.getString(</span><span class="string">"name"</span><span>)); &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;map; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">"----获得省的方法出现异常:"</span><span>&nbsp;+&nbsp;e); &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">finally</span><span>&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(rs&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>&nbsp;&amp;&amp;&nbsp;stmt&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>&nbsp;&amp;&amp;&nbsp;conn&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close(); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close(); &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close(); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;根据parentid获得其下所对应的记录 </span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;Map&nbsp;getChildByParentId(String&nbsp;id)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;SQLException&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;map&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;HashMap(); &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql&nbsp;=&nbsp;</span><span class="string">"select&nbsp;*&nbsp;from&nbsp;province&nbsp;as&nbsp;p&nbsp;where&nbsp;p.parentid&nbsp;="</span><span>&nbsp;+&nbsp;id; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;=&nbsp;DBManager.getConnection(); &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt&nbsp;=&nbsp;conn.createStatement(); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs&nbsp;=&nbsp;stmt.executeQuery(sql); &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>&nbsp;(rs.next())&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(rs.getInt(</span><span class="string">"id"</span><span>),&nbsp;rs.getString(</span><span class="string">"name"</span><span>)); &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;map; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">"----根据父id获得子记录的方法出现异常:"</span><span>&nbsp;+&nbsp;e); &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">finally</span><span>&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(rs&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>&nbsp;&amp;&amp;&nbsp;stmt&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>&nbsp;&amp;&amp;&nbsp;conn&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close(); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close(); &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close(); &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
</div>
<img src ="http://www.blogjava.net/msmary/aggbug/153420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/msmary/" target="_blank">谭明</a> 2007-10-17 01:14 <a href="http://www.blogjava.net/msmary/articles/153420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么是DWR(转)</title><link>http://www.blogjava.net/msmary/articles/153418.html</link><dc:creator>谭明</dc:creator><author>谭明</author><pubDate>Tue, 16 Oct 2007 17:08:00 GMT</pubDate><guid>http://www.blogjava.net/msmary/articles/153418.html</guid><wfw:comment>http://www.blogjava.net/msmary/comments/153418.html</wfw:comment><comments>http://www.blogjava.net/msmary/articles/153418.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/msmary/comments/commentRss/153418.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/msmary/services/trackbacks/153418.html</trackback:ping><description><![CDATA[<div>DWR是Direct Web Remoting 的缩写。<br />
<br />
DWR 是一个开放源码的使用 Apache 许可协议的解决方案，它包含服务器端 Java 库、一个 DWR servlet 以及 JavaScript 库。虽然 DWR 不是 Java 平台上唯一可用的 Ajax-RPC 工具包，但是它是最成熟的，而且提供了许多有用的功能。<br />
从最简单的角度来说，DWR 是一个引擎，可以把服务器端 Java 对象的方法公开给 JavaScript 代码。使用 DWR 可以有效地从应用程序代码中把 Ajax 的全部请求-响应循环消除掉。这意味着客户端代码再也不需要直接处理 XMLHttpRequest 对象或者服务器的响应。不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成 XML。甚至不再需要编写 servlet 代码把 Ajax 请求调整成对 Java 域对象的调用。<br />
DWR 是作为 Web 应用程序中的 servlet 部署的。把它看作一个黑盒子，这个 servlet 有两个主要作用：首先，对于公开的每个类，DWR 动态地生成包含在 Web 页面中的 JavaScript。生成的 JavaScript 包含存根函数，代表 Java 类上的对应方法并在幕后执行 XMLHttpRequest。这些请求被发送给 DWR，这时它的第二个作用就是把请求翻译成服务器端 Java 对象上的方法调用并把方法的返回值放在 servlet 响应中发送回客户端，编码成 JavaScript。DWR 还提供了帮助执行常见的用户界面任务的 JavaScript 工具函数。</div>
<div>&nbsp;</div>
<div>
<div>util.js&nbsp; util.js包含了一些使用的方法，从而帮助你利用j avascript(可能)从服务器端更新你的web数据。</div>
<div>&nbsp;你可以在DWR之外的地方使用它，因为它并不依赖与DWR而实现。</div>
<div>&nbsp;它包含四个页面处理函数：getValue[s]()、setValue[s]()作用于除tables、lists和images以外的大多数html元素。getText()作用于select lists。</div>
<div>&nbsp;addRows()和removeAllRows()用于编辑tables。addOptions()和removeAllOptions()用于编辑lists(如：select lists、ul、ol)。</div>
<div>$()<br />
&nbsp;$函数(在j avascript中，他的名字是合法的)的思想是从prototype引进的。一般说来，$ = document.getElementById。在以后你花大量时间进行ajax编程的时候，在合适的地方使用这种格式是很有益的。</div>
<div>&nbsp;'$'通过给定的ID在当前HTML页面找到元素，如果多于一个的参数被提交，它就会返回一个包含已找到元素的数组。这个函数从prototype的library中得到的灵感，而且，它还能更好的工作在不同的浏览器中。</div>
<div>&nbsp;</div>
<div>Generating Lists</div>
<div>&nbsp;DWR的一个功能可以给一个下拉列表(select list)添加选项，只需使用DWRUtil.addOptions()。</div>
<div>&nbsp;如果你在更新列表之前，希望保留一些选项，你需要写以下一些代码：</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; var sel = DWRUtil.getValue(id);<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWRUtil.removeAllOptions(id);<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWRUtil.addOptions(id, ...);<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWRUtil.setValue(id, sel);</div>
<div>&nbsp;如果你想有个初始化选项，如：&#8220;please select&#8221;，你可以直接使用：</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; DWRUtil.addOptions(id, ["Please select"]);</div>
<div>DWRUtil.addOptions 有5种调用方法：Array: DWRUtil.addOptions(selectid, array) 。selectid为目标ID,array为每一项的text。</div>
<div>Array of objects (option text = option value): DWRUtil.addOptions(selectid, data, prop) 用text和value的集合来为每一个数组元素创建一个选项，pro参数指定text和value的值。</div>
<div>Array of objects (with differing option text and value): DWRUtil.addOptions(selectid, array, valueprop, textprop) 用text和value的集合来为每一个数组元素创建一个选项，valueprop确定value，textprop确定text。</div>
<div>Object: DWRUtil.addOptions(selectid, map, reverse) 为map中每一个属性(property)创建一个选项，属性名作为选项的value，属性的value作为选项的text。这样做看起来是错的，但实际上这种做法的确是正确的。如果reverse参数被设置为true，则属性的value还是被用做选项的value。</div>
<div>Map of objects: DWRUtil.addOptions(selectid, map, valueprop, textprop) 为map中的每一个对象创建一个选项，valueprop指定选项的value，textprop指定选项的text。</div>
<div>&nbsp;</div>
<div>Generating Tables</div>
<div>DWRUtil.addRows() 从一个数组(第二个参数)取得值，创建table的每一行。从另一个数组(第三个参数)去得值，为table的每一行创建若干列。</div>
<div>&nbsp;</div>
<div>DWRUtil.getText(id)</div>
<div>可以根据id取得text的值，这个方法只能用于select list</div>
<div>DWRUtil.getValue(id)</div>
<div>可以根据id取得value，使用这个方法，你不必在意div和select list的不同。</div>
<div>DWRUtil.getValues()</div>
<div>getValues() is similar to getValue() except that the input is a Javascript object that contains name/value pairs. The names are assumed to be the IDs of HTML elements, and the values are altered to reflect the contents of those IDs. This method does not return the object in question, it alters the value that you pass to it.<br />
这个方法和getValue()一样，只是它传入的是一个包含名字和数值的j avascript对象.这个名字就是HTML元素的ID。这个方法不会返回任何对象，它只会将ID的value映射给传入的value。例：</div>
<div>function doGetValues() {&nbsp;</div>
<div>&nbsp;var text= "{&nbsp;<br />
&nbsp;div:null,<br />
&nbsp;textarea:null,<br />
&nbsp;select:null,<br />
&nbsp;text:null,<br />
&nbsp;password:null,<br />
&nbsp;formbutton:null,<br />
&nbsp;button:null<br />
}";<br />
&nbsp;var object = objectEval(text);&nbsp;&nbsp;&nbsp; //j avascript对象<br />
&nbsp;DWRUtil.getValues(object);<br />
&nbsp;var reply = DWRUtil.toDescriptiveString(object, 2);&nbsp;&nbsp; //toString<br />
&nbsp;reply = reply.replace(/n/g, "&lt;br/&gt;");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //转意<br />
&nbsp;DWRUtil.setValue("getvaluesret", reply);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //显示<br />
}</div>
<div>&nbsp;</div>
<div>DWRUtil.onReturn</div>
<div>贴一段代码，暂时不理解，用onReturn和不用有什么区别</div>
<div>&lt;script&gt;<br />
function submitFunction()<br />
{&nbsp;<br />
&nbsp;&nbsp; $("alert").style.display = "inline";<br />
&nbsp;&nbsp; setTimeout("unsubmitFunction();", 1000);<br />
}<br />
function unsubmitFunction()<br />
{&nbsp;<br />
&nbsp;&nbsp; $("alert").style.display = "none";<br />
}<br />
&lt;/script&gt;</div>
<div>&lt;p&gt;&lt;input type="text" onkeydown="DWRUtil.onReturn(event, submitFunction)"/&gt;<br />
&lt;input type="button" onclick="submitFunction()" value="GO"/&gt;<br />
&lt;span id="alert" style="display:none; background:#FFFFDD; font-weight:bold;"&gt;submitFunction called&lt;/span&gt;<br />
&lt;/p&gt;</div>
<div>&nbsp;</div>
<div>DWRUtil.selectRange</div>
<div>在一个input box里选一个范围</div>
<div>DWRUtil.selectRange("sel-test", $("start").value, $("end").value);</div>
<div>&nbsp;</div>
<div>DWRUtil.setValue(id, value)</div>
<div>用ID找到元素，并更新value</div>
<div>DWRUtil.setValues()</div>
<div>和setValue(id,value)一样，只是它需要的参数是个j avascript对象，如：</div>
<div>DWRUtil.setValues({&nbsp;<br />
&nbsp;div: "new div content",<br />
&nbsp;password: "1234567890"<br />
});</div>
<div>&nbsp;</div>
<div>DWRUtil.toDescriptiveString</div>
<div>带debug信息的toString，第一个为将要debug的对象，第二个参数为处理等级。等级如下：</div>
<div>0: Single line of debug 单行调试&nbsp;<br />
1: Multi-line debug that does not dig into child objects 不分析子元素的多行调试&nbsp;<br />
2: Multi-line debug that digs into the 2nd layer of child objects 最多分析到第二层子元素的多行调试&nbsp;<br />
And so on. Level 2 and greater probably produce too much output.&nbsp;</div>
<div>总结：DWR不但屏蔽了许多client与server交互的重复且复杂的代码，而且还提供了一些常用的方法，一些思想还是从prototype继承而来，并有一定的改进。同时，它也考虑到了与struts、hibernate、spring的结合问题。</div>
<div>需要注意的是，DWR是一种把服务器端的java代码通过j avascript直接从浏览器调用的方法(DWR is a way of calling Java code on the server directly from Javascript in the browser.)，而不是一个j avascript的库(Generally speaking DWR is not a generic JavaScript library so it does not attempt to provide fill this need. However this is one of these really useful functions to have around if you are doing Ajax work.)能做到怎么多，已经很难得了。</div>
<div>DWR自04年11月草案提出到现在的Version 1.1 beta 3(2005-12-29)，已经更新发布了20多次了，但愿在ajax的发展大路上，能始终看见DWR的身影。</div>
</div>
 <img src ="http://www.blogjava.net/msmary/aggbug/153418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/msmary/" target="_blank">谭明</a> 2007-10-17 01:08 <a href="http://www.blogjava.net/msmary/articles/153418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>