DWR类型转换学习笔记

一、DWR调用参数类型和返回类型都是JavaBean的java方法

1.index.jsp

var u = {

username : "123",

password : "123"

};

user.checkLogin(u, function(data) {

alert("username="+data.username+";password="+data.password);

})

2.User.java

package bean; public class User { private String username; private String password; public User(){ } public User(String username){ this.username=username; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public User checkLogin(User user){ return user; } }

3.dwr.xml

<create creator="new" javascript="user">

<param name="class" value="bean.User" />

<include method="checkLogin" />

</create>

<!-- 转换JavaBean --> <convert converter="bean" match="bean.User"> <param name="include" value="username,password" /> </convert>

二、DWR调用参数类型是String,返回类型是Object的java方法

1.jsp页面

helloDwr.getObject("zxc",function(data){

alert(data.name);

});

2.dwr.xml配置

<create creator="new" javascript="helloDwr">

<param name="class" value="bean.HelloDwr"/>

</create>

<!-- 转换object对象 -->

<convert converter="object" match="bean.Cat">

<param name="force" value="true" />

</convert>

3.Cat.java

package bean; public class Cat { private String name; //构造器 public Cat(String name){ this.name=name; } }

4.HelloDwr的方法

//返回一个普通的Java对象,Cat对象为其属性没有提供setter和getter方法

public Cat getObject(String name){

return new Cat("name");

}

三、DWR调用参数类型是对象数组,返回类型是对象数组的java方法

1.jsp页面

var u=[{username:"Jim",password:"123"},{username:"cat",password:"123"},{username:"sunny",password:"123"}];

helloDwr.getPersonArray(u,function(data){

for(var i=0;i<data.length;i++){

alert(data[i].username);

}

});

2.dwr.xml不需要配置

3.HelloDwr的方法

//返回一个数组对象

public User[] getPersonArray(User[] u){

return u;

}

四、DWR调用参数类型是泛型Map,返回类型也是泛型Map的java方法

1.jsp

var u={a:{username:"Jim",password:"123"},b:{username:"cat",password:"123"},c:{username:"sunny",password:"123"}};

helloDwr.getPersonMap(u,function(data){

var result="";

for(var key in data){

result+="键为"+key+",其值为:"+data[key].username+"<br>";

}

alert(result);

});

2.dwr.xml不需要配置

3.HelloDwr的方法

//返回一个Map对象

public Map<String ,User>getPersonMap(Map<String,User> pmap){

return pmap;

}

五、DWR调用参数类型是无泛型list集合的java方法

1.jsp

var u=[{username:"Jim",password:"123"},{username:"cat",password:"123"},{username:"sunny",password:"123"}];

helloDwr.sendListNogeneric(u,function(data){

alert(data);

});

2.dwr.xml

<signatures>

<![CDATA[

import java.util.List;

import bean.HelloDwr;

import bean.User;

HelloDwr.sendListNogeneric (List<User>);

]]>

</signatures>

3.HelloDwr的方法

//远程方法的参数是集合

public String sendListNogeneric(List p1){

String result="";

for(Object p:p1){

result+=((User)p).getUsername()+"<br>";

}

return result;

}

六、DWR调用参数类型是泛型list集合,返回类型也是泛型list集合的java方法

1.jsp

var u=[{username:"Jim",password:"123"},{username:"cat",password:"123"},{username:"sunny",password:"123"}];

helloDwr.getUserList(u,function(data){

for(var i=0;i<data.length;i++){

alert(data[i].username);

}

});

2.dwr.xml无需配置

3.HelloDwr的方法

//返回一个集合对象

public List<User> getUserList(List<User> list){

return list;

}

七、完整的例子

1.index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk" isELIgnored="false"%> <% String path = request.getContextPath(); %> <html> <head> <mce:script type='text/javascript' src='<%=path%><!-- /dwr/interface/user.js'> // --></mce:script> <mce:script type='text/javascript' src='<%=path%><!-- /dwr/interface/helloDwr.js'> // --></mce:script> <mce:script type='text/javascript' src='<%=path%><!-- /dwr/engine.js'> // --></mce:script> <mce:script type='text/javascript' src='<%=path%><!-- /dwr/util.js'> // --></mce:script> <mce:script type="text/javascript"><!-- function checkLogin() { var username = document.getElementById("username").value; var password = document.getElementById("password").value; var u = { username : username, password : password }; if (username.match(/^/s*$/)) { alert("请输入用户名!"); } else if (password.match(/^/s*$/)) { alert("请输入密码!"); } else { user.checkLogin(u, function(data) { alert("username="+data.username+";password="+data.password); }) } } function f(){ helloDwr.getObject("zxc",function(data){ alert(data.name); }); } function a(){ var u=[{username:"Jim",password:"123"},{username:"cat",password:"123"},{username:"sunny",password:"123"}]; helloDwr.getPersonArray(u,function(data){ for(var i=0;i<data.length;i++){ alert(data[i].username); } }); } function b(){ var u={a:{username:"Jim",password:"123"},b:{username:"cat",password:"123"},c:{username:"sunny",password:"123"}}; helloDwr.getPersonMap(u,function(data){ alert(data.a.username); alert(data.b.username); alert(data.c.username); }); } function c(){ var u=[{username:"Jim",password:"123"},{username:"cat",password:"123"},{username:"sunny",password:"123"}]; helloDwr.sendListNogeneric(u,function(data){ alert(data); }); } function d(){ var u=[{username:"Jim",password:"123"},{username:"cat",password:"123"},{username:"sunny",password:"123"}]; helloDwr.getUserList(u,function(data){ for(var i=0;i<data.length;i++){ alert(data[i].username); } }); } // --></mce:script> </head> <body> <form> 用户名: <input type="text" name="username" id="username" /> <br /> 密 码: <input type="password" name="password" id="password" /> <br /> <input type="button" value="javabean转换" οnclick="checkLogin()" /> <input type="button" value="Object转换" οnclick="f()"/> <input type="button" value="数组转换" οnclick="a()"/> <input type="button" value="Map转换" οnclick="b()"/> <input type="button" value="无泛型list集合转换" οnclick="c()"/> <input type="button" value="泛型list集合转换" οnclick="d()"/> </form> </body> </html>

2.HelloDwr.java

package bean; import java.util.List; import java.util.Map; public class HelloDwr { //使用JavaBean作为和返回参数的方法 public User sendObjec(User u){ return u; } //返回一个普通的Java对象,Cat对象为其属性没有提供setter和getter方法 public Cat getObject(String name){ return new Cat("name"); } //返回一个集合对象 public List<User> getUserList(List<User> list){ return list; } //返回一个数组对象 public User[] getPersonArray(User[] u){ return u; } //返回一个Map对象 public Map<String ,User>getPersonMap(Map<String,User> pmap){ return pmap; } //远程方法的参数是集合 public String sendListNogeneric(List p1){ String result=""; for(Object p:p1){ result+=((User)p).getUsername()+"<br>"; } return result; } }

3.Cat.java

package bean; public class Cat { private String name; //构造器 public Cat(String name){ this.name=name; } }

4.dwr.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> <!-- without allow, DWR isn't allowed to do anything --> <allow> <create creator="new" javascript="user"> <param name="class" value="bean.User" /> <include method="checkLogin" /> </create> <create creator="new" javascript="helloDwr"> <param name="class" value="bean.HelloDwr"/> </create> <!-- 转换JavaBean --> <convert converter="bean" match="bean.User"> <param name="include" value="username,password" /> </convert> <!-- 转换object对象 --> <convert converter="object" match="bean.Cat"> <param name="force" value="true" /> </convert> </allow> <signatures> <!--[CDATA[ import java.util.List; import bean.HelloDwr; import bean.User; HelloDwr.sendListNogeneric (List<User>); ]]--> </signatures> </dwr>

5.web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

注:源码已经上传至CSDN,可访问http://download.csdn.net/source/3080258去下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值