<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-28  評論-15  文章-81  trackbacks-0
    DWR是Direct Web Remoting 的縮寫。

    DWR 是一個開放源碼的使用 Apache 許可協議的解決方案,它包含服務器端 Java 庫、一個 DWR servlet 以及 JavaScript 庫。雖然 DWR 不是 Java 平臺上唯一可用的 Ajax-RPC 工具包,但是它是最成熟的,而且提供了許多有用的功能。
    從最簡單的角度來說,DWR 是一個引擎,可以把服務器端 Java 對象的方法公開給 JavaScript 代碼。使用 DWR 可以有效地從應用程序代碼中把 Ajax 的全部請求-響應循環消除掉。這意味著客戶端代碼再也不需要直接處理 XMLHttpRequest 對象或者服務器的響應。不再需要編寫對象的序列化代碼或者使用第三方工具才能把對象變成 XML。甚至不再需要編寫 servlet 代碼把 Ajax 請求調整成對 Java 域對象的調用。
    DWR 是作為 Web 應用程序中的 servlet 部署的。把它看作一個黑盒子,這個 servlet 有兩個主要作用:首先,對于公開的每個類,DWR 動態地生成包含在 Web 頁面中的 JavaScript。生成的 JavaScript 包含存根函數,代表 Java 類上的對應方法并在幕后執行 XMLHttpRequest。這些請求被發送給 DWR,這時它的第二個作用就是把請求翻譯成服務器端 Java 對象上的方法調用并把方法的返回值放在 servlet 響應中發送回客戶端,編碼成 JavaScript。DWR 還提供了幫助執行常見的用戶界面任務的 JavaScript 工具函數。
     
    util.js  util.js包含了一些使用的方法,從而幫助你利用j avascript(可能)從服務器端更新你的web數據。
     你可以在DWR之外的地方使用它,因為它并不依賴與DWR而實現。
     它包含四個頁面處理函數:getValue[s]()、setValue[s]()作用于除tables、lists和images以外的大多數html元素。getText()作用于select lists。
     addRows()和removeAllRows()用于編輯tables。addOptions()和removeAllOptions()用于編輯lists(如:select lists、ul、ol)。
    $()
     $函數(在j avascript中,他的名字是合法的)的思想是從prototype引進的。一般說來,$ = document.getElementById。在以后你花大量時間進行ajax編程的時候,在合適的地方使用這種格式是很有益的。
     '$'通過給定的ID在當前HTML頁面找到元素,如果多于一個的參數被提交,它就會返回一個包含已找到元素的數組。這個函數從prototype的library中得到的靈感,而且,它還能更好的工作在不同的瀏覽器中。
     
    Generating Lists
     DWR的一個功能可以給一個下拉列表(select list)添加選項,只需使用DWRUtil.addOptions()。
     如果你在更新列表之前,希望保留一些選項,你需要寫以下一些代碼:
         var sel = DWRUtil.getValue(id);
         DWRUtil.removeAllOptions(id);
         DWRUtil.addOptions(id, ...);
         DWRUtil.setValue(id, sel);
     如果你想有個初始化選項,如:“please select”,你可以直接使用:
         DWRUtil.addOptions(id, ["Please select"]);
    DWRUtil.addOptions 有5種調用方法:Array: DWRUtil.addOptions(selectid, array) 。selectid為目標ID,array為每一項的text。
    Array of objects (option text = option value): DWRUtil.addOptions(selectid, data, prop) 用text和value的集合來為每一個數組元素創建一個選項,pro參數指定text和value的值。
    Array of objects (with differing option text and value): DWRUtil.addOptions(selectid, array, valueprop, textprop) 用text和value的集合來為每一個數組元素創建一個選項,valueprop確定value,textprop確定text。
    Object: DWRUtil.addOptions(selectid, map, reverse) 為map中每一個屬性(property)創建一個選項,屬性名作為選項的value,屬性的value作為選項的text。這樣做看起來是錯的,但實際上這種做法的確是正確的。如果reverse參數被設置為true,則屬性的value還是被用做選項的value。
    Map of objects: DWRUtil.addOptions(selectid, map, valueprop, textprop) 為map中的每一個對象創建一個選項,valueprop指定選項的value,textprop指定選項的text。
     
    Generating Tables
    DWRUtil.addRows() 從一個數組(第二個參數)取得值,創建table的每一行。從另一個數組(第三個參數)去得值,為table的每一行創建若干列。
     
    DWRUtil.getText(id)
    可以根據id取得text的值,這個方法只能用于select list
    DWRUtil.getValue(id)
    可以根據id取得value,使用這個方法,你不必在意div和select list的不同。
    DWRUtil.getValues()
    getValues() is similar to getValue() except that the input is a Javascript object that contains name/value pairs. The names are assumed to be the IDs of HTML elements, and the values are altered to reflect the contents of those IDs. This method does not return the object in question, it alters the value that you pass to it.
    這個方法和getValue()一樣,只是它傳入的是一個包含名字和數值的j avascript對象.這個名字就是HTML元素的ID。這個方法不會返回任何對象,它只會將ID的value映射給傳入的value。例:
    function doGetValues() { 
     var text= "{ 
     div:null,
     textarea:null,
     select:null,
     text:null,
     password:null,
     formbutton:null,
     button:null
    }";
     var object = objectEval(text);    //j avascript對象
     DWRUtil.getValues(object);
     var reply = DWRUtil.toDescriptiveString(object, 2);   //toString
     reply = reply.replace(/n/g, "<br/>");                        //轉意
     DWRUtil.setValue("getvaluesret", reply);                     //顯示
    }
     
    DWRUtil.onReturn
    貼一段代碼,暫時不理解,用onReturn和不用有什么區別
    <script>
    function submitFunction()

       $("alert").style.display = "inline";
       setTimeout("unsubmitFunction();", 1000);
    }
    function unsubmitFunction()

       $("alert").style.display = "none";
    }
    </script>
    <p><input type="text" onkeydown="DWRUtil.onReturn(event, submitFunction)"/>
    <input type="button" onclick="submitFunction()" value="GO"/>
    <span id="alert" style="display:none; background:#FFFFDD; font-weight:bold;">submitFunction called</span>
    </p>
     
    DWRUtil.selectRange
    在一個input box里選一個范圍
    DWRUtil.selectRange("sel-test", $("start").value, $("end").value);
     
    DWRUtil.setValue(id, value)
    用ID找到元素,并更新value
    DWRUtil.setValues()
    和setValue(id,value)一樣,只是它需要的參數是個j avascript對象,如:
    DWRUtil.setValues({ 
     div: "new div content",
     password: "1234567890"
    });
     
    DWRUtil.toDescriptiveString
    帶debug信息的toString,第一個為將要debug的對象,第二個參數為處理等級。等級如下:
    0: Single line of debug 單行調試 
    1: Multi-line debug that does not dig into child objects 不分析子元素的多行調試 
    2: Multi-line debug that digs into the 2nd layer of child objects 最多分析到第二層子元素的多行調試 
    And so on. Level 2 and greater probably produce too much output. 
    總結:DWR不但屏蔽了許多client與server交互的重復且復雜的代碼,而且還提供了一些常用的方法,一些思想還是從prototype繼承而來,并有一定的改進。同時,它也考慮到了與struts、hibernate、spring的結合問題。
    需要注意的是,DWR是一種把服務器端的java代碼通過j avascript直接從瀏覽器調用的方法(DWR is a way of calling Java code on the server directly from Javascript in the browser.),而不是一個j avascript的庫(Generally speaking DWR is not a generic JavaScript library so it does not attempt to provide fill this need. However this is one of these really useful functions to have around if you are doing Ajax work.)能做到怎么多,已經很難得了。
    DWR自04年11月草案提出到現在的Version 1.1 beta 3(2005-12-29),已經更新發布了20多次了,但愿在ajax的發展大路上,能始終看見DWR的身影。
    posted on 2007-10-17 01:08 譚明 閱讀(332) 評論(0)  編輯  收藏 所屬分類: AJAX

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲av成人综合网| 亚洲精品资源在线| 深夜a级毛片免费视频| 国产高清免费的视频| 亚洲av无码一区二区三区四区| 91在线视频免费91| 亚洲中文字幕无码久久2020| 成**人免费一级毛片| 色偷偷尼玛图亚洲综合| 亚洲毛片网址在线观看中文字幕 | 亚洲一区二区三区在线观看精品中文| 人人爽人人爽人人片A免费| 高清在线亚洲精品国产二区| 黄色网址大全免费| 在线A亚洲老鸭窝天堂| 两个人看的www免费视频中文| 亚洲av永久无码制服河南实里| 69pao强力打造免费高清| 亚洲av无码片在线观看| 日本一道综合久久aⅴ免费| 水蜜桃视频在线观看免费| 亚洲桃色AV无码| 精品国产免费人成电影在线观看| 亚洲免费电影网站| 全部免费毛片免费播放| 热久久这里是精品6免费观看| 亚洲黄色在线视频| 日韩精品视频免费观看| 黄色网页在线免费观看| 亚洲精品资源在线| 波多野结衣视频在线免费观看| 国内精品免费在线观看| 久久亚洲精品国产精品婷婷 | 美女黄频a美女大全免费皮| 亚洲日韩激情无码一区| 性做久久久久久免费观看| h视频在线免费观看| 亚洲精品国产福利在线观看| 国产国产人免费人成免费视频| 中文在线免费观看| 亚洲一卡2卡三卡4卡无卡下载|