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

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

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

    176142998

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      116 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks
      DWR(直接Web遠(yuǎn)程控制)項目是在Apache許可下的一個開源的解決方案,它提供了一種簡單的方式使得HTML頁面上的javascript可以訪問應(yīng)用服務(wù)器的Java對象方法,是Ajax開發(fā)者可以方便使用的一個優(yōu)雅框架。DWR具有一套Javascript功能集,它們把從HTML頁面調(diào)用應(yīng)用服務(wù)器上的Java對象的方法簡化,操控不同類型的參數(shù),同時保持了HTML代碼的可讀性。DWR實現(xiàn)的AJAX在某些方面很先進(jìn),包括動態(tài)生成javascript代碼;隱藏http協(xié)議等。

    web.xml配置:
    <servlet>
     <servlet-name>dwr-invoker</servlet-name>
     <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>  </servlet>
    <servlet-mapping>
     <servlet-name>dwr-invoker</servlet-name>
     <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
    DWRServlet是DWR主Servlet,所有的/dwr/*所有請求都由這個servlet來處理。
    DWRServlet init()主要做了以下工作:
    1實例化DWR用到的Singleton類:AccessControl,Configuration,ConverterManager,CreatorManager,Processor
    2 讀去配置文件:包括dwr.jar包中的dwr.xml,WEB-INF/dwr.xml,web.xml。
    WEB-INF/dwr.xml文件告訴DWR哪些服務(wù)是要直接向JavaScript代碼公開的,以DWR的test為例:
        <create creator="new" javascript="JDate">
          <param name="class" value="java.util.Date"/>
          <exclude method="getHours"/>
          <auth method="getMinutes" role="admin"/>
          <auth method="getMinutes" role="devel"/>
        </create>
    DWR會根據(jù)此自動生成對應(yīng)的JDate.js文件。new意味著DWR調(diào)用類的構(gòu)造函數(shù)獲得實例,還可以通過跟Spring集成達(dá)到該目的。

    DWRServlet的doGet和doPost均直接調(diào)用Processor的handle方法處理,handle處理的/dwr/*請求包含以下幾類:
    1 dwr/index.html,dwr/test/只能在debug模式下供調(diào)試用
    2 對dwr/engine.js,dwr/util.js,dwr/deprecated.js的請求調(diào)用,直接從包中讀取相應(yīng)的js文件流響應(yīng)回去,
    并對相應(yīng)做緩存處理,緩存以一個hashmap實現(xiàn)。
    3 對dwr/interface/的請求調(diào)用,DWR生成跟Java對應(yīng)的javascript存根,DWR通過ConverterManager自動調(diào)整Java和javacript的參數(shù)類型匹配。
    4 客戶端javascript的實際調(diào)用,將通過handler方法的doExec執(zhí)行。

    由此,DWR的運(yùn)作流程是:
    客戶端包含3類javascript腳本
    1 java代碼的存根,即通過dwr/interface/調(diào)用,如<script type='text/javascript' src='dwr/interface/JDate.js'></script>
    如上所述,該存根由DWR具體是CreatorManager和ConvertorManager根據(jù)dwr.xml的配置進(jìn)行自動生成
    2 DWR核心javascript庫,至少要包含<script type='text/javascript' src='dwr/engine.js'></script>,有時也需要包含util.js,util.js封裝了prototype的若干函數(shù),便于第三方j(luò)avascript調(diào)用
    3 第三方j(luò)avascript,該腳本需要調(diào)用第一類存根腳本所封裝的Java代碼,第二類的engine.js等腳本為該調(diào)用提供通信支撐。這樣就達(dá)到了一個基本的RPC的目的,由于RPC本質(zhì)上是同步進(jìn)行,而AJAX的XMLHTTP為異步調(diào)用,為了實現(xiàn)異步機(jī)制,第三方j(luò)avascript可以提供一個回調(diào)函數(shù)句柄傳入存根,待存根函數(shù)返回調(diào)用該回調(diào),這樣即達(dá)到異步通信。
    posted on 2008-08-12 16:41 飛飛 閱讀(627) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲永久无码3D动漫一区| 国产片免费福利片永久| 久久久久亚洲精品无码系列| 一级做a爰性色毛片免费| 亚洲国产精品自在拍在线播放| 亚洲av日韩专区在线观看| 日本牲交大片免费观看| 国产区图片区小说区亚洲区| 四虎永久成人免费| 青青草国产免费国产是公开| 亚洲国产成人久久综合碰| 一本久久A久久免费精品不卡| 亚洲国产精品专区在线观看| 国产午夜无码片免费| 亚洲AV人无码综合在线观看| 91香蕉在线观看免费高清| 亚洲一卡2卡3卡4卡国产网站| 一个人免费观看视频www| 朝桐光亚洲专区在线中文字幕 | 亚洲日本乱码一区二区在线二产线| 在线观看免费中文视频| 亚洲一级毛片在线观| 永久免费看bbb| 一区二区三区免费视频观看| 亚洲av无码片在线播放| 亚洲一级免费视频| 亚洲AV无码一区二区一二区| 国产成人99久久亚洲综合精品| a国产成人免费视频| 亚洲不卡视频在线观看| 亚洲国产电影av在线网址| 日韩成人免费视频| 亚洲精品无码久久久久A片苍井空| 亚洲国产成人久久一区WWW| 最近中文字幕2019高清免费| 亚洲精品亚洲人成在线| 中文字幕精品亚洲无线码一区应用| 中文字幕免费视频一| 狠狠热精品免费观看| 亚洲系列中文字幕| 亚洲AV无码不卡在线观看下载|