dwr入门实例三

在2月份实习的时候,公司给我们的第一个任务就是阅读开源项目的源代码,我选择的是dwr。由于刚开始实习的时候,在前端技术中心,故主要分析了下前端的代码和交互协议。

前面写了两篇入门实例,也做了一些简单的分析使用。本篇本应该在实习的时候就发出来的,但是由于本人过于懒惰和各种其他种种原因,没有继续写下去。最近一项,目用到dwr,又恰恰使用到这个功能,所以想了想还是发出来做个笔记记录吧。

这个功能就是dwr的批请求,这个可以在一个http请求里面,调用几个java方法,这也属于dwr的一个基础功能,属于入门级别的,但是在项目中应该是非常实用和经常会使用到的吧。只需要你在javascript代码里面写上如下几句代码结构就可以实现批处理请求了:

dwr.engine.beginBatch();//开始一个批请求 //中间写你需要调用的java方法,调用格式一般是JAVAClassName.method(),JAVAClassName这是需要在dwr.xml中配置的,这个在前面两篇里面说过的 dwr.engine.endBatch();//完成一次批request 下面是dwr执行这个批处理的一个流程图:

在调用java后台方法时候JAVAClassName.method()的时候这个方法会调用如下方法执行。

ždwr.engine._execute(path , scriptName , methodName , args)。
流程如下:

dwr入门实例三

如果是单请求那么beginBatch、addCall和endBatch,将都在_execute这个方法里面完成。
如果是批请求:先调用dwr.engine.beginBatch(); 开始一个批请求,将创建一个batch,那么在_execute方法里面就会把singleShot设置为true,可以看上面的流程图。
singleShot为true那么就不会调用dwr.engine.endBatch()结束请求(发出ajax调用),故这样execute这个方法里面就主要调用的addCall这个方法添加请求(实际是不会发出ajax请求的),最后我们手动调用endBatch才结束,这时才真正的发出ajax请求,调用后台的方法。

当时也写了个更为详细的ppt,等我整理了再上传上来(http://download.csdn.net/detail/lazy_p/3635924下载地址)。