开发者社区> lhyxcxy> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

dwr 异步传递对象

简介: 注意在导入js文件时必须先导入系统的js,再导入自己的      <script type='text/javascript' src='jquery.js'></script> <script type='text/javascript' src='dwr/engine.js'></script>      &
+关注继续查看


注意在导入js文件时必须先导入系统的js,再导入自己的


     <script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
     <script type='text/javascript' src='dwr/util.js'></script>
     <script type='text/javascript' src='dwr/interface/userAct.js'></script>


首先,使用DWR,需配置dwr.xml:

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">  
  3.   
  4. <dwr>  
  5.   <allow>  
  6.     <create creator="new" javascript="MyDWR">  
  7.       <param name="class" value="com.DWRTest.Controller.MyDWR"/>  
  8.     </create>  
  9.     <convert converter = "bean" match = "com.DWRTest.model.*"/>  
  10.   </allow>  
  11. </dwr>  


我们配置com.DWRTest.Controller.MyDWR,且配置com.DWRTest.model下的所有文件一个转换器。这个转换器,才使得DWR能够传递及访问对象。

假设model下有一个POJO:

[java] view plaincopy
  1. package com.DWRTest.model;  
  2.   
  3. public class User {  
  4.   
  5.     private String username;  
  6.     private String password;  
  7.       
  8.     public String getUsername() {  
  9.         return username;  
  10.     }  
  11.     public void setUsername(String username) {  
  12.         this.username = username;  
  13.     }  
  14.     public String getPassword() {  
  15.         return password;  
  16.     }  
  17.     public void setPassword(String password) {  
  18.         this.password = password;  
  19.     }  
  20. }  

那么可以做以下几个实验:

1.DWR获得JAVA传递的对象

java代码:

[java] view plaincopy
  1. public User getMyUser() {  
  2.           
  3.         User user = new User();  
  4.         user.setUsername("tammypi");  
  5.         user.setPassword("1988");  
  6.           
  7.         return user;  
  8.     }  


利用javascript访问这个对象:

[javascript] view plaincopy
  1. MyDWR.getMyUser(function(user){  
  2.       
  3.         alert(user);  
  4.         alert('用户名:' + user.username + ",密码:"+user.password);  
  5. }  


2.DWR获得JAVA传递的对象List:

java代码:

[java] view plaincopy
  1. public List<User> getMyUserList() {  
  2.           
  3.         List<User> list = new ArrayList<User>();  
  4.           
  5.         User user2 = new User();  
  6.         user2.setUsername("tammypi");  
  7.         user2.setPassword("1988");  
  8.           
  9.         User user1 = new User();  
  10.         user1.setUsername("tony");  
  11.         user1.setPassword("1962");  
  12.   
  13.         list.add(user1);  
  14.         list.add(user2);  
  15.           
  16.         return list;  
  17.     }  


利用javascript访问list:

[javascript] view plaincopy
  1. MyDWR.getMyUserList(function(list){  
  2.           
  3.             for(var i=0;i<list.length;i++) {  
  4.               
  5.                 alert("访问第"+i+"个对象");  
  6.                 alert(list[i].username+","+list[i].password);  
  7.             }  
  8.         });  


3.DWR传递对象,并访问JAVA返回的Map:

java代码:

[java] view plaincopy
  1. public Map<String,String> insertUser(User user){  
  2.           
  3.         System.out.println(user.getUsername()+","+user.getPassword());  
  4.           
  5.         Map<String,String> map = new HashMap<String,String>();  
  6.         map.put(user.getUsername(), user.getPassword());  
  7.           
  8.         return map;  
  9.     }  


利用javascript访问返回的map:

[javascript] view plaincopy
  1. var myUser = new Object();  
  2.                        //传对象1
    /*   var u = {
    username : "aaaaaaaaaaaa",
    password : "bbbbbbbbbbbb"
    }; */

    //传对象2
       var user = {};
    user.username="ddddddddddd";
    user.password="dddddddddddddddd";
  3.           
  4.         MyDWR.insertUser(myUser,function(dat11){  
  5.           
  6.             for(var key in dat11) {  
  7.               
  8.                 alert(key+","+dat11[key]);  
  9.             }  
  10.         });  


4.DWR传递对象数组:

java代码:

[java] view plaincopy
  1. public void insertUserList(User[] users){  
  2.           
  3.         for(int i=0;i<users.length;i++){  
  4.               
  5.             User user = users[i];  
  6.             System.out.println("用户名:"+user.getUsername()+",密码:"+user.getPassword());  
  7.         }  
  8.     }  


javascript代码:

[javascript] view plaincopy
  1. var arr = new Array();  
  2.         var myUser1 = new Object();  
  3.         myUser1.username = "kkdkf";  
  4.         myUser1.password = "kj";  
  5.         var myUser2 = new Object();  
  6.         myUser2.username = "kkdkf113434";  
  7.         myUser2.password = "kj343434";  
  8.         arr[0]=myUser1;  
  9.         arr[1]=myUser2;  
  10.         MyDWR.insertUserList(arr);  

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
A标签中通过href和onclick传递的this对象实现思路
A标签中通过href和onclick传递的this对象实现思路
4792 0
Rails启动时sqlite3.dll is missing
        最近在Win7上安装了Ruby On Rails的开发环境,准备有时间的时候再熟悉一下,也许在某个时候就可以用到了。在通过rails new test创建了一个项目后,使用命令rails server启动服务器时,出现了sqlite3.dll is missing的错误。
631 0
节点对象图与DOM树形图
节点对象图    DOM树形图   我的GitHub地址:https://github.com/heizemingjun 我的博客园地址:http://www.cnblogs.com/chenmingjun 我的蚂蚁笔记博客地址:http://blog.
549 0
pl/sql developer通过IPV6连接oracle
pl/sql developer通过IPV6连接oracle
2198 0
Dockerfile(13) - SHELL 指令详解
Dockerfile(13) - SHELL 指令详解
0 0
Shell脚本day2~简单的介绍
Shell脚本day2~简单的介绍
0 0
Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制(上)
Shell脚本day3~echo命令/数组/传递参数/基本运算符/流程控制
0 0
Python爬虫:Scrapy的Crawler对象及扩展Extensions和信号Signa
Python爬虫:Scrapy的Crawler对象及扩展Extensions和信号Signa
0 0
+关注
lhyxcxy
专注于前后端服务器交互,人工智能,NLP领域
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载