/**
* 转载请注明作者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
分享到:
相关推荐
DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤DWR使用步骤
DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册
自己总结的一个的dwr的使用说明,附有源码,以及代码的详细解释,配置文件的详细解释。完全可以运行。同时介绍了与其类似用法的dotnet版本的ajax组建。需要自己下载dwr.jar 3.0版本。或者到我的空间下载dwr.jar 3.0...
配置和使用DWR进行Ajax开发
DWR入门教程 DWR使用步骤详解DWR使用步骤详解DWR入门教程
dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架
javascript=" testClass "属性指定javascript代码访问对象时使用的名称。 标签指定要公开给javascript的java类名。 标签指定要公开给javascript的方法。不指定的话就公开所有方法。 标签指定要防止被访问的...
Dwr的使用实例 war文件 1. lib要导入包: dwr-2.0.M3.jar 2. web.xml配置: 3. WEB-INF下dwr.xml的配置 4. bean例子: 5. index.jsp的例子 详细内容请下载
dwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwrdwr dwr
一个例子 有关dwr的配置 和使用 在jsp页面的配置,调用。 web.xml中的配置 和链接服务层的方法
dwr.jar文件 博文链接:https://yangjinhappy.iteye.com/blog/165122
dwr使用教程 使用教程
dwr跨域访问以及dwr的使用+dwr.jar
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的使用步骤: 1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet-name>dwr-invoker org.directwebremoting.servlet.DwrServlet <init-param> <param-name>...
dwr的使用和ajax的使用demo
DWR使用的jar 包括dwr.jar和ezmorph-1.0.6.jar
该压缩包中包含了dwr的使用及配置,和dwr的jar包; DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)...