<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 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    DWR學(xué)習(xí)及應(yīng)用

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

    DWR是一個(gè)開(kāi)源的類庫(kù),可以幫助開(kāi)發(fā)人員開(kāi)發(fā)包含AJAX技術(shù)的網(wǎng)站.它可以允許在瀏覽器里的代碼使用運(yùn)行在WEB服務(wù)器上的JAVA函數(shù),就像它就在瀏覽器里一樣.
        DWR允許使用客戶端Javascript來(lái)與服務(wù)端Java程序進(jìn)行交互,他實(shí)際上是幫助開(kāi)發(fā)者隱藏了很多的開(kāi)發(fā)細(xì)節(jié)。不用辛苦的去使用XMLHTTP,DWR是客戶端-服務(wù)端的AJAX比較好的解決方案。

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

    DWR Javascript庫(kù)中常用函數(shù)的使用

    設(shè)置異步/同步模式  

    默認(rèn)情況下,DWR以異步的方式跟服務(wù)器通信,即可以同時(shí)向服務(wù)器發(fā)送請(qǐng)求,如果想要改為同步的方式,可以調(diào)用:dwr.engine.setAsync(false);

    獲得對(duì)某個(gè)頁(yè)面元素對(duì)象的引用

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

    對(duì)列表元素的支持

    dwr.util.removeAllOptions()

    dwr.util.addOptions()

    dwr.util.getValue()

    dwr.util.setValue()

        

    Dwr的一個(gè)應(yīng)用:

    官方網(wǎng)址: 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知道在運(yùn)行的時(shí)候應(yīng)該給哪些JavaBean生成相應(yīng)的javascript庫(kù)!

    <?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>
     

    這個(gè)配置的意思是,要?jiǎng)?chuàng)建的是Test1對(duì)象的javascript庫(kù),而且這個(gè)庫(kù)的名字叫test1,同時(shí),這也是我們?cè)贘SP頁(yè)面上調(diào)用這個(gè)對(duì)象的時(shí)候所使用的名稱,請(qǐng)看下面的JavaBean代碼和JSP實(shí)例:

    4、下面是Test1這個(gè)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>
     

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

     

       第三個(gè)引入的dwr/interface/test1.js,實(shí)際上這個(gè)文件并不存在,這是由dwr在運(yùn)行的時(shí)候動(dòng)態(tài)生成的!test1這個(gè)名稱,跟dwr.xml文件中配置的對(duì)應(yīng)對(duì)象的javascript屬性一致!

    而且,我們?cè)谑褂玫臅r(shí)候,直接使用test1這個(gè)名稱,作為這個(gè)對(duì)象的引用。直接調(diào)用這個(gè)對(duì)象的方法:sayHello,這個(gè)方法的名稱必須與JavaBean中的方法名稱一致!

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

    如何傳遞參數(shù)

    如果要調(diào)用的方法有參數(shù),則將參數(shù)放在前面

    如何處理返回值

    定義一個(gè)函數(shù)來(lái)處理返回值,這個(gè)函數(shù)有一個(gè)參數(shù),就是JavaBean方法的返回值


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 1000部啪啪毛片免费看| 亚洲AV无码成人精品区在线观看| 日韩午夜理论免费TV影院| 西西人体大胆免费视频| 亚洲一区在线免费观看| 亚洲成A人片在线观看无码不卡| 国产乱子伦精品免费女| 1024免费福利永久观看网站| 在线观看免费播放av片| 一级女性全黄久久生活片免费| 亚洲精品无码久久久久A片苍井空| 亚洲欧洲综合在线| 婷婷亚洲综合五月天小说| 亚洲三区在线观看无套内射| 婷婷综合缴情亚洲狠狠尤物| 狼友av永久网站免费观看| 免费人成在线视频| 国产v精品成人免费视频400条| 99re在线精品视频免费| 日韩精品人妻系列无码专区免费 | 91av视频免费在线观看| 特级做A爰片毛片免费看无码| 日韩在线视频播放免费视频完整版| 亚洲av无码成人精品国产| 亚洲欧美日韩综合久久久| 亚洲一区二区三区成人网站 | 在线精品一卡乱码免费| 91久久青青草原线免费| 91九色老熟女免费资源站| 51精品视频免费国产专区| 69免费视频大片| 国产福利视精品永久免费| 国产精品成人免费福利| 99在线精品免费视频九九视| 丁香花免费完整高清观看| 免费三级毛片电影片| 一二三四影视在线看片免费| 成人毛片免费播放| 国产区卡一卡二卡三乱码免费| 免费国产在线观看不卡| 亚洲AV永久无码精品一区二区国产|