以前曾经在做一个项目的时候用过dwr,最近有点时间想总结一下,就写出来吧。省却需要的朋友不少自己琢磨的时间。
客户端的发送信息过程:
透过engine.js可以看到客户端发送信息的过程。
调 用服务器端远程方法的时候,为了减少多次和服务器端的通信,dwr允许将几个调用组成一个batch。在dwr.engine._sendData()方 法中,我们可以得知dwr将类似下面的数据封装成在request.body中。然后通过batch.req.send(request.body);发 送到服务器端。batch.req就是一个xmlHttpRequest对象或者ActiveXObject对象【根据不同的浏览器会有不同】
在batch里面只有一个调用的时候,发送的数据形式如下:
- callCount=1
- page=/hsell/saleroom.do
- httpSessionId=9002B6DEF1F3107925212B0F1A0E46DB
- scriptSessionId=5C5BECA8B721ACA5A23DFE9965EE15F5417
- c0-scriptName=SystemFaced //配置的spring bean 的id或者类名
- c0-methodName=getCustomByCardId //远程方法名
- c0-id=0
- c0-e1=string:342201198106244710 //向远程方法传递的数据
- c0-e2=string:342201198106244710
- c0-param0=Object_Object:{cardid1:reference:c0-e1, cardid2:reference:c0-e2}
- batchId=0
那么将这些信息发送到哪个地址呢?
远程目的地址request.url中。url是类似于下面的这种格式。
http://localhost:8080/hsell/dwr/call/plaincall/SystemFaced.getCustomByCardId.dwr
SystemFaced.getCustomByCardId.dwr 中SystemFaced是我配置的spring bean的id或者是你自己的类名。
getCustomByCardId就是调用的远程方法名。
批量时候的情况
发送的数据类似下面的格式
- callCount=2 //内有两个远程调用
- page=/DWRTest/test.html
- httpSessionId=0B25A58FE06A0DF746B782F61A7F01B7
- scriptSessionId=8AE5628F0BBB54D89DE18B0F09A44785296
- c0-scriptName=Demo
- c0-methodName=getWords
- c0-id=0
- c1-scriptName=Demo
- c1-methodName=sayWords
- c1-id=1
- batchId=0
目标url就是下面这种情况
http://localhost:8080/DWRTest/dwr/call/plaincall/Multiple.2.dwr
服务器端从客户端把调用的方法名和类名或者spring的bean id提取出来,根据配置文件找到对应的类和方法。然后执行之,将结果返回。
相关推荐
导入并运行这些源码,可以让开发者深入理解DWR的工作原理,了解其内部结构和功能实现。 DWR的主要特点包括: 1. **自动类型转换**:DWR能够自动将Java对象转换为JavaScript对象,反之亦然,大大简化了数据交换的...
DWR开发培训.ppt、DWR.ppt:这些可能是DWR的培训演示文稿,包含了一系列主题的讲解,可能涵盖了DWR的工作原理、核心组件、使用示例和最佳实践。通过这些PPT,你可以系统地学习DWR,并通过实例加深理解。 DWR与界面...
通过研究这个"TestDwr"项目,你可以了解到如何在实际应用中集成和使用DWR,理解DWR的工作原理,并掌握创建交互式Web应用的基本技能。这个简单的例子可以帮助你快速上手DWR,为后续深入学习和实践打下基础。
标题 "dwr comet的MyEclipse工程,可直接运行" 提供了我们今天要讨论的核心内容,即一个基于DWR...同时,通过解压并研究工程中的文件,你可以深入理解DWR和Comet的实现原理,以及如何在MyEclipse中进行配置和调试。
这是DWR的核心库文件,包含了运行DWR所需的所有类和资源。当你在项目中引入dwr.jar,你可以使用DWR提供的API来实现Ajax功能。这个jar文件包括了各种Servlet、Filter、JavaScript接口和辅助类,使得开发者可以轻松地...
Direct Web Remoting (DWR) 是一个开源的Java库,它允许JavaScript在浏览器和服务器之间进行交互,就像在...通过深入研究`dwr.xml`配置、Java服务端代码以及JavaScript调用,你可以进一步掌握DWR的工作原理和最佳实践。
"基于DWR的AJAX技术研究与实现" 本文主要研究了基于DWR的AJAX技术的实现机制和应用。DWR是一个基于Java的开源框架,允许将服务器端的对象上的方法直接暴露给AJAX请求,从而可以直接调用服务器上的Servlet并获取处理...
这些文件可以帮助你了解DWR的工作原理,学习如何配置和使用DWR,以及查看DWR如何与其他技术(如Spring、Struts等)集成。 为了有效地利用这个资源,你需要: 1. **阅读文档**:首先,查阅DWR的官方文档,理解其...
- **DWR中文教程.pdf 和 DWR中文文档.pdf**:这些是DWR的中文教程和文档,对于中文用户来说,可以更方便地学习和理解DWR的工作原理和使用方法。 通过这个资源集合,开发者不仅可以了解DWR的基本概念,还可以深入...
总的来说,"学习dwr的一个例子"这个压缩包提供了一个实战平台,帮助初学者理解DWR的使用方法和它在实际项目中的应用,通过学习和研究这个例子,你将能够熟练地将DWR集成到你的Web应用中,提升Web应用的交互性和性能...
3. **使用DWR API**:研究DWR提供的各种API,如`dwr.engine`和`Batch`对象,以及如何在JavaScript中调用Java方法。 4. **实例实践**:通过prjdwr2中的示例代码,动手实践DWR的使用,加深理解。 5. **优化与安全**:...
在本实例中,我们看到的是一个基于DWR的简单登录系统,它包含了一个完整的包,下载后可以直接运行,这对于初学者来说是极好的学习资源。 这个实例主要展示了以下几个知识点: 1. **DWR的基本概念**:DWR的核心是它...
DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现...通过研究这个项目,你可以深入理解DWR的工作原理,以及如何在实际项目中集成和优化消息推送功能。
这个压缩包"DWR-1.1.3-src.zip"包含了DWR 1.1.3版本的源代码,这对于开发者来说是一个非常宝贵的资源,因为可以深入理解其内部工作原理,调试或定制DWR以满足特定项目需求。 DWR的核心功能是提供了一种方式使得...
1. `dwr.jar`:这是DWR的库文件,包含了运行DWR所需的所有类和资源。开发者需要将这个文件部署到服务器的应用服务器或Web应用的`WEB-INF/lib`目录下,以便服务器能够加载并执行DWR的功能。 2. `dwr-2.0.M2-src.zip`...
DWR (Direct Web Remoting) 是一个开源Java库,它允许Web应用...这个入门例子是学习和理解DWR功能的一个好起点,通过实际操作,你可以深入理解DWR的工作原理以及如何在实际项目中应用它来创建无刷新的交互式Web应用。
在这个“dwr第一个绝对正常运行的例子”中,我们将深入探讨DWR的核心概念、工作原理以及如何设置一个基本的DWR应用。 DWR的主要功能是提供一种安全且高效的方式,使得JavaScript可以调用服务器端的Java方法,从而...
通过阅读和运行Demo,你可以理解DWR的工作原理,学习如何设置和调用后台方法,以及如何实现消息推送。 总结起来,这个主题涵盖了使用DWR进行JavaScript与Java后台交互的基本步骤,以及利用DWR的Push功能实现消息...
首先,你需要配置DWR的Servlet在服务器上运行,并在Web应用的`web.xml`中添加相应的配置。然后,在服务器端创建Java类和方法,这些方法会被DWR暴露给客户端。接着,在客户端的HTML或JavaScript文件中,引入DWR的...
**DWR 2.0 学习例子** ...这个"Dwr2.0学习例子"提供了实践DWR功能的机会,对于理解DWR的工作原理和提升Ajax开发技能非常有帮助。通过深入学习和实践,开发者能够更好地利用DWR的优势,提高Web应用的交互性和响应速度。