`

DWR学习笔记(六)

    博客分类:
  • DWR
阅读更多

七.engine.js的功能:engine.js对DWR非常重要,因为它是用来转换和动态生成javascript的接口供函数调用的js库文件,
      所以只要用到DWR的地方就需要导入它。
      <script type="text/javascript" src="/[YOUR-WEB-APP]/dwr/engine.js"></script>
      
   **功能介绍:我们主要可以操作js对象DWREngine来操作一些API,可以设置一些DWR执行性能或着执行方式等。
      主要针对DWR界面通过js调用java对象方法的时候可以使用DWREngine对象进行一些辅助的设置等!
   
      (1)批量调用:可以使用batch来批量的执行远程调用(即DWR界面通过js调用java对象)。
          这样可以减少与服务器的交互次数,所以可以提交反应速度。
          就是说一个批量执行不管内部调用了几个java方法都将只与服务器交互一次。
          
          **原理规则:一个batch以DWREngine.beginBatch()开始 ,并以DWREngine.endBatch()结束。
             当DWREngine.endBatch()被调用,就结束了该次远程调用,
             这样DWR就在一次与服务器的交互中执行batch中所有的调用。
             
          **注意:DWR会小心的处理保证所有的回调函数都会被调用,所以你可以明显的打开和关闭批处理。
            只要别忘了调用endBatch(),否则所有的远程调用将永远的处于列队中,不会得到返回,更不会调用回调函数。
            
          例子:界面js调用java对象时的批量调用写法
          //批量调用开始
          DWREngine.beginBatch();
          Remote.methodInBatch1(params, callback1);
          Remote.methodInBatch2(params, callback2);
          //批量调用结束,结束endBatch()方法中可以传递一些参数,像超时和异常处理等
          DWREngine.endBatch(
            //超时时间3000毫秒,这属于局部超时属性的设置,
            //所以只在该batch中起作用,对batch之外的调用不起作用
            { timeout:3000}
          );
          **说明:batch中的两个调用将只进行一次请求,并且回调函数会正常被调用,这样就提高了效率!
            如果同一个batch中设置了多个相同的选项的值,例如除了endBatch()设置了超时,
            两个调用中也设置了超时选项,那么对于该batch中只有最后一个设置会起作用,之前的设置DWR将会忽略
      
      (2)顺序调用:因为Ajax一般是异步调用,所以远程调用不会按照发送的顺序返回。
          DWREngine.setOrdered(boolean) 允许结果严格按照发送的顺序返回。
          如果设置true的话DWR将在旧的请求安全返回以后才去发送新的请求。
          默认为false,一般不会设置成true。
      
      (3)错误警告和超时:
        
        <1>处理错误和警告:当因为一些原因调用失败,
              DWR就会调用错误和警告handler处理机制(根据错误的激烈程度),并传递错误消息。
          
          **分析:就是当出现错误后我们可以指定让DWR转去调用我们指定的js函数中去执行
          
          **方案:DWREngine.setErrorHandler(function)来改变错误处理方式,
            DWREngine.setWarningHandler(function)来改变警告处理方式,
            在作为参数传入的js函数中就可以进行alert()信息或其他处理。
        
        <2>设置超时:通过DWREngine.setTimeout()可以设置js调用java对象请求超时的时间,
            可以设置全局(任何js调用之前设定,类似全局变量的设定)超时时间,
            也可以设定局部超时时间,例如一个batch中有效的超时设定。
          
          **注意:如果调用超时发生(也就是超时了),错误处理器就会被调用,
            即DWREngine.setErrorHandler(function)指定的方法就会被调用。
            
          例子:  Remote.method(
             params,
             { 
              callback:function(data){ alert("it worked"); },
              errorHandler:function(message){ alert("it broke"); },
              timeout:1000 
             }
               );
            **说明:如果Remote.method()调用超过了1秒钟还没有返回,
              errorHandler指定的函数会被调用,即"it broke"消息就会被显示
      
      (4)远程调Hooks :如果你想在DWR调用之前出现一个提示,你可以设置pre-hook函数。
           它将会被调用,但是没有参数传递到这个函数。
           当你希望让一些按钮在调用期间变灰来防止被再次使用,这一功能将会很有用。
           post-hook用来和pre-hook一起使用来恢复pre-hook指定的函数所做的一些改变。
      
          **使用方法:通过DWREngine.setPreHook(function) 和 DWREngine.setPostHook(function)来注册将被调用的js函数
      
      (5)远程调用选项(用到时再查看文档):DWR有一些选项用来控制远程调用的处理方式。
           method和verb对于用户应该是透明的,但是不同的浏览器效果可能不一样。
           一般来说DWR会选择正确方法来处理,但是这些选项对于在不同效果的浏览器之间开发很有用。
           
         <1>DWREngine.setAsync(flag)方法:
             指定让XHR异步调用了吗? 默认为true。
             警告如果你使用的时IFrame或者ScriptTag这一选项被忽略。
             一般来说把他变成false是个糟糕的做法。因为那样会使你的浏览器变慢。
             
            参数值:
              true   设置成异步交互,也是默认值
              false  设置成同步交互,不推荐设置成false
         
         <2>DWREngine.setMethod(newmethod)方法:
             setMethod()不能保证一定使用你选择的newmethod方法,
             它只是保证首先尝试使用那个方法。
             newmethod必须是DWREngine.XMLHttpRequest或者DWREngine.IFrame或者DWREngine.ScriptTag中之一。
         
         <3>DWREngine.setVerb(verb)方法:
             这个选项允许你选择POST和GET,无论是用IFrame还是XMLHttpRequest方法。
             一些浏览器(例如旧版的Safari)不支持XHR-POST所以DWR就自动切换到GET,
             即使你设置的verb是POST。所以setVerb()应当被仅仅做为一个提示。
             如果使用ScriptTag方法来远程调用,设置verb是没有用的
             
           例子:
             A.设置全局远程调用的verb :DWREngine.setVerb("GET");
             
             B.设置单次调用局部verb : Remote.method(
                    params,
                    { 
                     callback:function(data) { ... },
                     verb:"GET"
                    }
                     );
             
             C.设置batch级别的局部verb :DWREngine.beginBatch();
                       Remote.method1(params, callback1);
                       Remote.method2(params, callback2);
                       DWREngine.endBatch({ verb:"GET" });

 

来自http://seara520.blog.163.com/blog/static/1681276982010027259829/

分享到:
评论
1 楼 zxq198181 2011-09-26  
不错

相关推荐

    DWR 教程 中文API DWR.xml配置文件说明 DWR学习笔记

    首先,"DWR学习笔记"提供了对DWR基础概念、核心功能以及实际应用的概述。这些笔记可能包含了DWR的基本架构,如它如何通过AJAX技术实现实时的Web交互,以及如何创建和调用服务器端的Java方法。 "DWR中文API"是DWR库...

    DWR学习笔记及经验总结

    在“DWR学习笔记及经验总结”中,我们可以期待找到以下关键知识点: 1. **DWR的基本概念**:了解DWR的核心理念,包括远程方法调用(Remote Method Invocation)、反向Ajax以及它如何通过JSON或XML格式传递数据。 2...

    dwr学习笔记pdf文件

    ### dwr学习笔记pdf文件知识点概述 #### 一、DWR框架简介 - **DWR**(Direct Web Remoting)是由GetAhead公司开发的一款用于实现Ajax应用的框架。该框架的核心价值在于允许客户端JavaScript直接调用服务器端Java类...

    dwr学习笔记和总结

    ### dwr学习笔记和总结 #### 一、DWR简介 DWR (Direct Web Remoting) 是一个简化Ajax开发的框架,它使得JavaScript能够直接调用服务器端的Java方法成为可能,无需编写复杂的Ajax代码。这极大地提高了开发效率,并...

    DWR学习笔记和与spring整合练习

    **DWR(Direct Web Remoting)**是一种JavaScript库,它允许Web...通过深入学习和实践"DWR学习笔记和与spring整合练习",开发者可以掌握DWR的精髓,熟练运用其与Spring的整合,打造出高效、安全、易维护的Web应用程序。

    DWR学习笔记-HelloWorld篇

    【标题】:“DWR学习笔记-HelloWorld篇” 在IT领域,DWR(Direct Web Remoting)是一个开源的Java框架,它允许JavaScript在浏览器端直接调用服务器端的Java方法,实现了网页与服务器的实时交互,类似于Ajax技术,但...

    ajax dwr学习笔记和jar文件

    六、学习资源 1. **官方文档**:DWR的官方文档详细介绍了如何配置、使用以及扩展DWR,是学习的好资料。 2. **示例代码**:实践是最好的老师,通过分析和运行提供的jar文件中的示例代码,能更深入理解DWR的工作原理。...

    DWR学习笔记(下载)

    **DWR(Direct Web Remoting)学习笔记** DWR是一种Java技术,用于在浏览器和服务器之间实现双向通信,使得Web应用程序能够实时更新和交互。它允许JavaScript直接调用服务器端的Java方法,就像它们是本地函数一样,...

    DWR学习笔记

    **DWR(Direct Web Remoting)**是一种Java...总之,DWR学习笔记将引导你探索如何利用DWR、ExtJS和Spring构建高效、交互性强的Web应用。通过深入学习和实践,你将能够熟练运用这些工具和技术,提升你的Web开发能力。

    dwr学习笔记(一个简单猜数字游戏)

    总结来说,这个"DWR学习笔记"示例涵盖了以下知识点: 1. DWR的基本概念和工作原理,包括Reverse Ajax机制。 2. 如何在服务器端配置DWR,定义可调用的Java服务。 3. 客户端如何使用DWR的JavaScript库与服务器进行通信...

    DWR学习资料

    DWR学习资料 :DWR 3.0 上传文件.txt DWR3.0反向Ajax示例.txt DWR3.0学习笔记.txt DWR3.0学习网址.txt dwr分页.doc DWR分页代码.doc DWR中文文档.doc DWR中文文档.pdf dwr做comet的完整实现.doc Spring整合DWR comet ...

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

    DWR使用笔记.chm:这可能是一份详细的DWR使用手册,包含了如何集成DWR到项目中、配置DWR引擎、创建远程接口以及处理各种交互的实例。通过阅读这份笔记,你可以了解到DWR的基本概念、配置步骤以及实际应用技巧。 dwr...

    DWR学习笔记(如何配置DWR和工程实例)

    DWR(Direct Web Remoting)是一种Java库,用于在Web应用程序中实现JavaScript和服务器端Java对象之间的双向通信。它使得动态、实时的Web界面成为可能,而无需刷新整个页面。以下是对DWR配置和工程实例的详细解释: ...

    DWR实战学习笔记.txt

    技术分享:DWR实战学习笔记

    DWR 2.0M3 学习笔记

    阅读"DWR学习笔记.doc"文件将有助于系统地掌握这些知识点,通过实践操作加深理解,从而更好地利用DWR构建交互性强、用户体验良好的Web应用。在学习过程中,结合源码分析可以更深入地理解DWR的工作机制,提升自己的...

    dwr学习笔记

    《DWR学习笔记详解》 DWR(Direct Web Remoting)是一种开源JavaScript库,它允许在Web浏览器和Java服务器之间进行实时、双向通信,极大地增强了Web应用的交互性。DWR使得开发者能够像操作本地对象一样操作服务器端...

Global site tag (gtag.js) - Google Analytics