先简单介绍一下什么是DWR
DWR - Direct Web Remoting
ajax是一种提高web站点吸引力和实用性的书写web页面的方法。它从服务器端更新web页面的特殊区域,从而增强用户的交互性。它允许信息在短时间的延迟或不用刷新页面的情况下更新。
DWR减少了开发时间,也减少了一些可能的错误,这些错误是在提供常用的方法函数并消除一些与高交互性 web站点有关的重复性代码的时候产生的。
DWR是作为开源软件(ASL verssion 2.0)而可以免费得到的。它凭借它的广阔的库、例子和指南非常易于实现。把它结合到一个现有的站点是非常简单的,同样它也可以简单地与大多数java框架结合。
util.js
util.js包含了一些使用的方法,从而帮助你利用javascript(可能)从服务器端更新你的web数据。
你可以在DWR之外的地方使用它,因为它并不依赖与DWR而实现。
它包含四个页面处理函数:
1 getText()作用于select lists。
2 getValue[s]()、setValue[s]()作用于除tables、lists和images以外的大多数html元素。
3 addRows()和removeAllRows()用于编辑tables。
4 addOptions()和removeAllOptions()用于编辑lists(如:select lists、ul、ol)。
$() :
$函数(在javascript中,他的名字是合法的)的思想是从prototype引进的。一般说来,$ = document.getElementById。在以后你花大量时间进行ajax编程的时候,在合适的地方使用这种格式是很有益的。
'$'通过给定的ID在当前HTML页面找到元素,如果多于一个的参数被提交,它就会返回一个包含已找到元素的数组。这个函数从prototype的library中得到的灵感,而且,它还能更好的工作在不同的浏览器中。
一 :Generating Lists
DWR的一个功能可以给一个下拉列表(select list)添加选项,只需使用
1 DWRUtil.addOptions()
如果你在更新列表之前,希望保留一些选项,你需要写以下一些代码:
1 var sel = DWRUtil.getValue(id);
2 DWRUtil.removeAllOptions(id);
3 DWRUtil.addOptions(id, );
4 DWRUtil.setValue(id, sel);
如果你想有个初始化选项,如:“please select”,你可以直接使用:
1 DWRUtil.addOptions(id, [ " Please select " ]);
二 :DWRUtil.addOptions 有5种调用方法:
1 :Array: DWRUtil.addOptions(selectid, array) 。selectid为目标ID,array为每一项的text。
2 :Array of objects (option text = option value):
DWRUtil.addOptions(selectid, data, prop) 用text和value的集合来为每一个数组元素创建一个选项,
pro参数指定text和value的值。
3:Array of objects (with differing option text and value):
DWRUtil.addOptions(selectid, array, valueprop, textprop) 用text和value的集合来为每一个数组元素创建一个选项,
valueprop确定value,textprop确定text。
4:Object: DWRUtil.addOptions(selectid, map, reverse) 为map中每一个属性(property)创建一个选项,
属性名作为选项的value,属性的value作为选项的text。这样做看起来是错的,但实际上这种做法的确是正确的。
如果reverse参数被设置为true,则属性的value还是被用做选项的value。
5:Map of objects: DWRUtil.addOptions(selectid, map, valueprop, textprop) 为map中的每一个对象创建一个选项,
valueprop指定选项的value,textprop指定选项的text。
三 :Generating Tables
DWRUtil.addRows() 从一个数组(第二个参数)取得值,创建table的每一行。从另一个数组(第三个参数)去得值,为table的每一行创建若干列。
四 :DWRUtil.getText(id)
可以根据id取得text的值,这个方法只能用于select list
五 :DWRUtil.getValue(id)
可以根据id取得value,使用这个方法,你不必在意div和select list的不同。
六 :DWRUtil.getValues()
getValues() is similar to getValue() except that the input is a Javascript object that contains name/value pairs. The names are assumed to be the IDs of HTML elements, and the values are altered to reflect the contents of those IDs. This method does not return the object in question, it alters the value that you pass to it.
这个方法和getValue()一样,只是它传入的是一个包含名字和数值的javascript对象.这个名字就是HTML元素的ID。这个方法不会返回任何对象,它只会将ID的value映射给传入的value。例:
1 function doGetValues() {
2 var text = " {
3 div: null ,
4 textarea: null ,
5 select: null ,
6 text: null ,
7 password: null ,
8 formbutton: null ,
9 button: null
10 } " ;
11
12 // javascript对象
13 var object = objectEval(text);
14 DWRUtil.getValues(object);
15 // toString
16 var reply = DWRUtil.toDescriptiveString(object, 2 );
17 // 转意
18 reply = reply.replace( / \n / g, " <br/> " );
19 // 显示
20 DWRUtil.setValue( " getvaluesret " , reply);
21
22 }
七 :DWRUtil.onReturn
贴一段代码,暂时不理解,用onReturn和不用有什么区别
1 < script >
2 function submitFunction() {
3 $( " alert " ).style.display = " inline " ;
4 setTimeout( " unsubmitFunction(); " , 1000 );
5 }
6
7 function unsubmitFunction() {
8 $( " alert " ).style.display = " none " ;
9 }
10 </ script >
11
12 < p >< input type = " text " onkeydown = " DWRUtil.onReturn(event, submitFunction) " />
13 < input type = " button " onclick = " submitFunction() " value = " GO " />
14 < span id = " alert " style = " display:none; background:#FFFFDD; font-weight:bold; " > submitFunction called </ span >
15 </ p >
八 :DWRUtil.selectRange
在一个input box里选一个范围
1 DWRUtil.selectRange( " sel-test " , $( " start " ).value, $( " end " ).value);
九 :DWRUtil.setValue(id, value)
用ID找到元素,并更新value
十 :DWRUtil.setValues()
和setValue(id,value)一样,只是它需要的参数是个javascript对象,如:
1 DWRUtil.setValues( {
2 div: " new div content " ,
3 password: " 1234567890 "
4 } );
十一 :DWRUtil.toDescriptiveString
带debug信息的toString,第一个为将要debug的对象,第二个参数为处理等级。等级如下:
1 0 : Single line of debug 单行调试
2 1 : Multi - line debug that does not dig into child objects 不分析子元素的多行调试
3 2 : Multi - line debug that digs into the 2nd layer of child objects 最多分析到第二层子元素的多行调试
And so on. Level 2 and greater probably produce too much output.
总结:DWR不但屏蔽了许多client与server交互的重复且复杂的代码,而且还提供了一些常用的方法,一些思想还是从prototype
Prototype.js作为javascript的成功的开源框架,封装了很多好用的功能
继承而来,并有一定的改进。同时,它也考虑到了与struts、hibernate、spring的结合问题。
需要注意的是,DWR是一种把服务器端的java代码通过javascript直接从浏览器调用的方法(DWR is a way of calling Java code on the server directly from Javascript in the browser.),而不是一个javascript的库(Generally speaking DWR is not a generic JavaScript library so it does not attempt to provide fill this need. However this is one of these really useful functions to have around if you are doing Ajax work.)能做到这么多,已经很难得了。
RPF: http://www.uml.org.cn/AJAX/200812222.asp
分享到:
相关推荐
Direct Web Remoting (DWR) 是一个开源JavaScript库,它允许Web应用程序在客户端与服务器端之间进行异步通信,即Ajax交互。DWRUtil是DWR框架中的一个实用工具类,提供了一系列方便开发者使用的函数,简化了...
标题中的"DwrEngine.js"和"DwrUtil.js"是DWR的核心JavaScript库文件。`DwrEngine.js`提供了与服务器通信的主要接口,实现了AJAX调用的底层逻辑,包括异步请求的发送、响应的处理以及错误管理等。`DwrUtil.js`则是...
它相当于JavaScript中的document.getElementById()方法,参数可以是元素的id或name属性值。例如: ```html var ele = DWRUtil.$("txt_test"); var str = DWRUtil.toDescriptiveString(ele, 1); DWRUtil.debug...
DWR (Direct Web Remoting) 是一个开源的Java框架,用于简化AJAX(Asynchronous JavaScript and XML)应用程序的开发。DWR允许JavaScript在浏览器端与服务器端的Java代码进行交互,实现了异步通信,从而提供了更流畅...
DWRUtils是一个JavaScript库,它与Direct Web Remoting (DWR)框架一起使用,简化了在浏览器端与服务器端进行交互的过程。DWR允许在客户端和服务器之间实时地交换数据,而无需刷新整个页面。DWRUtils提供了许多便利的...
DWR (Direct Web Remoting) 是一种用于在Web应用程序中实现AJAX技术的Java库,它允许JavaScript与服务器端的Java代码进行交互,无需页面刷新即可更新部分网页内容。DWR简化了前后端数据交换的过程,提高了用户体验。...
在DWR中,util.js是一个重要的辅助库,提供了多种方便的JavaScript函数,简化了DOM操作和数据处理。以下是对DWR util.js中一些关键功能的详细说明: 1. **`$("id")`**:这个函数类似于JavaScript的`document....
DWR(Direct Web Remoting)是一种简化Ajax应用开发的技术,它使得JavaScript可以直接调用Java服务端方法,从而避免了传统Ajax开发中需要手动处理JSON数据的问题。DWR不仅简化了开发流程,还提高了应用程序的响应...
- 首先确保项目中已经正确配置了DWR环境,包括导入DWR相关的jar包、配置web.xml和dwr.xml等。 - 在前端页面中引入DWR的JavaScript库。 2. **编写服务器端逻辑** - 在服务器端编写一个返回列表数据的方法,该方法...
DWR是一种使Web应用程序能够执行服务器端JavaScript的方法,允许在客户端和服务器之间进行实时通信。此外,标题还提到了“dwrUtil”,这是DWR框架中的一个实用工具类,包含了多种常用的方法,便于开发者进行日常的...
Direct Web Remoting (DWR) 是一个开源的Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行实时通信,无需使用XMLHttpRequest(Ajax)或其他插件。在这个"Dwr+Demo+helloworld"示例中,我们将探讨...
在jsp页面中,我们添加了三个javascript文件:engine.js、util.js和UserAjaxHelper.js。这些文件是DWR提供的javascript库,用于实现远程方法调用。我们还定义了两个javascript函数:checkUser和showUsermsg。check...
在前端JavaScript中,我们可以使用DWR的`util.js`库,通过异步调用服务器端的方法,动态更新下拉菜单。当用户选择一个选项时,触发事件并调用对应的服务方法,更新下一级的列表: ```javascript function init() { ...
在这个场景中,"dwr js 查询"指的是利用DWR来执行服务器端查询并返回结果到JavaScript,以便在网页上实时展示数据。 首先,我们需要理解DWR的工作原理。DWR通过创建JavaScript的代理类来调用服务器端的Java方法。...
Direct Web Remoting (DWR) 是一种在Java服务器和JavaScript之间进行实时通信的技术,它允许在Web应用程序中轻松地调用服务器端的Java方法,并将结果动态地返回到客户端。在本项目中,我们将深入探讨如何利用DWR来...
在提供的压缩包中,`js与java相互调用.docx`文档可能详细阐述了如何设置和使用DWR实现Java和JavaScript的交互,包括配置步骤、示例代码和最佳实践。建议仔细阅读这份文档,以深入理解DWR的工作原理和实际应用。 ...
- `generic.css`和`generic.js`:通用的CSS和JavaScript文件,可能包含了应用的样式和基础功能。 总的来说,DWR是一个强大的工具,使得JavaScript能够轻松地与Java后端进行通信,大大增强了Web应用的动态性和交互性...
DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器端的Java对象进行直接交互,从而实现Ajax(Asynchronous JavaScript and XML)应用。这个技术使得开发者能够轻松地构建动态、交互性强的...
6. **JSP使用**:在JSP页面中引入DWR的核心引擎engine.js、工具包util.js以及自动生成的DWRService.js。在JavaScript中直接调用远程服务类的方法。 **util.js函数库:** util.js是DWR提供的一组工具函数,可用于...
这个技术的核心理念是提供一种方式,使得JavaScript可以直接调用服务器端的Java方法,就像调用本地函数一样,极大地简化了Web应用的开发,提高了用户体验。 DWR的基本组成部分包括: 1. **DWR Engine**: 这是DWR的...