DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接本地客户端调用一样(DWR根据Java类来动态生成JavaScrip代码).
按照Getahead官方网站上的步骤,可以按照如下的步骤来尝试第一个DWR应用:
1. 我首先创建了一个简单的Tomcat项目dwrstudy,IDE是Eclipse;
2. 将已经下载的dwr.jar文件放入WEB-INF/lib目录下;
3. 在部署描述符文件(web.xml)中注册如下一个servlet
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
4. 创建一个dwr.xml放在WEB-INF目录下面,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="JDate">
<param name="class" value="java.util.Date"/>
</create>
</allow>
</dwr>
上面的文件表明将会根据java.util.Date类创建一个JDate.js文件,
5. 在浏览器中输入http://localhost:8888/dwrstudy/dwr/index.html,此时将会列出所有的JS文件名以及它所对应的Java类,例如本例中将显示如下列表:JDate (java.util.Date),点开链接会看到关于这个类的详细说明。
6. 如何使用dwr呢?按照说明,我新建了一个index.html文件,内容如下:
<!DOCTYPE html PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<script src='/dwrstudy/dwr/interface/JDate.js'></script>
<script src='/dwrstudy/dwr/engine.js'></script>
<script type='text/javascript'
src='/dwrstudy/dwr/util.js'></script>
<body>
<input class='ibutton' type='button' onclick='JDate.toString(reply5);'
value='Execute'
title='Calls JDate.toString(). View source for details.' />
<script type='text/javascript'>
var reply5 = function(test){
if (test != null && typeof test == 'object')
alert(dwr.util.toDescriptiveString(test, 2));
else
dwr.util.setValue('d5', dwr.util.toDescriptiveString(test, 1));
}
</script>
<span id='d5' class='reply'></span>
</body>
</html>
红色背景的代码是我们必须要引入的js,这些js应该是由DWR自动给我们生成的。细细看了一下,隐藏了AJAX的原理。首先,onclick事件触发的函数是JDate.toString,这个函数是dwr自动给我们生成的,它会相应调用java.util.Date类的toString方法,它的参数只有一个reply5,这是一个函数的指针,它是一个回调函数,当java.util.Date类的toString方法执行完毕之后会调用reply5所指向的函数。这个回调函数,有一个参数,它所接收的值就是java.util.Date类的toString方法的返回值。整个流程就和传统的ajax很类似了,通常我们是通过xmlHttpRequest请求服务器端的某个方法,执行完毕后通过onreadystatechange事件来调用回调函数,服务端的执行结果可以写在response中通过xmlHttpRequest的responseXml来获得并进行相应的处理。有点类似于DWR帮我们把这些过程都包装起来了,DWR的理念也就是Easy AJAX For JAVA。DWR is a Java open source library which allows you to write Ajax web sites.
本文介绍了一种简化 AJAX 开发的框架 DWR (Direct Web Remoting) 的基本使用方法。通过示例展示了如何配置 Tomcat 项目、部署 DWR 相关文件及编写 HTML 页面以实现客户端 JavaScript 调用服务器端 Java 方法。
4491





