`

DWR整体流程分析(三)(转)

    博客分类:
  • dwr
 
阅读更多

/** The function that we use to fetch/calculate a session id */ 
Java代码 
dwr.engine._getScriptSessionId = function() {   
  if (dwr.engine._scriptSessionId == null) {   
    dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000);   
  }   
  return dwr.engine._scriptSessionId;   
};  

 scriptSessionId是通过原始的脚本SessionId加上一个随机数得到的。parameters:{}参数; headers:{},http请求的头信息;handlers:{}处理器对象;preHooks:[],我把它叫做前勾,作用是在调用服务器的组件的时候,类似一个代理,如果preHooks存在,我先调用它的内容,然后再调用web组件的内容,最后调用postHooks。对于Demo.sayHello = function(p0,callback){dwr.engine._execute(Demo._path,'Demo','sayHello',p0,callback);},它会先调用preHooks的内容,接着执行请求,然后调用postHooks的内容。rpcType:dwr.engine._rpcType指的是请求的类型。因为dwr框架并不是仅仅针对xml、httprequest,它还会针对其他的请求类型:iframe、scriptshell脚本。httpMethod:dwr.engine._httpMethod指的是请求方法:post或者get,在dwr框架中,只允许这两种方式,其它的方式是不允许的。 

async:dwr.engine._async,指的是异步还是同步,在ajax中,open的最后一个参数为true就是异步,false就是同步。如果为false来讲,用ajax就没有什么意义,所以一般来讲就是true.timeout:dwr.engine._timeout,指的是请求的超时时间。 
接下来看execute方法是怎么将vararg_params分割长参数和回调函数的? 
由于vararg_params里面包含了方法的参数以及回调函数,由于execute里面要调用回调函数,因此必须进行方法的参数和回调函数的分割。把参数放到参数的数组中,回调函数放到回调函数的变量中。 
var args = [];用来放置方法的参数,去除回调函数以外的用来调用的方法的参数。 
看看下面的代码: 

for (var i = 0; i < arguments.length - 3; i++) {   
   args[i] = arguments[i + 3];   
 }   
 // All the paths MUST be to the same servlet   
 if (batch.path == null) {   
   batch.path = path;   
 }   
 else {   
   if (batch.path != path) {   
     dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." });   
     return;   
   }   
 }  

 for (var i = 0; i < arguments.length - 3; i++) {
    args[i] = arguments[i + 3];
  }
  // All the paths MUST be to the same servlet
  if (batch.path == null) {
    batch.path = path;
  }
  else {
    if (batch.path != path) {
      dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." });
      return;
    }
  }

 在javascript中,创建一个函数,它有一个隐式的参量arguments,这个arguments相当于我这个函数调用时传进去的几个参数,而且这几个参数都是放置在arguments里面的,它并不是隐式的显示出来,因为弱类型的语言,参数列表个数不同可以调用同一个函数。arguments负责把所有的参数存放在里面。

分享到:
评论

相关推荐

    dwr源码分析

    ### DWR源码分析与应用解析 #### DWR框架简介 DWR,全称为Direct Web Remoting,是一款轻量级的远程调用框架,旨在简化Web应用中的JavaScript与Java之间的通信。通过DWR,开发者可以直接从JavaScript调用服务器端...

    dwr demo dwr简单使用

    DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现动态的Web应用。DWR简化了AJAX(Asynchronous JavaScript and XML)的开发,使得开发者可以像调用...

    DWR的技术分析与界面开发

    在这个压缩包中,包含了一系列关于DWR技术分析、学习资料以及相关的界面开发内容,对于理解和掌握DWR技术至关重要。 首先,DWR的XML配置文件是连接客户端与服务器端的关键,它定义了哪些Java对象和方法可以被...

    dwr dwrdwr

    dwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwr

    DWR实现省市县三级联动小例子

    标题 "DWR实现省市县三级联动小例子" 暗示了这个压缩包可能包含一个使用Direct Web Remoting (DWR) 技术构建的示例项目,该示例展示了如何实现在网页上进行省、市、县三级联动选择的功能。这种功能在很多中国的网站...

    dwr基础_dwr兼容三大框架+视频

    在这个“dwr基础_dwr兼容三大框架+视频”资源中,重点是介绍如何在MyEclipse环境中使用DWR与Spring、Struts2和Hibernate这三大主流Java框架集成。这三大框架分别是: 1. **Spring**:是一个全面的Java应用框架,...

    DWR实现省市县三级联动

    在介绍的省市县三级联动的例子中,通过DWR与AJAX的结合使用,可以实现用户在选择一个省级别之后,页面能够动态地加载并显示该省份下属的所有市级选项。同样地,再选择一个市级之后,页面能够加载并显示该市下属的...

    DWR 实例 + DWR 深入 (源代码分析).doc

    DWR (Direct Web Remoting) 是一个开源框架,它允许JavaScript在浏览器端直接调用Java方法,从而实现AJAX的应用。DWR的核心功能是通过自动转换Java对象为JavaScript对象,使得前端可以像操作本地对象一样操作远程...

    dwr入门例子 包含类型转换

    Direct Web Remoting (DWR) 是一个开源的Java库,它允许在Web应用程序中实现实时的Ajax通信。DWR简化了JavaScript与服务器端Java对象之间的交互,使得开发者可以像调用本地方法一样调用远程服务。在这个入门例子中,...

    DWR3.0.jar、DWR.war和DWR2.0中文说明文档

    这个压缩包包含了DWR的三个关键组件:DWR3.0.jar,DWR的实例war文件,以及DWR2.0的中文说明文档。以下是关于这些组件的详细知识: 1. **DWR3.0.jar**: DWR3.0.jar是DWR框架的核心库,包含所有必需的类和接口,...

    dwr笔记 dwr自学资料

    三、DWR的主要组件 1. **Crawler**:负责在服务器上扫描Java类,生成JavaScript接口。 2. **Engine**:处理客户端的Ajax请求,调用相应的Java方法,并将结果返回给客户端。 3. **Configurator**:配置DWR的行为,...

    dwr反向Ajax的三种情况

    DWR提供了三种反向Ajax技术,分别是轮询、Comet和PiggyBack。 1. **轮询(Polling)**: 轮询是最基础的反向Ajax技术。客户端每隔一定时间(例如几秒或几十秒)就向服务器发送一个请求,询问是否有新数据。如果有...

    dwr中文文档pdf格式

    DWR的使用流程** 1. **引入DWR库**:在Web应用中添加DWR的JAR文件,并在Web.xml中配置DWR的Servlet。 2. **创建Java接口**:定义要在客户端使用的Java接口,这些接口将被DWR暴露给JavaScript。 3. **生成配置文件**...

    dwr.jar 以及dwr配置文件

    同时,DWR提供了丰富的API和工具,简化了前后端的交互流程,提高了开发效率。 在实际项目中,将dwr.jar添加到项目的类路径中,然后在web.xml中配置DWR的servlet,最后根据项目需求调整dwr.xml文件,就可以开始利用...

    Dwr例子带注释

    4. **DWR的运行流程**: - 浏览器加载HTML页面,执行JavaScript代码。 - JavaScript通过DWR发起HTTP请求到服务器。 - DWR Engine接收到请求后,根据`dwr.xml`配置调用相应的Java方法。 - 服务器执行Java方法,...

    dwr练习实例(各种数据转换list,map,数组等)

    Direct Web Remoting (DWR) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,实现Ajax应用。这个"dwR练习实例(各种数据转换list,map,数组等)"是一个用于学习DWR如何处理和转换不同...

    DWR中文文档DWR

    DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器端进行直接的交互,从而实现在Web应用程序中的Ajax功能。DWR的主要目标是简化前后端的数据交换,提高用户体验,使得Web应用能够像桌面...

    DWR中文教程(外带DWR包)

    3. **DWR映射**:学习如何定义`dwr.xml`配置文件,将前端JavaScript对象映射到后端Java类和方法,这是DWR工作流程的关键部分。 4. **基本使用**:教程可能会涵盖如何创建第一个DWR调用,包括异步和同步调用,以及...

    DWR配置文件详解,DWR配置

    **DWR配置文件详解** Direct Web Remoting (DWR) 是一种开源的Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行双向通信。DWR的核心配置文件是`dwr.xml`,该文件定义了DWR允许访问的Java对象、...

Global site tag (gtag.js) - Google Analytics