DWR淺嘗

          Posted on 2008-03-05 17:40 FaithChen 閱讀(324) 評論(0)  編輯  收藏

          簡介:
          DWR可以幫助開發(fā)人員完成應(yīng)用AJAX技術(shù)的web程序,它可以讓瀏覽器上的javascript方法調(diào)用運(yùn)行在web服務(wù)器上java方法。
          DWR主要由兩部門組成。javascript與web服務(wù)器通信并更新web頁;運(yùn)行在web服務(wù)器的Servlet處理請求并把響應(yīng)發(fā)回瀏覽器。
          DWR采用新穎的方法實(shí)現(xiàn)了AJAX(本來也沒有確切的定義),在java代碼基礎(chǔ)上動態(tài)的生成javascript代碼。web開發(fā)者可以直接調(diào)用這些javascript代碼,然而真正的代碼是運(yùn)行在web服務(wù)器上的java code。出與安全考慮,開發(fā)者必須配置哪些java class暴露給DWR.(dwr.xml)
          DWR不認(rèn)為瀏覽器和web服務(wù)器之間協(xié)議重要,把系統(tǒng)界面放在首位。最大挑戰(zhàn)是java method call的同步特征與ajax異步特性之間的矛盾。在異步模型里,結(jié)果只有在方法結(jié)束后才有效。DWR解決了這個問題,把回調(diào)函數(shù)當(dāng)成參數(shù)傳給方法,處理完成后,自動調(diào)用回調(diào)方法。
          配置:

          1. web.xml: <servlet>
                <servlet-name>dwr-invoker</servlet-name>
                <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
                <init-param>
                           <param-name>debug</param-name>
                    <param-value>false</param-value>
                </init-param>
                <init-param>  
                           <param-name>crossDomainSessionSecurity</param-name>   
                           <param-value>false</param-value>  
                    </init-param>
               </servlet>

               <servlet-mapping>
                 <servlet-name>dwr-invoker</servlet-name>
                 <url-pattern>/dwr/*</url-pattern>
               </servlet-mapping>

          2. dwr.xml:<?xml version="1.0" encoding="UTF-8"?>
            <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
            <dwr>
             <allow>
              <create creator="spring" javascript="main_MenuCatalogDWR" scope="page">
               <param name="beanName" value="/main/MenuCatalogDWR"/>
              </create>
              <create creator="spring" javascript="main_TreeDWR" scope="page">
               <param name="beanName" value="/main/TreeDWR"/>
              </create>
              <create creator="spring" javascript="main_OperateFilterDWR" scope="page">
               <param name="beanName" value="/main/OperateFilterDWR"/>
              </create>
              <create creator="spring" javascript="main_RightTreeDWR" scope="page">
               <param name="beanName" value="/main/RightTreeDWR"/>
              </create>
              <convert converter="dom4j" match="org.directwebremoting.convert.DOM4JConverter">
              </convert>
              <convert converter="dom" match="org.directwebremoting.convert.DOMConverter">
              </convert>
             </allow>
            </dwr>

             3.jsp頁面設(shè)置:
                  //以下兩行是dwr所必需的
                  <script type='text/javascript' src="<c:url value='/dwr/engine.js'/>"></script>
                                        <script type='text/javascript' src="<c:url value='/dwr/util.js'/>"></script> 
                  <script type='text/javascript' src="<c:url value='/dwr/interface/main_MenuCatalogDWR.js'/>"></script>
          說明:<script type='text/javascript' src="<c:url value='/dwr/engine.js'/>"></script>
                      <script type='text/javascript' src="<c:url value='/dwr/util.js'/>"></script> 是dwr所必需的
             <script type='text/javascript' src="<c:url value='/dwr/interface/main_MenuCatalogDWR.js'/>"></script>主要作用是:
                      dwr/interface/這種請求到來,(如上面的<script type='text/javascript' src="<c:url  value='/dwr/interface/main_MenuCatalogDWR.js'/>"></script>)DWR做一件偉大的事。把我們在WEB-INF/dwr.xml中的
                     <create creator="spring" javascript="main_MenuCatalogDWR" scope="page">
                            <param name="beanName" value="/main/MenuCatalogDWR"/>
                     </create>轉(zhuǎn)化為javascript函數(shù)。 

          4.beanName配置(本項(xiàng)目spring配置文件為action-servlet.xml)
           <bean name="/main/MenuCatalogDWR" class="com.icsshs.webapp.main.MenuCatalogDWR" singleton="false">
                  <property name="hsRoleRightManager">
                      <ref bean="hsRoleRightManager"/>
                  </property>
              </bean>
          5.jsp頁面調(diào)用:
          function menucatalog(){
               main_MenuCatalogDWR.execute("",callbackok);
              }
              function callbackok(data){
                  var root0=data.documentElement;
                  if (root0.childNodes.length>0){
                      if (root0.childNodes(0).childNodes.length==0) return;
                      $("mainmenu").innerHTML=root0.childNodes(0).childNodes(0).text;
                      key=root0.childNodes(1).childNodes(0).text;
                      if (parent.frames.leftFrame.document.readyState == "complete"){
                          setmenuclick(key);
                      }else{
                          setTimeout("setmenuclick('"+key+"')",500);
                      }
                  }
              }

          說明:callbackok為回調(diào)函數(shù),data為dwr返回的結(jié)果集


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


          網(wǎng)站導(dǎo)航:
           

          posts - 4, comments - 0, trackbacks - 0, articles - 4

          Copyright © FaithChen

          主站蜘蛛池模板: 成武县| 贵溪市| 永丰县| 静海县| 大连市| 大庆市| 临夏县| 自贡市| 塘沽区| 新津县| 敦煌市| 五大连池市| 志丹县| 和林格尔县| 南漳县| 太湖县| 方城县| 弋阳县| 茌平县| 龙陵县| 高邑县| 高台县| 宜宾县| 潮安县| 黎平县| 诏安县| 孟津县| 额济纳旗| 陕西省| 远安县| 盐池县| 瓦房店市| 仁化县| 乌拉特后旗| 郑州市| 都匀市| 房山区| 新干县| 石狮市| 白玉县| 台湾省|