dwr 调用方式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DWR调用方式
1. 什么是DWR
DWR(Direct Web Remoting)是一个开源的Java框架,用于简化在Web应用程序中使用Ajax技术。

它提供了一种简单的方式来将Java代码暴露给JavaScript,并使得在客户端和服务器之间进行远程通信变得更加容易。

DWR允许开发人员通过直接调用服务端的Java方法来处理客户端的请求,而无需编写大量的JavaScript代码来处理网络通信。

这使得开发人员可以更专注于业务逻辑,而无需过多关注底层的网络细节。

2. DWR调用方式
DWR提供了多种方式来进行远程调用,包括:
2.1. 代理方式(Proxy)
代理方式是最常见和推荐的一种DWR调用方式。

通过代理对象,我们可以直接调用服务端的Java方法,并将结果返回给客户端。

在客户端,我们需要首先创建一个代理对象,该对象负责与服务端进行通信。

我们可以使用dwr.engine命名空间下的Proxy对象来创建代理对象,并指定要调用的Java类和方法。

var proxy = new dwr.engine.Proxy();
proxy.setRemoteClass(MyService);
proxy.setRemoteMethod('myMethod');
在上述代码中,MyService是服务端中定义的Java类,myMethod是该类中的一个方法。

然后,我们可以使用代理对象来调用服务端的方法,并处理返回的结果。

proxy.myMethod(param1, param2, {
callback: function(result) {
// 处理返回结果
},
errorHandler: function(message) {
// 处理错误信息
}
});
在上述代码中,param1和param2是传递给服务端方法的参数。

callback函数用于处理返回结果,而errorHandler函数则用于处理错误信息。

2.2. 反向Ajax方式(Reverse Ajax)
反向Ajax方式是一种特殊的DWR调用方式,它允许服务端主动推送数据给客户端。

这在需要实时更新数据或实现聊天功能等场景中非常有用。

在客户端,我们可以使用dwr.engine命名空间下的PollingCometServlet对象来创
建反向Ajax连接,并指定要接收推送数据的回调函数。

var comet = new dwr.engine.PollingCometServlet();
comet.setPath('/dwr/comet');
comet.start(function(data) {
// 处理推送数据
});
在上述代码中,我们通过设置路径来指定反向Ajax连接的URL。

然后,在回调函
数中可以处理接收到的推送数据。

在服务端,我们需要创建一个实现了DwrServletInterface接口的Java类,并重写
其中的方法。

通过调用相应的方法,我们可以将数据推送给客户端。

public class MyCometServlet implements DwrServletInterface {
public void onIncomingData(String data) {
// 接收到数据时的处理逻辑
}
public void onClientTimeout() {
// 客户端超时时的处理逻辑
}
}
2.3. 轮询方式(Polling)
轮询方式是一种简单直观的DWR调用方式,它通过定期向服务端发送请求来获取最新数据。

在客户端,我们可以使用dwr.engine命名空间下的Util对象来进行轮询调用。


们需要指定要调用的Java类和方法,并设置轮询时间间隔。

dwr.engine.Util.addOptions({
pollInterval: 5000, // 设置轮询时间间隔为5秒
reverseAjax: true// 开启反向Ajax支持
});
然后,我们可以使用Util对象来调用服务端的方法,并处理返回结果。

dwr.engine.Util.invoke(MyService.myMethod, param1, param2, function(result) {
// 处理返回结果
});
在上述代码中,MyService.myMethod是要调用的Java方法,param1和param2是传
递给该方法的参数。

在回调函数中可以处理返回结果。

在服务端,我们需要创建一个实现了DwrServletInterface接口的Java类,并重写
其中的方法。

通过调用相应的方法,我们可以处理客户端发起的请求并返回结果。

public class MyPollingServlet implements DwrServletInterface {
public void handleRequest(HttpServletRequest request, HttpServletResponse re sponse) {
// 处理客户端请求并返回结果
}
}
3. 总结
DWR是一个强大的Java框架,可以简化在Web应用程序中使用Ajax技术的过程。

通过代理方式、反向Ajax方式和轮询方式等多种调用方式,我们可以方便地实现
客户端与服务端之间的远程通信。

无论是简单的数据获取还是复杂的实时推送,DWR都提供了灵活且易于使用的API
来满足各种需求。

开发人员只需关注业务逻辑,而无需过多关注底层网络通信细节。

希望本文对你理解DWR调用方式有所帮助,并能在实际项目中灵活运用。

相关文档
最新文档