無聊人士

          搬家==》www.soapui.cn

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            32 隨筆 :: 0 文章 :: 60 評論 :: 0 Trackbacks
          需求很簡單,就是用js向后端請求,然后把請求的結果弄進一個select里面。一開始是用xmlrequest去請求后端一個groovy的url,得到一個xml,然后把xml的內容填進select里面去。做完老瞅著不順眼,正好在看ajax的資料,拿dwr改造一下。

          js是我一直很頭疼的事了,尤其是對dom的操作上面,dwr感覺就是在直接調java接口,操作java對象,省事省心啊。

          用dwr,先得在web.xml中配一下。

           1    <servlet>
           2        <servlet-name>dwr-invoker</servlet-name>
           3        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
           4        <init-param>
           5            <param-name>debug</param-name>
           6            <param-value>true</param-value>
           7        </init-param>
           8    </servlet>
           9    <servlet-mapping>
          10        <servlet-name>dwr-invoker</servlet-name>
          11        <url-pattern>/dwr/*</url-pattern>
          12    </servlet-mapping>
          13

          然后就是配dwr.xml文件了。
          dwr和spring貼得比較緊,不用折騰,直接讓dwr去調spring中定義的bean了。
           1<?xml version="1.0" encoding="UTF-8"?>
           2<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd" >
           3<dwr>
           4    <allow>
           5        <create javascript="ServerManager" creator="spring">
           6            <param name="beanName">ServerManager</param>
           7        </create>
           8    </allow>
           9</dwr>
          10
          我的project中,已經在web.xml中配了spring的listener,直接寫beanName就行。

          在ServerManager接口中定義了如下方法
            List<Server> loadAll(User manager, ServerStatus status, String order);
          因此,在dwr中定義了三個convert(一開始沒配,結果怎么調都不成功)。

          1        <convert converter="bean" match="com.yninfo.sa.domain.Server" />
          2        <convert converter="bean" match="com.yninfo.sa.domain.ServerStatus" />
          3        <convert converter="bean" match="com.yninfo.sa.domain.User" />


          loadAll方法中的manager參數,是用戶登錄成功后,session.setAttribute("user",user)存放的。在html里面,用js是無法讀到的,因此,自己定義了一個java bean。
          1public class Remote {
          2  public User getUser(HttpSession session) {
          3    return (User) session.getAttribute("user");
          4  }

          5}

          6

          同樣的,在dwr中配了一下
          1        <create javascript="Remote" creator="new">
          2            <param name="class" value="com.yninfo.sa.web.ajax.Remote" />
          3        </create>


          所有配置完成后,js代碼如下:
           1<script type='text/javascript' src='dwr/interface/Remote.js'></script>
           2<script type='text/javascript' src='dwr/interface/ServerManager.js'></script>
           3<script type='text/javascript' src='dwr/engine.js'></script>
           4<script type='text/javascript' src='dwr/util.js'></script>
           5<script>
           6    function init(){
           7        Remote.getUser(
           8            function(user){
           9                ServerManager.loadAll(user,null,null,load);
          10            }
          );
          11    }

          12    function load(data){
          13        for (var i=0; i<data.length; i++{
          14          document.DailyRecordAdd.elements["model.serverId"].options[i]=
          15            new Option(data[i].name,data[i].id);
          16        }

          17    }

          18    window.onload = function (){
          19        init();
          20    }

          21</script>


          最終的配置文件:
           1<?xml version="1.0" encoding="UTF-8"?>
           2<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd" >
           3<dwr>
           4    <allow>
           5        <create javascript="ServerManager" creator="spring">
           6            <param name="beanName">ServerManager</param>
           7            <include method="add" />
           8            <include method="findByPrimaryKey" />
           9            <include method="loadAll" />
          10        </create>
          11        <create javascript="Remote" creator="new">
          12            <param name="class" value="com.yninfo.sa.web.ajax.Remote" />
          13        </create>
          14        <convert converter="bean" match="com.yninfo.sa.domain.User" />
          15        <convert converter="bean" match="com.yninfo.sa.domain.Server" />
          16        <convert converter="bean" match="com.yninfo.sa.domain.ServerStatus" />
          17    </allow>
          18</dwr>
          19

          posted on 2005-12-05 00:04 mmwy 閱讀(6407) 評論(8)  編輯  收藏 所屬分類: Others

          評論

          # re: 接觸DWR 2006-09-21 22:02 java-man
          不錯~頂一個  回復  更多評論
            

          # re: 接觸DWR 2006-11-09 16:27 鍋巴—new
          問個問題,在web.xml中配置以后,系統會自動的去找dwr.xml,然后解讀里面的內容,是這樣嗎?不需要其他的配置?  回復  更多評論
            

          # re: 接觸DWR 2006-11-22 16:18 loook123
          dwr 是個好東西  回復  更多評論
            

          # re: 接觸DWR 2006-12-05 23:51 Mars
          您好,我剛學DWR,可以請教一個問題么?
          我在本機Windows調試完全成功,放到Lunix虛擬服務器上就報DWRUtil is not defined錯誤,請問您遇到過類似情況么?有方法解決么?  回復  更多評論
            

          # re: 接觸DWR 2007-04-09 19:40 曉松
          多謝指點啊  回復  更多評論
            

          # re: 接觸DWR 2007-04-17 09:46 johnrobbet
          我覺得是你配置上的問題
          @Mars
            回復  更多評論
            

          # re: 接觸DWR 2007-04-28 17:23 qq
          挺好,學習  回復  更多評論
            

          # re: 接觸DWR 2008-10-29 18:49 ja
          恩,清晰  回復  更多評論
            

          主站蜘蛛池模板: 岳阳市| 姚安县| 潜山县| 杭锦后旗| 高台县| 绥宁县| 铜陵市| 洛宁县| 浦北县| 原阳县| 平度市| 镇江市| 石河子市| 合水县| 三门县| 出国| 新乡县| 吴旗县| 米易县| 多伦县| 金阳县| 青浦区| 类乌齐县| 堆龙德庆县| 水城县| 宜君县| 克拉玛依市| 平潭县| 揭阳市| 渭源县| 鄯善县| 融水| 翁牛特旗| 交口县| 四平市| 和平区| 黔东| 内黄县| 基隆市| 宣汉县| 襄汾县|