dwr 异步传递对象


注意在导入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 plain copy
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEdwrPUBLIC"-//GetAheadLimited//DTDDirectWebRemoting3.0//EN""http://getahead.org/dwr/dwr30.dtd">
  3. <dwrallow>
  4. createcreator="new"javascript="MyDWR"paramname="class"value="com.DWRTest.Controller.MyDWR"/>
  5. </createconvertconverter="bean"match="com.DWRTest.model.*">


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

假设model下有一个POJO:

[java] copy
    packagecom.DWRTest.model;
  1. publicclassUser{
  2. privateStringusername;
  3. privateStringpassword;
  4. publicStringgetUsername(){
  5. returnusername;
  6. }
  7. voidsetUsername(Stringusername){
  8. this.username=username;
  9. }
  10. publicStringgetpassword(){
  11. returnpassword;
  12. voidsetPassword(Stringpassword){
  13. this.password=password;
  14. }

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

1.DWR获得JAVA传递的对象

java代码

copy
    publicUsergetMyUser(){
  1. Useruser=newUser();
  2. user.setUsername("tammypi");
  3. user.setPassword("1988");
  4. returnuser;

  5. 利用javascript访问这个对象:

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


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

copy

    publicList<User>getMyUserList(){
  1. List<User>list=newArrayList<User>();
  2. Useruser2= user2.setUsername("tammypi");
  3. user2.setPassword("1988");
  4. Useruser1= user1.setUsername("tony");
  5. user1.setPassword("1962");
  6. list.add(user1);
  7. list.add(user2);
  8. returnlist;

  9. 利用javascript访问list:

    copy
      MyDWR.getMyUserList(function(list){
    1. for(vari=0;i<list.length;i++){
    2. alert("访问第"+i+"个对象");
    3. alert(list[i].username+","+list[i].password);
    4. });


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

    copy

      publicMap<String,String>insertUser(Useruser){
    1. System.out.println(user.getUsername()+","+user.getpassword());
    2. Map<String,String>map=newHashMap<String,String>();
    3. map.put(user.getUsername(),user.getpassword());
    4. returnmap;

    5. 利用javascript访问返回的map:

      copy
        varmyUser=newObject();
      1. //传对象1
        /* var u = {
        username : "aaaaaaaaaaaa",
        password : "bbbbbbbbbbbb"
        }; */

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


      4.DWR传递对象数组:

      copy

        voidinsertUserList(User[]users){
      1. inti=0;i<users.length;i++){
      2. Useruser=users[i];
      3. System.out.println("用户名:"+user.getUsername()+",密码:"+user.getpassword());

      4. javascript代码

        copy
          vararr=newArray();
        1. varmyUser1=newObject();
        2. myUser1.username="kkdkf";
        3. myUser1.password="kj";
        4. varmyUser2= myUser2.username="kkdkf113434";
        5. myUser2.password="kj343434";
        6. arr[0]=myUser1;
        7. arr[1]=myUser2;
        8. MyDWR.insertUserList(arr);

        相关文章

        IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
        PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
        使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
        Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
        本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
        Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...