ToDoTasks: 使用DWR向Java添加AJAX(1)
将基于互联网的Java应用软件做得更具交互性并不一定很困难,直接互联网远程(Direct Web Remoting(DWR))工具包可以帮您实现AJAX中大部分工作。
以往,我们使用过ToDoTasks软件,并将其添加到工作架构中,这样人们可以通过浏览器来查阅报告,这个月,我们将继续前进一步,创建一个更具交互性的浏览器体验。
现在,我们可以通过编写我们自己的servlet或JSP代码来生成更加智能的网页以实现这一点,这种方法行得通,但是在浏览器中使用AJAX/DHTML进行人机交互变得越来越普遍,但它的工作量也是非常大的,而且在维护软件方面也存在潜在的困难,现在有更加快捷的方法,这就是我们将要使用的DWR。
DWR的意思是直接互联网远程工作(Direct Web Remoting),在DWR背后的基本思想是使存在于服务器上的Java类对于运行在浏览器中的JavaScript代码是可见的。
DWR是基于所需要的Java类方法和字段的,DWR创建的JavaScript代码也是访问这些类和字段所必需的,因此您不必自己编写AJAX代码,一下是一个简单的例子:
|
然后,在一个HTML文件中适当的位置进行适当的配置:
这将会调用DWR为Adder生成JavaScript界面,并包括DWR“引擎”代码和DWR工具代码。在页面的脚本中我们可以通过一个调用来访问Adder:
Adder.add(doneAdd,100,200);
脚本中的doneAdd是一个函数引用,该函数是在一个请求完成的时候被调用的,调用的结果就是Adder.add:
|
这在我们的例子中将会弹出"300"的结果。
在建立我们的新用户界面之前,我们在ToDoTasks上的第一站将是让它工作,所以继续使用上一篇文章中的源代码,并添加DWR。首先,下载DWR,DWR 2.0目前还在开发中,所以我们使用现在的1.1版,下载dwr.jar文件。我们将它添加到以前创建的网络应用软件文件夹而不是将jar文件放到libs文件夹中,所以我们webapp/WEB-INF中创建一个lib文件夹并将dwr.jar拷贝到此位置。
在dwr.jar的内部就是DWR所使用的servlet和资源,所以我们需要将DWR servlet和网络应用软件连接起来。编辑webapp/WEB-INF/web.xml文件并加入以下语句:
|
在现有的
|
为了映射DWR servlet来处理所有对/dwr/*的请求。我们使用早前展示过的的代码在src/com/builder/uk/todotasks/创建了Adder.java文件。
现在就只有一个步骤了:配置DWR。DWR是通过webapp/WEB-INF文件夹中一个名为dwr.xml的文件配置的,此文件可以控制哪些Java类对于JavaScript是可见的,以下是连接Adder的dwr.xml的例子:
|
在
Javascript属性指定了该实例在JavaScript代码中使用的名称,最后scope属性设定了对象何时出现以及存续时间,在此,我们指定了"session"所以它将在服务器上浏览器会话开始的时候创建。
现在我们可以运行ToDoTasks程序了,并在浏览器中打开http://localhost:8080/dwr/,在此我们可以看到DWR类的列表,这个页面是DWR测试/调试的前台,我们可以在

图1
当我们点击 Adder的链接,我们将得到Adder的测试页面。

图2
这首先展示了使用Adder时,我们向一个JavaScript页面所需要添加的代码,然后它列出了可供调用的方法,这是一个动态列表,您可以向add()项目的字段中输入值,并点击执行来调用软件/服务器端的方法。

图3
这包含了DWR的基础,为了钻研得深入一些,我们使用了一个新版本的ToDoTasks,您可以用它来构建和运行。和Adder的例子一样,它拥有基于DWR的前端界面,可以查看、编辑和删除任务。

图4
为了管理前端界面,我们创建了一个名为TasksSession的类。这包含了一个Task实例的ArrayList,它可以根据一个SortOrder变量进行排序,该变量可以封装该字段以实现排序,无论是升序还是降序。
- 上一篇:在Ajax开发中如何恰当使用XML(1)
- 下一篇:Ajax框架ZK 2.2发布






