無聊人士

          搬家==》www.soapui.cn

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            32 隨筆 :: 0 文章 :: 60 評論 :: 0 Trackbacks
          <2006年12月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(10)

          隨筆分類

          隨筆檔案

          BLOG

          LINK

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          需求很簡單,就是用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 閱讀(6414) 評論(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
          恩,清晰  回復  更多評論
            

          主站蜘蛛池模板: 手机| 来安县| 三亚市| 武功县| 泰和县| 睢宁县| 西充县| 陆河县| 蚌埠市| 平顶山市| 东丽区| 建德市| 新田县| 陆河县| 常宁市| 阳春市| 栖霞市| 古交市| 舟曲县| 普安县| 苍山县| 凌源市| 泾川县| 鄄城县| 塘沽区| 上栗县| 天水市| 望城县| 潞城市| 余干县| 巴楚县| 图们市| 蓬安县| 安塞县| 富川| 墨玉县| 侯马市| 松溪县| 漠河县| 武义县| 东港市|