免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1175 | 回复: 0
打印 上一主题 下一主题

post 类型-dwr运行原理研究 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-19 14:24 |只看该作者 |倒序浏览
以前曾经在做一个项目的时候用过dwr,最近有点时间想总结一下,就写出来吧。省却需要的朋友不少自己琢磨的时间。
        客户端的发送信息过程:
        透过engine.js可以看到客户端发送信息的过程。
        调 用服务器端远程方法的时候,为了减少多次和服务器端的通信,dwr允许将几个调用组成一个batch。在dwr.engine._sendData()方 法中,我们可以得知dwr将类似下面的数据封装成在request.body中。然后通过batch.req.send(request.body);发 送到服务器端。batch.req就是一个xmlHttpRequest对象或者ActiveXObject对象【根据不同的浏览器会有不同】
        在batch里面只有一个调用的时候,发送的数据形式如下:
java 代码

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就是调用的远程方法名。
批量时候的情况
发送的数据类似下面的格式
java 代码

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/call/plaincall/adminWeblogCategoryManager.getAllWeblogCategoriesOfWebsite.dwr
/dwr/call/plaincall/Multiple.2.dwr

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25102/showart_425927.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP