简单dwr实现

昨天听论坛的同志说上海现在在流行dwr和ext,我今天晚上就来研究了一下dwr,发现挺简单的,不过我还是觉得jquer简单,直接嘿嘿,废话不多说,开始~~~~~~~~

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

1.配置dwr环境

1.1修改web。xml(把这段添加进去)

web.xml


<web-app id="dwr">
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>


1.2 配置dwr.xml
dwr.xml 与web.xml同目录
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>

<create creator="new" javascript="dwrTest" > //这个是我们要生成的js的名字(这边也可以用spring ioc里面的对象哦,不过当然配置要适当改呵呵)
<param name="class" value="com.yourcompany.struts.action.DwrAction"/> //这个定义了我们要用ajax的javabean
<include method="save"/> //这个是我们要的javabean的ajax方法
</create>
</allow>
</dwr>

index.html


<script src='dwr/interface/dwrTest.js'></script> 这个是根据配置动态生成的(我们刚才写的配置,好好看看)
<script src='dwr/engine.js'></script> 下面两个是固定要加入的js
<script src='dwr/util.js'></script>

//自己处理的js
<script type="text/javascript">
function a(){
dwrTest.save(b); //b是回调函数(就是对返回值进行处理的函数)
}


function b(data){ //接受了数据打印出他
alert(data);
}
</script>
dwr.jar 下载放lib下

com.yourcompany.struts.action.DwrAction 下的save方法


public String save()
{
System.out.println("ok");

return "ok";
}



ok,这样一个最简单的dwr例子就完成了。我们从js里面调用了save方法,他返回了string。

好了,这样最难的配置完成了,其他的比如他的方法有多个参数啊,返回值是list集合(集合里面是javabean的,很常见哦),我也帮大家贴出来把

首先是有多个参数的,我觉得参数一般不会太复杂,一般已简单类型为主,如果为一些javabean之类的参数,要修改配置文件,大家可以自己找下,我就说最简单的嘿嘿

public String save(int name,String password)
{
System.out.println("ok");
System.out.println(name);
System.out.println(password);
}

首先先来修改save方法,然后就要改下js代码了

<script type="text/javascript">
function a(){

//我传过去的参数为数字1,和字符串b,最后那个为回调函数b,大家不能混淆哦,回调函数是写在最后面的,切忌(其实我也是通过firebug看他生成的js才知道的呵呵)
dwrTest.save(1,'b',b);
}
function b(data){
alert(data);
}
</script>

ok,传递参数弄好了,简单把,呵呵,继续来就是返回list集合了,如果集合里面包含的是基本类型就不用修改配置文件,如果是javabean就要修改下配置文件哦(我觉得返回list这些很像返回json数据,大家可以去理解一下json数据,也是现在比较火的传输数据格式)

dwr.xml

<dwr>
<allow>

<create creator="new" javascript="dwrTest" >
<param name="class" value="com.yourcompany.struts.action.DwrAction"/>
<include method="save"/>
</create>
<convert match="cn.ghp.vo.UserVo" converter="bean"></convert> //返回list里面的包含的对象,我们要在这边定义他一下
</allow>
</dwr>

cn.ghp.vo.UserVo

package cn.ghp.vo;

public class UserVo {
private String name;
private String password;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

}

save方法也要改一下

public ArrayList save(String name,String password)
{
System.out.println("ok");
System.out.println(name);
System.out.println(password);
ArrayList list=new ArrayList();
for (int i = 0; i < 3; i++) {
UserVo user=new UserVo();
user.setName("a"+i);
user.setPassword("p"+i);
list.add(user);
}

return list;
}

最后是js代码了

<script type="text/javascript">
function a(){
dwrTest.save('a','b',b);
}
function b(data){
var out="";
for(var i=0;i<data.length;i++){
out+=data.name+" "+data.password+"\n" ;
}
alert(out);
}
</script>


发现DWR和spring结合非常简单:
<create creator="spring" javascript="UserManager">
<param name="beanName" value="ajaxUserService"/>
<include method="findByUser"/>
<include method="findAllUser"/>
</create>
实际上,最主要的地方就是creator="spring",这里的ajaxUserService就是sping的service层bean
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值