DWR框架

原创 2006年06月19日 16:49:00

        DWR 是一个引擎,可以把服务器端 Java 对象的方法公开给 JavaScript 代码。使用 DWR 可以有效地从应用程序代码中把 Ajax 的全部请求-响应循环消除掉。这意味着客户端代码再也不需要直接处理 XMLHttpRequest 对象或者服务器的响应。不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成 XML。甚至不再需要编写 servlet 代码把 Ajax 请求调整成对 Java 域对象的调用。 DWR 是一个开放源码的使用 Apache 许可协议的解决方案,它包含服务器端 Java 库、一个 DWR servlet 以及 JavaScript 库。虽然 DWR 不是 Java 平台上唯一可用的 Ajax-RPC 工具包,但是它是最成熟的,而且提供了许多有用的功能。 DWR 是作为 Web 应用程序中的 servlet 部署的。把它看作一个黑盒子,这个 servlet 有两个主要作用:首先,对于公开的每个类,DWR 动态地生成包含在 Web 页面中的 JavaScript。生成的 JavaScript 包含存根函数,代表 Java 类上的对应方法并在幕后执行 XMLHttpRequest。这些请求被发送给 DWR,这时它的第二个作用就是把请求翻译成服务器端 Java 对象上的方法调用并把方法的返回值放在 servlet 响应中发送回客户端,编码成 JavaScript。DWR 还提供了帮助执行常见的用户界面任务的 JavaScript 工具函数。

在web.xml中添加:
<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

 dwr.xml

<dwr>
  <!-- init is only needed if you are extending DWR -->
  <init>
    <creator id="..." class="..."/>
    <converter id="..." class="..."/>
  </init>
  <!-- without allow, DWR isn't allowed to do anything -->
  <allow>
    <create creator="..." javascript="..."/>
    <convert converter="..." match="..."/>
  </allow>
  <!-- you may need to tell DWR about method signatures -->
  <signatures>
    ...//signatures 为了识别Collections 里数据类型
  </signatures>
</dwr>

在页面中引用动态生成的javascript

<script type="text/javascript" src="[WEBAPP]/dwr/interface/Remote.js"> </script>
<script type="text/javascript" src="[WEBAPP]/dwr/engine.js"> </script>
如何引用方法:
function callBack(str) { alert(str); } Remote.method(param, callBack);
//从远程方法中返回的数据在页面反映出来

如何利用回调函数处理远程方法返回的而外数据?( Passing extra data to callbacks )

The solution is to use a Javascript closure.

参考站点:http://jibbering.com/faq/faq_notes/closures.html
闭包简单的解释是,ECMAScript允许inner functions(嵌套函数):函数可以定义在另外一个函数里面(关于嵌套函数可以看看<javascript权威指南>)。这些内部的函数可以访问outer function(父函数)的local变量,参数,其它内部函数。当内部函数被构造,并可以在函数外被获得(函数当成返回值),这个内部函数被在 outer function返回后被执行(在outer函数外执行),那一个闭包形成了。(简单的理解,function被当成数据类型传递或动态执行)。 inner function还有权利访问 那些outer function(父函数)的local变量,参数,其它内部函数。那些outer function(父函数)的local变量,参数,其它内部函数在outer function返回前就有值,并返回的inner function需要改变这些值。

Javascript closure例子
function createAClosure()
{
var local = 0;
return function(){return ++local;};
}
var c1 = createAClosure();  //第一个闭包,嵌套函数返回的值保存在c1
var c2 = createAClosure(); //第二个闭包
document.write(c1() + "<br/>"); //1
document.write(c1() + "<br/>"); //2
document.write(c1() + "<br/>"); //3
document.write(c2() + "<br/>"); //1
document.write(c2() + "<br/>"); //2


Remoting Options (设置同步或异步)
To set the synchronisity on a global level:
DWREngine.setAsync(true);
Or to set it on a call level:
Remote.method(params, { callback:function(data) { ... }, async:true });
Or to set it on a batch level:
涉及修改或者添加,更新数据库时,要添加如下代码,保持数据的实时性.
DWREngine.beginBatch(); Remote.method1(params, callback1); Remote.method2(params, callback2); DWREngine.endBatch({ async:true });


DWREngine.setVerb(verb) (设置动作POST/GET)
For example, to set the remoting verb on a global level:
DWREngine.setVerb("GET"); Or to set it on a call level:
Remote.method(params, { callback:function(data) { ... }, verb:"GET" }); Or to set it on a batch level:
DWREngine.beginBatch(); Remote.method1(params, callback1); Remote.method2(params, callback2); DWREngine.endBatch({ verb:"GET" });

 


 

相关文章推荐

DWR3.0框架入门(1) —— 实现ajax

框架简介:DWR(Direct Web Remoting)      是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在...

Ajax之DWR框架使用小结(1)

DWR,Direct Web Remoting的简称是DWR,它的实现是基于Ajax的,可实现无刷新的效果。这个框架最大的优点就是可以在JS中调用Java方法,传递参数,并且可以得到返回值。它是开源(...

使用dwr框架实现登录用户名验证

使用dwr框架实现Ajax(登录用户名验证)   1.        导入dwr.jar   2.        修改web.xml,添加代码  servlet>         se...

Dwr框架学习

dwr框架使用案例,以及各种返回类型

WEB远程调用框架-DWR入门介绍

DWR介绍DWR全称:Direct Web Remoting,直接Web远程调用。是JAVA EE领域中的一个ajax框架,通过使用该框架,可以更简单的开发出Ajax应用。相比于直接使用JS进行aja...

DWR框架简单实例 (http://my.oschina.net/u/1790925/blog/366346)

文章转自《http://my.oschina.net/u/1790925/blog/366346》,感谢大牛分享! DWR框架简单实例    1、从DWR官网下载最新版本的jar包,地址:http...

利用dwr框架来实现“服务推”技术的方法

利用dwr框架来实现“服务推”技术的方法: n 官网上主要有三种方法: 1.Polling:轮询是解决此问题最常见的方法。浏览器不断对服务端发起一个请求,来检测页面(数据)是否有更新。举个例子:就像是...

javaweb开发中异步ajax请求之DWR框架详解(通过直接访问java类实现异步请求处理)

DWR是一个开源的服务器端ajax框架,js通过直接调用普通java类中的方法实现服务器端数据处理。原理:框架根据配置在加载页面的时候自动生成ajax代码供前端调用。         该框架只需一个j...

DWR框架搭建与使用

1、简介  DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的...

j2ee dwr框架简单实现

本技术应用在servlet3.0基础上,有些类似于struts action机制,和dwr动态方法调用功能 和struts1相比,这种技术也有一个主控制器,类似于ActionServlet。用于控制...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DWR框架
举报原因:
原因补充:

(最多只允许输入30个字)