Dwr配置.docx
《Dwr配置.docx》由会员分享,可在线阅读,更多相关《Dwr配置.docx(23页珍藏版)》请在冰豆网上搜索。
![Dwr配置.docx](https://file1.bdocx.com/fileroot1/2022-11/16/aed59e07-9c46-4077-96ee-cd0ade9878d1/aed59e07-9c46-4077-96ee-cd0ade9878d11.gif)
Dwr配置
Dwr配置
一、配置环境
1.导入dwr.jar
commons-logging.jar
2.在web.xml中配置
--指定DWR核心Servlet的名字-->
dwr-invoker
--指定DWR核心Servlet的实现类-->
org.directwebremoting.servlet.DwrServlet
--指定DWR核心Servlet处于调试状态-->
debug
true
--指定核心Servlet的URL映射-->
dwr-invoker
--指定核心Servlet映射的URL-->
/dwr/*
3.配置dwr.xml
--使用new关键资创建一个Java实例
指定创建的JavaScript对象名为hello-->
--使用class属性指定创建该Java实例的实现类-->
--对lee.Person类使用Bean转换器-->
--对lee.Cat使用Object转换器-->
--指定force="true"强制使用反射访问私有属性-->
[CDATA[
importjava.util.List;
importlee.HelloDwr;
importlee.Person;
HelloDwr.sendListNoGeneric(List);
]]>
//导入所引用的对象或使用泛型定义参数否则dwr无法解析为有效javascript对象
二、配置对应的实现类和页面js
publicclassHelloDwr
{
//第一个简单的hello方法
publicStringhello(Stringname)
{
returnname+",您好!
您已经开始了DWR的学习之旅,祝您学得开心...";
}
//使用一个JavaBean作为参数的方法
publicStringsendObj(Personp)
{
returnp.getName()+",您好!
您已经学会了使用JavaBean参数...";
}
//返回JavaBean实例的方法
publicPersongetBean(Stringname)
{
returnnewPerson(name);
}
//返回一个普通的Java对象,Cat对象为其属性提供setter和getter方法
publicCatgetObject(Stringname)
{
returnnewCat("服务器端"+name);
}
//返回一个集合对象
publicListgetPersonList()
{
Listresult=newArrayList();
result.add(newPerson("集合aaaa"));
result.add(newPerson("集合bbbb"));
result.add(newPerson("集合cccc"));
returnresult;
}
//返回一个数组对象
publicPerson[]getPersonArray()
{
Person[]result=newPerson[3];
result[0]=newPerson("数组aaaa");
result[1]=newPerson("数组bbbb");
result[2]=newPerson("数组cccc");
returnresult;
}
//返回一个Map对象
publicMapgetPersonMap()
{
//创建一个Map对象
Mapresult=newHashMap();
//填充Map对象的内容
result.put("first",newPerson("Mapaaaa"));
result.put("second",newPerson("Mapbbb"));
result.put("third",newPerson("Mapcccc"));
//返回Map
returnresult;
}
//远程方法的参数是集合
publicStringsendList(Listpl)
{
Stringresult="";
for(Personp:
pl)
{
result+=p.getName()+"
";
}
returnresult;
}
//远程方法的参数是不带泛型的集合
publicStringsendListNoGeneric(Listpl)
{
Stringresult="";
for(Objectp:
pl)
{
result+=((Person)p).getName()+"
";
}
returnresult;
}
//远程方法的参数是集合
publicStringsendMap(Mappmap)
{
Stringresult="";
for(Stringkey:
pmap.keySet())
{
result+="键"+key+"其值为:
"+
pmap.get(key).getName()+"
";
}
returnresult;
}
Js文件
//-------------发送简单字符串参数,返回普通字符串--------------
functionsendMessage()
{
//获取页面中name元素的值
varname=document.getElementById("name").value;
//调用远程方法,cb是回调函数
hello.hello(name,cb)
}
functioncb(data)
{
document.getElementById("show").innerHTML=data;
}
//-----------发送一个JavaBean对象作为参数,返回普通字符串------------
functionsendObject()
{
varnameValue=document.getElementById("name").value;
//调用远程方法,使用JavaScript对象作为参数
hello.sendObj({name:
nameValue},cb);
}
//----------------调用返回JavaBean方法-----------------
functiongetBean()
{
varname=document.getElementById("name").value;
//调用远程方法,beanCb是回调函数
hello.getBean(name,beanCb)
}
functionbeanCb(data)
{
//服务器方法返回JavaBean对象,客户端的data是JavaScript对象
document.getElementById("show").innerHTML=
data.name+",您好,您已经学会了使用JavaBean返回值";
}
//----------------调用返回getObject方法---------------
functiongetObject()
{
varname=document.getElementById("name").value;
//调用远程方法,objCb是回调函数
hello.getObject(name,objCb)
}
functionobjCb(data)
{
//服务器方法返回非JavaBean式的对象,客户端的data是JavaScript对象
document.getElementById("show").innerHTML=
data.name+",是从服务器返回的猫的名字";
}
//---------------调用返回集合的方法--------------
functiongetBeanList()
{
//调用远程方法,listCb返回回调函数
hello.getPersonList(listCb);
}
//远程Java方法返回List对象,集合元素是JavaBean式的对象
//此处的data是JavaScript对象数组
functionlistCb(data)
{
varresult='';
//遍历每个数组元素
for(vari=0;i{
result+=data[i].name+"
";
}
document.getElementById("show").innerHTML=result;
}
//---------------调用返回数组的方法--------------
functiongetBeanArray()
{
hello.getPersonArray(arrayCb);
}
functionarrayCb(data)
{
varresult="";
//下面的data是远程Java方法的返回值,
//data是个数组,遍历数组。
for(vari=0;i