﻿<?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-JAVA学习札记-随笔分类-Ajax</title><link>http://www.blogjava.net/jim-jin/category/48397.html</link><description>人生起航点！</description><language>zh-cn</language><lastBuildDate>Fri, 14 Oct 2011 11:27:17 GMT</lastBuildDate><pubDate>Fri, 14 Oct 2011 11:27:17 GMT</pubDate><ttl>60</ttl><item><title>DWR学习笔记</title><link>http://www.blogjava.net/jim-jin/archive/2011/10/10/350886.html</link><dc:creator>簡簡單單 </dc:creator><author>簡簡單單 </author><pubDate>Mon, 10 Oct 2011 08:07:00 GMT</pubDate><guid>http://www.blogjava.net/jim-jin/archive/2011/10/10/350886.html</guid><description><![CDATA[<span style="font-size: 12pt">一.DWR概述&nbsp;&nbsp;&nbsp; </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; DWR是Direct Web Remoting 的缩写。 </span><br /><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; DWR 是一个开放源码的使用 Apache 许可协议的解决方案，它包含服务器端 Java 库、一个 DWR servlet 以及 JavaScript 库。虽然 DWR 不是 Java 平台上唯一可用的 Ajax-RPC工具包，但是它是最成熟的，而且提供了许多有用的功能。 <br /></span>&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">从最简单的角度来说，DWR 是一个引擎，可以把服务器端 Java对象的方法公开给 JavaScript 代码。</span><span style="color: red; font-size: 10pt">使用 DWR 可以有效地从应用程序代码中把 Ajax 的全部请求-响应循环消除掉</span><span style="color: red; font-size: 10pt">。</span><span style="color: #0000ff; font-size: 10pt">这意味着客户端代码再也不需要直接处理 XMLHttpRequest 对象或者服务器的响应。</span><span style="color: #0000ff; font-size: 10pt">不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成 XML。甚至不再需要编写 servlet 代码把 Ajax 请求调整成对 Java 域对象的调用。</span><span style="font-size: 10pt"> ]<br /></span>&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt">DW</span><span style="font-size: 10pt">R</span><span style="font-size: 10pt"> 是作为 Web 应用程序中的 servlet 部署的。把它看作一个黑盒子，这个 servlet 有两个主要作用：</span><span style="color: #ff0000; font-size: 10pt">首先,对于公开的每个类，DWR 动态地生成包含在 Web 页面中的 JavaScript。<br /></span><span style="color: #ff0000; font-size: 10pt">生</span><span style="font-size: 10pt">成的JavaScript包含存根函数，代表Java类上的对应方法并在幕后执行 XMLHttpRequest。这些请求被发送给 DWR，这</span><span style="color: #ff0000; font-size: 10pt">时它的第二个作用就是把请求翻译成服务器端 Java 对象上的方法调用并把方法的返回值放在 servlet 响应中发送回客户端，编码成 JavaScript</span><span style="font-size: 10pt">。DWR 还提供了帮助执行常见的用户界面任务的 JavaScript 工具函数。<br /></span><span style="font-size: 12pt"></span><span style="font-size: 10pt"></span><span style="font-size: 10pt">
<div><span style="font-size: 12pt">二.使用方法</span><br />&nbsp;&nbsp;&nbsp; DWR（Direct Web Remoting）是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。</div>
<div>　它包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容. DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)一样;但是Java代码运行在WEB服务器端而且可以自由访问WEB 服务器的资源.出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用.<br /><span style="font-size: 12pt">2.1、dwr.xml的配置</span><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">1</span>&nbsp;<span style="color: #000000">　　</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">dwr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000">&nbsp;　　&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">allow</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&nbsp;　　&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">create&nbsp;</span><span style="color: #ff0000">creator</span><span style="color: #0000ff">="new"</span><span style="color: #ff0000">&nbsp;javascript</span><span style="color: #0000ff">="testClass"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">4</span>&nbsp;<span style="color: #000000">&nbsp;　　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">include&nbsp;</span><span style="color: #ff0000">method</span><span style="color: #0000ff">="testMethod1"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br /></span><span style="color: #008080">5</span>&nbsp;<span style="color: #000000">　　&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">create</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">6</span>&nbsp;<span style="color: #000000">&nbsp;　&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">allow</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">7</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">dwr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">8</span>&nbsp;<span style="color: #000000"></span></div>
<div>
<p><span style="font-family: 宋体"></span>&lt;allow&gt;<span style="font-family: 宋体">标签中包括可以暴露</span>javascript<span style="font-family: 宋体">访问的东西。</span></p>
<p><span style="font-family: 宋体"></span>&lt;create&gt;<span style="font-family: 宋体">标签中指定</span>javascript<span style="font-family: 宋体">中可以访问的</span>java<span style="font-family: 宋体">类,并定义</span>DWR<span style="font-family: 宋体">应当如何获得要进行远程的类的实例。</span>creator="new"<span style="font-family: 宋体">属性指定</span>java<span style="font-family: 宋体">类实例的生成方式，</span>new<span style="font-family: 宋体">意味着</span>DWR<span style="font-family: 宋体">应当调用类的默认构造函数来获得实例，其他的还有</span>spring<span style="font-family: 宋体">方式，通过与</span>IOC<span style="font-family: 宋体">容器</span>Spring<span style="font-family: 宋体">进行集成来获得实例等等。</span><span>javascript=" testClass "</span><span style="font-family: 宋体">属性指定</span>javascript<span style="font-family: 宋体">代码访问对象时使用的名称。</span><span style="font-family: 宋体">标签指定要公开给</span>javascript<span style="font-family: 宋体">的</span>java<span style="font-family: 宋体">类名。</span></p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-family: 宋体"></span>&lt;include&gt;<span style="font-family: 宋体">标签指定要公开</span>javascript<span style="font-family: 宋体">的方法。不指定的话就公开所有方法。</span></p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-family: 宋体"></span><span style="font-family: 宋体"></span>&lt;exclude&gt;<span style="font-family: 宋体">标签指定要防止被访问的方法。</span></p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-family: 宋体">入门视频:</span></p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-family: 宋体">
<div>http://www.verycd.com/groups/@g1897244/737357.topic</div></span>
<p>&nbsp;</p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-family: 宋体">拓展阅读:</span><span style="font-size: 10pt"><br /></span></p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-size: 10pt">http://baike.baidu.com/view/73492.htm</span></p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-size: 10pt">
<div>http://blog.csdn.net/zhaizhanpo/archive/2008/09/27/2988512.aspx</div></span>
<p>&nbsp;</p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-size: 10pt">
<div>http://blog.csdn.net/caterpillar_here/archive/2006/09/06/1186566.aspx</div></span>
<p>&nbsp;</p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-size: 12pt">三.实例</span><span style="font-size: 10pt"><br /></span></p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-size: 10pt">先下载DWR的JAR包,下载地址: 
<div></div></span>
<p>&nbsp;</p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-size: 12pt">
<div></div></span>
<p>&nbsp;</p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><a href="http://getahead.ltd.uk/dwr/" target="_blank">http://getahead.ltd.uk/dwr/</a><span style="font-size: 10pt"></span></p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt">将demo(dwr-3.0.0.116.rc1-src\core\impl\demo\web\WEB-INF\lib)实例下的jar文件导入新建项目的web-inf/lib目录下,<span style="color: red">另外还要加入dwr.jar.</span></p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt">(注意:要加入commons-logging-1.0.4.jar,缺少有时候会报错.)</p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt">1.在web.xml文件中注册DWRServlet:负责处理客户端的请求，并呼叫Java物件的是DWRServlet</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">web-app&nbsp;</span><span style="color: #ff0000">version</span><span style="color: #0000ff">="2.4"</span><span style="color: #ff0000">&nbsp;xmlns</span><span style="color: #0000ff">="http://java.sun.com/xml/ns/j2ee"</span><span style="color: #ff0000"><br /></span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000"><br /></span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #0000ff">="http://java.sun.com/xml/ns/j2ee&nbsp;<br /></span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #0000ff">&nbsp;&nbsp;&nbsp;&nbsp;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">dwr-invoker</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.directwebremoting.servlet.DwrServlet<br /></span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">debug</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">true</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">dwr-invoker</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/dwr/*</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">web-app</span><span style="color: #0000ff">&gt;</span></div>
<p style="text-indent: -26.25pt; margin-left: 26.25pt">2.编写Java物件,即业务Bean:</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">1</span>&nbsp;<span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;helloWorld;<br /></span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Service&nbsp;{<br /></span><span style="color: #008080">4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;sayHello(String&nbsp;yourName)&nbsp;{&nbsp;<br /></span><span style="color: #008080">6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">可以是访问数据库的复杂代码</span><span style="color: #008000"><br /></span><span style="color: #008080">7</span>&nbsp;<span style="color: #008000"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Hello&nbsp;World&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;yourName;<br /></span><span style="color: #008080">8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">9</span>&nbsp;<span style="color: #000000">}</span></div>
<p style="text-indent: -26.25pt; margin-left: 26.25pt">3.编写dwr.xml:客户端要呼叫这个Java物件，传给它参数，而返回一個字串，客戶端再展示这个字串，很神奇吧？其实就是是要告訴DWRServlet这件事情：</p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">1</span>&nbsp;<span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;dwr&nbsp;PUBLIC&nbsp;"-//GetAhead&nbsp;Limited//DTD&nbsp;Direct&nbsp;Web&nbsp;Remoting&nbsp;2.0//EN"&nbsp;"http://getahead.org/dwr/dwr20.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">dwr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">allow</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">create&nbsp;</span><span style="color: #ff0000">creator</span><span style="color: #0000ff">="new"</span><span style="color: #ff0000">&nbsp;javascript</span><span style="color: #0000ff">="service"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="class"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="helloWorld.Service"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">create</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">allow</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">9</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">dwr</span><span style="color: #0000ff">&gt;</span></div>
<p style="text-indent: -26.25pt; margin-left: 26.25pt">4.测试DWR<br /></p>
<div>将代码放入应用服务器（比如Tomcat），启动。然后在地址栏输入http://localhost:8080/你的工程/dwr<img style="width: 662px; height: 266px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/jim-jin/1.gif" width="662" height="266" /><br /><br /></div>5.编写一个jsp<br />
<div>接下来最后一步就是创建一个jsp文件 <br />1） 要引用几个dwr的js，其中engine.js必须要，如果需要用到dwr提供的一些方便的工具要引用util.js <br />2） 然后还要引用dwr自动生成的js，dwr/interface/service.js，注意js名字要和dwr.xml配置的一样<br />&nbsp;3） js里的service.sayHello和java类的那个有一点区别，多了个参数，用来callback返回的数据<br />index.jsp<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="background-color: #ffff00; color: #000000">&lt;%</span><span style="background-color: #f5f5f5; color: #000000">@&nbsp;page&nbsp;language</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">java</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;pageEncoding</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">UTF-8</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #ffff00; color: #000000">%&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">testDWR</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">='text/javascript'&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">='dwr/util.js'</span><span style="color: #0000ff">&gt;</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">='text/javascript'&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">='dwr/engine.js'</span><span style="color: #0000ff">&gt;</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #ff0000">&nbsp;src</span><span style="color: #0000ff">="dwr/interface/service.js"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;</span><span style="background-color: #f5f5f5; color: #000000"><br /></span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;firstDwr()&nbsp;{<br /></span><span style="color: #008080">10</span>&nbsp;<span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service.sayHello(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">Jorwen</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">,&nbsp;callBackHello);<br /></span><span style="color: #008080">11</span>&nbsp;<span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">12</span>&nbsp;<span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;callBackHello(data)&nbsp;{<br /></span><span style="color: #008080">13</span>&nbsp;<span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(data);<br /></span><span style="color: #008080">14</span>&nbsp;<span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">15</span>&nbsp;<span style="background-color: #f5f5f5; color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="button"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="button"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="测试"</span><span style="color: #ff0000">&nbsp;onclick</span><span style="color: #0000ff">="firstDwr();"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>6.地址栏输入http://localhost:8080/你的工程/index.jsp 显示的结果如下：</div><span style="font-size: 12pt"><img style="width: 526px; height: 393px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/jim-jin/2.gif" width="526" height="393" /></span><br /><span style="font-size: 12pt"></span>
<p>&nbsp;</p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><span style="font-size: 12pt"><br /></span>&nbsp;</p>
<p style="text-indent: -26.25pt; margin-left: 26.25pt"><br /><span style="font-size: 10pt"><span style="font-family: 宋体"></span></span><span style="font-family: 宋体"></span></p></div></div><br /></span> <img src ="http://www.blogjava.net/jim-jin/aggbug/350886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jim-jin/" target="_blank">簡簡單單 </a> 2011-10-10 16:07 <a href="http://www.blogjava.net/jim-jin/archive/2011/10/10/350886.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>