無(wú)聊人士

          搬家==》www.soapui.cn

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            32 隨筆 :: 0 文章 :: 60 評(píng)論 :: 0 Trackbacks
          需求很簡(jiǎn)單,就是用js向后端請(qǐng)求,然后把請(qǐng)求的結(jié)果弄進(jìn)一個(gè)select里面。一開(kāi)始是用xmlrequest去請(qǐng)求后端一個(gè)groovy的url,得到一個(gè)xml,然后把xml的內(nèi)容填進(jìn)select里面去。做完老瞅著不順眼,正好在看ajax的資料,拿dwr改造一下。

          js是我一直很頭疼的事了,尤其是對(duì)dom的操作上面,dwr感覺(jué)就是在直接調(diào)java接口,操作java對(duì)象,省事省心啊。

          用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去調(diào)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中,已經(jīng)在web.xml中配了spring的listener,直接寫(xiě)beanName就行。

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

          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參數(shù),是用戶登錄成功后,session.setAttribute("user",user)存放的。在html里面,用js是無(wú)法讀到的,因此,自己定義了一個(gè)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 閱讀(6408) 評(píng)論(8)  編輯  收藏 所屬分類(lèi): Others

          評(píng)論

          # re: 接觸DWR 2006-09-21 22:02 java-man
          不錯(cuò)~頂一個(gè)  回復(fù)  更多評(píng)論
            

          # re: 接觸DWR 2006-11-09 16:27 鍋巴—new
          問(wèn)個(gè)問(wèn)題,在web.xml中配置以后,系統(tǒng)會(huì)自動(dòng)的去找dwr.xml,然后解讀里面的內(nèi)容,是這樣嗎?不需要其他的配置?  回復(fù)  更多評(píng)論
            

          # re: 接觸DWR 2006-11-22 16:18 loook123
          dwr 是個(gè)好東西  回復(fù)  更多評(píng)論
            

          # re: 接觸DWR 2006-12-05 23:51 Mars
          您好,我剛學(xué)DWR,可以請(qǐng)教一個(gè)問(wèn)題么?
          我在本機(jī)Windows調(diào)試完全成功,放到Lunix虛擬服務(wù)器上就報(bào)DWRUtil is not defined錯(cuò)誤,請(qǐng)問(wèn)您遇到過(guò)類(lèi)似情況么?有方法解決么?  回復(fù)  更多評(píng)論
            

          # re: 接觸DWR 2007-04-09 19:40 曉松
          多謝指點(diǎn)啊  回復(fù)  更多評(píng)論
            

          # re: 接觸DWR 2007-04-17 09:46 johnrobbet
          我覺(jué)得是你配置上的問(wèn)題
          @Mars
            回復(fù)  更多評(píng)論
            

          # re: 接觸DWR 2007-04-28 17:23 qq
          挺好,學(xué)習(xí)  回復(fù)  更多評(píng)論
            

          # re: 接觸DWR 2008-10-29 18:49 ja
          恩,清晰  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 泉州市| 镇坪县| 永春县| 湘乡市| 囊谦县| 卓尼县| 黑龙江省| 城口县| 安岳县| 临夏市| 泾阳县| 连州市| 抚州市| 遵化市| 中西区| 鄄城县| 怀来县| 获嘉县| 连山| 平阳县| 米林县| 阜阳市| 枣强县| 丰都县| 蚌埠市| 维西| 南安市| 梧州市| 昆明市| 杂多县| 松江区| 南充市| 四川省| 连平县| 昭觉县| 宁都县| 怀远县| 衡阳市| 余江县| 屏边| 长垣县|