//注意Hello类中的abc方法被暴露,没有圆括号。其他的方法javascript对象hello不能调用
convert 元素(转换器)
creator 负责公开用于 Web 远程的类和类的方法,convertor 则负责这些方法的参数和返回类型。当我们声明一个方法时,该方法的参数是java 类型或返回值是java类型就需要转换器。
convert 元素的作用是告诉 DWR 在服务器端 Java 对象表示和序列化的 JavaScript 之间如何转换数据类型。
DWR 自动地在 Java 和 JavaScript 表示之间调整简单数据类型。这些类型包括 Java基本数据类型,还有 String、Date、数组和集合类型。这些类型不需要显示的在dwr.xml中配。DWR 默认关闭了Bean和Object转换器。Bean转换器用于完成javabean 对象和 json格式javascript对象之间的转换。必须要显示的配置。object转换器与Bean转换器非常类似,他们的作用完全相同,都是用于完成java对象和json格式的javascript对象之间的转换,但object转换器的功能更强大。他通过java的反射机制来访问java对象的属性,即他无须提供setter和getter方法也可访问对应的属性。而Bean转换器通过上溯两个方法访问。
Bean转换器的语法:
如果远程方法的返回值是 javabean实例,那么客户端javascript调用该方法也返回一个javascript对象,该对象是一个JSON格式的对象。默认这个对象包含了java对象的所有属性。JSON 格式对象
{name:’namevalue’} 如果某个方法包含了com.Person的对象在客户端这样调用:
Var name=document.getElementById(“name”).value; Var age=document.getElementById(“age”).value; Var obj={ Name:name, Age:age }
Hello.sendObject(obj,callbackname);
上面的代码表明在转换时将不会转换prop1,prop2两个属性。这叫黑名单方式。如果远程方法的参数或返回值不是javabean而是普通object就用object转换器。
数组转换器参见例子 集合转换器参见例子 方法的声明:
DWR使用反射来确定java 实例和javascript对象之间的转换。有时类型信息并不明确,或者参数是一个集合,集合元素的类型不明确,此时可以在dwr.xml文件的方法声明部分明确定义这些类型
方法声明放在signatures元素中,该元素的值是一个普通字符窜。通常用将所有字符串包含起来。例如:list中放的什么不知道 Public void sendList(List p1){ ……. }
方法声明可以告诉DWR应该用什么类型去处理。 Import java.util.List; Import lee.HeleloDwr; HelloDwr.sendList(List
一个DWR的简单例子:
到http://getahead.ltd.uk/dwr/download下载dwr.jar文件。
2、用eclipse新建一个项目,我的项目名就叫dwr。
3、把刚才下载的dwr.jar放到web-inf/lib下面。
4、在web.xml中加入一下内容:
5、在web.xml的所在目录下新建dwr.xml,内容如下:
value=\
6、创建服务器端的程序com.wuahui.test.ajax.AjaxTest.java,代码如下:
package com.wuahui.test.ajax;
import java.util.Date;
public class AjaxTest {
public String dispCurrentTime(){ return new Date().toString(); } }
7、在web目录下创建前台页面myAjax.html,内容如下:
onclick='Test.dispCurrentTime(reply0);' value='查看当前时间' title='查看服务器上的时间'/>
8、把项目部署到Tomcat上面运行
http://localhost:8080/dwr/myAjax.html即可。