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

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

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

    瘋狂

    STANDING ON THE SHOULDERS OF GIANTS
    posts - 481, comments - 486, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    DWR學習及應用

    Posted on 2007-11-25 20:31 瘋狂 閱讀(1843) 評論(0)  編輯  收藏

    DWR是一個開源的類庫,可以幫助開發人員開發包含AJAX技術的網站.它可以允許在瀏覽器里的代碼使用運行在WEB服務器上的JAVA函數,就像它就在瀏覽器里一樣.
        DWR允許使用客戶端Javascript來與服務端Java程序進行交互,他實際上是幫助開發者隱藏了很多的開發細節。不用辛苦的去使用XMLHTTP,DWR是客戶端-服務端的AJAX比較好的解決方案。

       它包含兩個主要的部分:允許JavaScript從WEB服務器上一個遵循了AJAX原則的Servlet(小應用程序)中獲取數據.另外一方面一個JavaScript庫可以幫助網站開發人員輕松地利用獲取的數據來動態改變網頁的內容.
        DWR采取了一個類似AJAX的新方法來動態生成基于JAVA類的JavaScript代碼.這樣WEB開發人員就可以在JavaScript里使用Java代碼就像它們是瀏覽器的本地代碼(客戶端代碼)一樣;但是Java代碼運行在WEB服務器端而且可以自由訪問WEB 服務器的資源.出于安全的理由,WEB開發者必須適當地配置哪些Java類可以安全的被外部使用.
       
      這個從JAVA到JavaScript的遠程功能方法給DWR的用戶帶來非常像傳統的RPC機制,就像RMI或者SOAP一樣,而且擁有運行在WEB上但是不需要瀏覽器插件的好處.
        DWR不認為瀏覽器/WEB服務器協議是重要的,而更樂于保證編程界面的簡單自然.對此最大的挑戰就是把AJAX的異步特性和正常JAVA方法調用的同步特性相結合.在異步模式下,結果數據在開始調用之后的一段時間之后才可以被異步訪問獲取到.DWR允許WEB開發人員傳遞一個回調函數,來異步處理Java函數調用過程
      

    DWR Javascript庫中常用函數的使用

    設置異步/同步模式  

    默認情況下,DWR以異步的方式跟服務器通信,即可以同時向服務器發送請求,如果想要改為同步的方式,可以調用:dwr.engine.setAsync(false);

    獲得對某個頁面元素對象的引用

    $(“元素的ID或名稱”)

    對列表元素的支持

    dwr.util.removeAllOptions()

    dwr.util.addOptions()

    dwr.util.getValue()

    dwr.util.setValue()

        

    Dwr的一個應用:

    官方網址: http://getahead.org/dwr

    下載dwr.jar,將其加入web-inf/lib目錄

    修改web.xml文件,添加DWRServlet的映射

     <servlet>

        <servlet-name>dwr-invoker</servlet-name>

        <servlet-class>org.directwebremoting.servlet.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>
     

    配置dwr,即在WEB-INF目錄下,添加dwr.xml文件,讓dwr知道在運行的時候應該給哪些JavaBean生成相應的javascript庫!

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">

    <dwr>

     <allow>

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

          <param name="class" value="com.dwr.Test1"/>

        </create>

     </allow>

    </dwr>
     

    這個配置的意思是,要創建的是Test1對象的javascript庫,而且這個庫的名字叫test1,同時,這也是我們在JSP頁面上調用這個對象的時候所使用的名稱,請看下面的JavaBean代碼和JSP實例:

    4、下面是Test1這個JavaBean的源代碼:

     

    package com.dwr;

    public class Test1 {

        public String sayHello(String name){

           return "你好,"+name;

        }

    }
    5、在JSP中的使用
     

    <%@ page language="java" contentType="text/html; charset=GB18030"

        pageEncoding="GB18030"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">

    <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/test1.js"></script>

    <title>Insert title here</title>

    <script type="text/javascript">

    function sayHello(){

        test1.sayHello("李四ddd",

           function(data){

               alert(data);

           }

        );

    }

    </script>

    </head>

    <body>

    <a href="#" onclick="sayHello()">Test1</a>

    </body>

    </html>
     

    讓我們簡單看一下這個JSP文件:首先引入DWR中的兩個核心javascript庫:engine.jsutil.js,它們分別是dwr中的核心引擎庫和輔助工具函數庫!

     

       第三個引入的dwr/interface/test1.js,實際上這個文件并不存在,這是由dwr在運行的時候動態生成的!test1這個名稱,跟dwr.xml文件中配置的對應對象的javascript屬性一致!

    而且,我們在使用的時候,直接使用test1這個名稱,作為這個對象的引用。直接調用這個對象的方法:sayHello,這個方法的名稱必須與JavaBean中的方法名稱一致!

    sayHello方法有一個參數,同時返回一個值。我們可以直接傳遞參數,同時指定一個javascript函數來處理這個返回值(如上例所示)。

    如何傳遞參數

    如果要調用的方法有參數,則將參數放在前面

    如何處理返回值

    定義一個函數來處理返回值,這個函數有一個參數,就是JavaBean方法的返回值


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲av午夜电影在线观看| 亚洲欧洲视频在线观看| 亚洲a一级免费视频| 亚洲欧洲精品在线| 亚洲精品自偷自拍无码| 成人嫩草影院免费观看| 十八禁在线观看视频播放免费| 国产成人AV片无码免费| 亚洲人成在线免费观看| 国产在线98福利播放视频免费| 国产亚洲精品线观看动态图| 亚洲狠狠久久综合一区77777| 亚洲av永久无码嘿嘿嘿| 色屁屁在线观看视频免费| 任你躁在线精品免费| 日韩免费一区二区三区在线| 又粗又硬又黄又爽的免费视频 | 国产美女被遭强高潮免费网站| 亚洲 自拍 另类小说综合图区 | 亚洲精品一区二区三区四区乱码| 亚洲kkk4444在线观看| 国产成人无码免费看片软件| 99re在线这里只有精品免费| 国产美女无遮挡免费视频网站| 亚洲AV永久无码精品| 亚洲欧洲AV无码专区| 四虎国产精品免费永久在线| 69成人免费视频无码专区| 国产亚洲美女精品久久久| 亚洲一区二区三区在线| 欧洲美女大片免费播放器视频| 午夜视频在线免费观看| 免费一区二区三区四区五区| 久久久久亚洲精品无码蜜桃| 精品在线视频免费| 国产免费久久精品99re丫y| 中文字幕亚洲日本岛国片| 亚洲中文字幕无码一去台湾 | 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 亚洲色成人四虎在线观看| 拍拍拍无挡免费视频网站|