`

DWR使用要点

    博客分类:
  • DWR
阅读更多

/**

*  转载请注明作者longdick    http://longdick.iteye.com

*

*/

 

想在JAVA WEB项目中应用AJAX?当然有不少解决方案,其中应用DWR是个不错的选择,使用起来省时又省力。

 

DWR(Direct Web Remoting)是一个开源的类库,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样.

 

DWR不认为浏览器/WEB服务器协议是重要的,而更乐于保证编程界面的简单自然.对此最大的挑战就是把AJAX的异步特性和正常JAVA方法调用的同步特性相结合.在异步模式下,结果数据在开始调用之后的一段时间之后才可以被异步访问获取到.也就是说浏览者可以在页面上远程调用服务器端的方法而不用担心提交请求的过程会阻塞浏览的进程,他们完全可以在等待响应的同时在页面上做其他的操作。从浏览者的角度看,在操作的过程中基本上感觉不到响应时间,这对提升浏览者的浏览体验非常有好处。

 

DWR允许WEB开发人员传递一个回调函数,来异步处理 Java函数调用过程.

类似如下定义:

在服务端的java方法定义:  DemoService.doSomething(String name,String addr){return name+addr;}

在浏览器Javascript中的调用:  DemoService.doSomething(name,addr,callback)

 

 callback就是回调函数,开发人员可以用这个回调函数在取得doSomething方法的返回值时做一些处理,在Javascript里可以这样定义:

var callback=function(data){};参数data即调用DemoService类doSomething方法的返回值,当DWR接收到这个返回值时,便会调用这个回调函数,并把doSomething方法返回值作为参数传给回调函数,后台没有返回之前是不会调用的。

 

var resultValue="firstValue";

var callback=function(data){
resultValue=data;
}

function doRemoteService(name,addr){
DemoService.doSomething(name,addr,callback);
alert(resultValue);
}

 

看上面一段js代码,很简单是吗,你觉得调用doRemoteService方法的时候会弹出什么值呢?由于DWR默认是异步调用远程函数的,调用callback的时机也许很快,但是也有可能需要过一段时间,在浏览器端调用js方法却是微秒级别的,所以,在回调函数被调用之前,alert已经被调用了。

 

很多人在使用DWR的时候会遇到这个问题,如果想要拿到期望的值,必须关闭DWR的异步特性。可以如下修改:

 

function doRemoteService(name,addr){
DWREngine.setAsync(false);
DemoService.doSomething(name,addr,callback);
DWREngine.setAsync(true);
alert(resultValue);
}

 

DWREngine.setAsync()可以设定DWR调用方式为异步还是同步。在一些不希望异步特性的场合会用到。

 

在WEB应用中会不可避免的用到request,session,context等的Http对象,在DWR应用中要如何调用呢,

可以在服务端的java方法定义:  

DemoService.doSomething(String name,String addr,HttpServletRequest request){return name+addr;}

在浏览器Javascript中的调用方式不用改变,DWR会自动传入HttpServletRequest 参数: 

 DemoService.doSomething(name,addr,callback)

这样我们就可以直接在Java方法里调用从DWR传过来的request对象,HttpServletRequest,HttpServletResponse,HttpSession,ServletContext等对象使用方式类似。

 

当然还可以直接在java方法里调用DWR的API:

 

WebContext ctx = WebContextFactory.get();
ctx.getSession();
ctx.getHttpServletRequest();

 

注1:以上所有代码在JDK1.4.2 ,DWR1.1.1,webspere6.0环境下测试通过。

 

注2:webspere6.0 不支持JDK5.0以后的版本,DWR 2.x 包含了 Java5 支持的内容。在应用时可能出现不能正常运行的情况,现在在webspere6.0上还是使用dwr1.X版本。

 

注3:DWR现在最新版本是2.0.3, 3.0版本正在开发中。

 

参考资料:官方网站http://getahead.org/dwr

分享到:
评论
1 楼 scholers 2009-09-18  
DWR确实比较有意思,
调用的时候非常方便
而且它的思想和其他的AJAX框架不一样

相关推荐

    DWR使用步骤DWR使用步骤

    DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤

    DWR 框架使用手册

    DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册

    java dwr 使用例子

    自己总结的一个的dwr的使用说明,附有源码,以及代码的详细解释,配置文件的详细解释。完全可以运行。同时介绍了与其类似用法的dotnet版本的ajax组建。需要自己下载dwr.jar 3.0版本。或者到我的空间下载dwr.jar 3.0...

    DWR使用方法-step by step

    配置和使用DWR进行Ajax开发

    DWR使用步骤详解DWR使用步骤详解

    DWR入门教程 DWR使用步骤详解DWR使用步骤详解DWR入门教程

    dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架

    dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架

    dwr使用方法,配置

    javascript=" testClass "属性指定javascript代码访问对象时使用的名称。  标签指定要公开给javascript的java类名。  标签指定要公开给javascript的方法。不指定的话就公开所有方法。  标签指定要防止被访问的...

    Dwr的使用实例

    Dwr的使用实例 war文件 1. lib要导入包: dwr-2.0.M3.jar 2. web.xml配置: 3. WEB-INF下dwr.xml的配置 4. bean例子: 5. index.jsp的例子 详细内容请下载

    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的配置 和使用 在jsp页面的配置,调用。 web.xml中的配置 和链接服务层的方法

    DWR的使用方法

    dwr.jar文件 博文链接:https://yangjinhappy.iteye.com/blog/165122

    DWR使用教程

    dwr使用教程 使用教程

    dwr跨域访问以及dwr的使用+dwr.jar

    dwr跨域访问以及dwr的使用+dwr.jar

    dwr demo dwr简单使用

    dwr的简单使用,是一个Eclipse的项目,直接导进去就可以看到使用的方式了 对于初学者这个应该是不错的demo哦~

    dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;

    dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;dwr包;

    dwr使用入门总结

    dwr使用入门总结,适合想入门的dwr学者。

    ajax框架Dwr的具体使用步骤

    Dwr的使用步骤: 1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet-name>dwr-invoker org.directwebremoting.servlet.DwrServlet <init-param> <param-name>...

    dwr和ajax使用demo

    dwr的使用和ajax的使用demo

    DWR使用的jar

    DWR使用的jar 包括dwr.jar和ezmorph-1.0.6.jar

    dwr相关jar包及其使用和配置

    该压缩包中包含了dwr的使用及配置,和dwr的jar包; DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)...

Global site tag (gtag.js) - Google Analytics