`
rq2_79
  • 浏览: 239023 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

dwr运行原理研究

阅读更多

        以前曾经在做一个项目的时候用过dwr,最近有点时间想总结一下,就写出来吧。省却需要的朋友不少自己琢磨的时间。

        客户端的发送信息过程:

        透过engine.js可以看到客户端发送信息的过程。

        调 用服务器端远程方法的时候,为了减少多次和服务器端的通信,dwr允许将几个调用组成一个batch。在dwr.engine._sendData()方 法中,我们可以得知dwr将类似下面的数据封装成在request.body中。然后通过batch.req.send(request.body);发 送到服务器端。batch.req就是一个xmlHttpRequest对象或者ActiveXObject对象【根据不同的浏览器会有不同】

        在batch里面只有一个调用的时候,发送的数据形式如下:

java 代码
 
  1. callCount=1  
  2.   
  3. page=/hsell/saleroom.do  
  4.   
  5. httpSessionId=9002B6DEF1F3107925212B0F1A0E46DB  
  6.   
  7. scriptSessionId=5C5BECA8B721ACA5A23DFE9965EE15F5417  
  8.   
  9. c0-scriptName=SystemFaced           //配置的spring bean 的id或者类名  
  10.   
  11. c0-methodName=getCustomByCardId               //远程方法名  
  12.   
  13. c0-id=0  
  14.   
  15. c0-e1=string:342201198106244710               //向远程方法传递的数据  
  16.   
  17. c0-e2=string:342201198106244710  
  18.   
  19. c0-param0=Object_Object:{cardid1:reference:c0-e1, cardid2:reference:c0-e2}  
  20.   
  21. batchId=0  

 

那么将这些信息发送到哪个地址呢?

远程目的地址request.url中。url是类似于下面的这种格式。

http://localhost:8080/hsell/dwr/call/plaincall/SystemFaced.getCustomByCardId.dwr

SystemFaced.getCustomByCardId.dwr 中SystemFaced是我配置的spring bean的id或者是你自己的类名。

getCustomByCardId就是调用的远程方法名。

批量时候的情况

发送的数据类似下面的格式

java 代码
 
  1. callCount=2                    //内有两个远程调用  
  2.   
  3. page=/DWRTest/test.html  
  4.   
  5. httpSessionId=0B25A58FE06A0DF746B782F61A7F01B7  
  6.   
  7. scriptSessionId=8AE5628F0BBB54D89DE18B0F09A44785296  
  8.   
  9. c0-scriptName=Demo  
  10.   
  11. c0-methodName=getWords  
  12.   
  13. c0-id=0  
  14.   
  15. c1-scriptName=Demo  
  16.   
  17. c1-methodName=sayWords  
  18.   
  19. c1-id=1  
  20.   
  21. batchId=0  

 

目标url就是下面这种情况

http://localhost:8080/DWRTest/dwr/call/plaincall/Multiple.2.dwr

服务器端从客户端把调用的方法名和类名或者spring的bean id提取出来,根据配置文件找到对应的类和方法。然后执行之,将结果返回。

分享到:
评论

相关推荐

    dwr源码运行即可

    导入并运行这些源码,可以让开发者深入理解DWR的工作原理,了解其内部结构和功能实现。 DWR的主要特点包括: 1. **自动类型转换**:DWR能够自动将Java对象转换为JavaScript对象,反之亦然,大大简化了数据交换的...

    DWR的学习资料,DWR学习必备

    DWR开发培训.ppt、DWR.ppt:这些可能是DWR的培训演示文稿,包含了一系列主题的讲解,可能涵盖了DWR的工作原理、核心组件、使用示例和最佳实践。通过这些PPT,你可以系统地学习DWR,并通过实例加深理解。 DWR与界面...

    Dwr例子带注释

    通过研究这个"TestDwr"项目,你可以了解到如何在实际应用中集成和使用DWR,理解DWR的工作原理,并掌握创建交互式Web应用的基本技能。这个简单的例子可以帮助你快速上手DWR,为后续深入学习和实践打下基础。

    dwr comet的MyEclipse工程,可直接运行

    标题 "dwr comet的MyEclipse工程,可直接运行" 提供了我们今天要讨论的核心内容,即一个基于DWR...同时,通过解压并研究工程中的文件,你可以深入理解DWR和Comet的实现原理,以及如何在MyEclipse中进行配置和调试。

    dwr.jar/dwr-2.0.5-src.zip/dwr.zip

    这是DWR的核心库文件,包含了运行DWR所需的所有类和资源。当你在项目中引入dwr.jar,你可以使用DWR提供的API来实现Ajax功能。这个jar文件包括了各种Servlet、Filter、JavaScript接口和辅助类,使得开发者可以轻松地...

    dwr_demo_test

    Direct Web Remoting (DWR) 是一个开源的Java库,它允许JavaScript在浏览器和服务器之间进行交互,就像在...通过深入研究`dwr.xml`配置、Java服务端代码以及JavaScript调用,你可以进一步掌握DWR的工作原理和最佳实践。

    基于DWR的AJAX技术研究与实现.pdf

    "基于DWR的AJAX技术研究与实现" 本文主要研究了基于DWR的AJAX技术的实现机制和应用。DWR是一个基于Java的开源框架,允许将服务器端的对象上的方法直接暴露给AJAX请求,从而可以直接调用服务器上的Servlet并获取处理...

    dwr 代码 下载

    这些文件可以帮助你了解DWR的工作原理,学习如何配置和使用DWR,以及查看DWR如何与其他技术(如Spring、Struts等)集成。 为了有效地利用这个资源,你需要: 1. **阅读文档**:首先,查阅DWR的官方文档,理解其...

    DWR资源集合

    - **DWR中文教程.pdf 和 DWR中文文档.pdf**:这些是DWR的中文教程和文档,对于中文用户来说,可以更方便地学习和理解DWR的工作原理和使用方法。 通过这个资源集合,开发者不仅可以了解DWR的基本概念,还可以深入...

    学习dwr的一个例子

    总的来说,"学习dwr的一个例子"这个压缩包提供了一个实战平台,帮助初学者理解DWR的使用方法和它在实际项目中的应用,通过学习和研究这个例子,你将能够熟练地将DWR集成到你的Web应用中,提升Web应用的交互性和性能...

    DWR源码(eclipse源码)

    3. **使用DWR API**:研究DWR提供的各种API,如`dwr.engine`和`Batch`对象,以及如何在JavaScript中调用Java方法。 4. **实例实践**:通过prjdwr2中的示例代码,动手实践DWR的使用,加深理解。 5. **优化与安全**:...

    dwr学习实例+dwr完整包(简单登陆,完整版,下载可直接跑)

    在本实例中,我们看到的是一个基于DWR的简单登录系统,它包含了一个完整的包,下载后可以直接运行,这对于初学者来说是极好的学习资源。 这个实例主要展示了以下几个知识点: 1. **DWR的基本概念**:DWR的核心是它...

    DWR3消息推送(聊天Demo)

    DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现...通过研究这个项目,你可以深入理解DWR的工作原理,以及如何在实际项目中集成和优化消息推送功能。

    dwr-1.1.3-src.zip

    这个压缩包"DWR-1.1.3-src.zip"包含了DWR 1.1.3版本的源代码,这对于开发者来说是一个非常宝贵的资源,因为可以深入理解其内部工作原理,调试或定制DWR以满足特定项目需求。 DWR的核心功能是提供了一种方式使得...

    dwr官方资料

    1. `dwr.jar`:这是DWR的库文件,包含了运行DWR所需的所有类和资源。开发者需要将这个文件部署到服务器的应用服务器或Web应用的`WEB-INF/lib`目录下,以便服务器能够加载并执行DWR的功能。 2. `dwr-2.0.M2-src.zip`...

    dwr 入门例子(eclipse 工程)

    DWR (Direct Web Remoting) 是一个开源Java库,它允许Web应用...这个入门例子是学习和理解DWR功能的一个好起点,通过实际操作,你可以深入理解DWR的工作原理以及如何在实际项目中应用它来创建无刷新的交互式Web应用。

    dwr第一个绝对正常运行的例子

    在这个“dwr第一个绝对正常运行的例子”中,我们将深入探讨DWR的核心概念、工作原理以及如何设置一个基本的DWR应用。 DWR的主要功能是提供一种安全且高效的方式,使得JavaScript可以调用服务器端的Java方法,从而...

    Java Dwr实现消息精准推送以及js调用后台+demo

    通过阅读和运行Demo,你可以理解DWR的工作原理,学习如何设置和调用后台方法,以及如何实现消息推送。 总结起来,这个主题涵盖了使用DWR进行JavaScript与Java后台交互的基本步骤,以及利用DWR的Push功能实现消息...

    DWR 含架包

    首先,你需要配置DWR的Servlet在服务器上运行,并在Web应用的`web.xml`中添加相应的配置。然后,在服务器端创建Java类和方法,这些方法会被DWR暴露给客户端。接着,在客户端的HTML或JavaScript文件中,引入DWR的...

    dwr2.0学习例子

    **DWR 2.0 学习例子** ...这个"Dwr2.0学习例子"提供了实践DWR功能的机会,对于理解DWR的工作原理和提升Ajax开发技能非常有帮助。通过深入学习和实践,开发者能够更好地利用DWR的优势,提高Web应用的交互性和响应速度。

Global site tag (gtag.js) - Google Analytics