期待更好更穩(wěn)定的開源FrameWork的出現(xiàn),讓我們一起努力吧!  
          日歷
          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234
          統(tǒng)計
          • 隨筆 - 78
          • 文章 - 1
          • 評論 - 29
          • 引用 - 0

          導航

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案(42)

          文章檔案(37)

          相冊

          搜索

          •  

          積分與排名

          • 積分 - 45530
          • 排名 - 1064

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

           
          DWR使用手記

                前段時間想做個東西玩玩,又想學點新的技術(shù),就想起來用DWR(Direct Web Remoting)。把東西做完之后,想想DWR用起來還是很方便的,DWR主要是為了方便javascript調(diào)用java class方法,在中間起了一個協(xié)調(diào)作用,這個功勞主要取決于apache的開源API-bsf.jar。DWR可以聲明哪些類可以供javascript調(diào)用,可以細到只能調(diào)用哪些方法。目前DWR還支持調(diào)用spring beans??偨Y(jié)一下使用過程:

           1.在WEB.XML中配置DWRServlet:

           <servlet>
              <servlet-name>dwr-invoker</servlet-name>
              <display-name>DWR Servlet</display-name>
              <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
              <init-param>
                <param-name>debug</param-name>
                <param-value>true</param-value>
              </init-param>
              <load-on-startup>1</load-on-startup>
            </servlet>

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

           上面配置debug=true后,我們就可以通過http://localhost/webapp/dwr/查看,當前有哪些類可以供javascript調(diào)用,同時還可以對類中方法進行測試.對于DWRServlet還有一些參數(shù)可以自行設置,如logLevel設置日志級別等.具體可以參照源碼.

           2 DWR默認的讀取/WEB-INF/dwr.xml文件,dwr.xml文件配置如下:

          <dwr>
            <allow>

              <init></init>
                  <create creator="new" javascript="Ask">
                       <param name="class" value="com.test.Ask"/>
                  </create>
                  <convert converter="bean" match="Message"/>

                  <signatures></signatures>
             </allow>
          </dwr>

                 從上面可以看出來dwr.xml文件的基本結(jié)構(gòu),每個<create>聲明一個可供javascript調(diào)用的類,javascript="Ask"表明:在javascript中可以用Ask調(diào)用類Ask的方法,creator="new"表明每個請求都新建一個Ask實例.

                 下面的<convert>是:如果在類中把一個對象作為參數(shù)(例如A.take(B b)),從javascript調(diào)用此方法時,DWR會自動把javascript傳過來的參數(shù)自動轉(zhuǎn)為對應的bean對象.dwr中已經(jīng)聲明了部分參數(shù)類型的自動轉(zhuǎn)換,例如string,int等.

                如果我們不想每個請求都新建一個對象,所有請求使用一個實例,我們可以這樣配置:(需要bsf.jar)

            <create creator="script" javascript="Ask">

                   <param name="language" value="beanshell"/>

                   <param name="script">

                      <![CDATA[

                                   import com.test.Ask;

                                   return Ask.getInstance();

                     ]]>

                  </param>

             </create>

            同時在<create>中還可以加入<include method="answe"/>一個或多個,用來限制javascript可以調(diào)用哪些方法. 

           

                 <signatures>:如果我們在類方法中聲明了List這樣的類型參數(shù),DWR不知道傳過來的值自動轉(zhuǎn)化為什么類型放到List中,這時候我們就需要在這個標簽中聲明,一般的我們還是建議放到List中的是javabean,不要是Date等這些類型.

          <signatures>  <![CDATA[  import java.util.List;  import com.example.Check;  Check.setLotteryResults(List<Integer> nos);  ]]></signatures>
            3.JAVA類和JAVASCRIPT調(diào)用
             只舉簡單例子:
          public class Ask
          {
             public String answer(String question)
             {
                return question;
             }
          }
          頁面文件:
          <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/Ask.js'></script>
          <script language="javascript">
          function getAnswer()
          {
              //用一個function接收返回值
              Ask.answer(gotAnswer);
          }
          //ans即為返回值
          function gotAnswer(ans)
          {
             alert(ans);
          }
          </script>
              總體用起來DWR那是"相--當"靈活的,目前DWR.JAR到了1.1BETA版, 官方網(wǎng)站http://getahead.ltd.uk/dwr/index


          posted on 2007-07-03 16:51 BlueSky_itwangxinli 閱讀(310) 評論(0)  編輯  收藏

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


          網(wǎng)站導航:
           
           
          Copyright © BlueSky_itwangxinli Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 张家界市| 兴隆县| 怀集县| 锡林浩特市| 台前县| 巩义市| 大关县| 大田县| 富平县| 介休市| 昌宁县| 安徽省| 淅川县| 磴口县| 白银市| 凯里市| 泊头市| 兴城市| 象州县| 陆川县| 沐川县| 澄城县| 云林县| 肃南| 肃宁县| 大田县| 封开县| 内黄县| 南雄市| 乌兰浩特市| 扬中市| 安福县| 正镶白旗| 泰来县| 澎湖县| 莱阳市| 武隆县| 天镇县| 平顶山市| 班玛县| 巴林右旗|