溫暖潔森

          勇敢做自己

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            13 隨筆 :: 1 文章 :: 70 評論 :: 0 Trackbacks
          [原創]實踐總結ajax各種使用方式(上)
          [原創]實踐總結ajax各種使用方式(中)

          4、使用DWR進行ajax開發

          介紹:

          DWR(Direct Web Remoting)是一個WEB遠程調用框架.利用這個框架可以讓AJAX開發變得很簡單.利用DWR可以在客戶端利用JavaScript直接調用服務端的Java方法并返回值給JavaScript就好像直接本地客戶端調用一樣(DWR根據Java類來動態生成JavaScrip代碼).它的最新版本DWR0.6添加許多特性如:支持Dom Trees的自動配置,支持Spring(JavaScript遠程調用spring bean),更好瀏覽器支持,還支持一個可選的commons-logging日記操作官方,本文版本是DWR2.0 ,具體詳情請訪問DWR官方網站


          4.1、業務需求

          通過一個簡單的二級菜單來說明DWR的使用

          4.2、業務實現

          前臺頁面:

           1一級菜單:
           2        <select id="tct" onchange="findSub2()">
           3            <option>
           4                0001
           5            </option>
           6            <option>
           7                0002
           8            </option>
           9        </select>
          10        二級菜單:
          11        <select name="subCode" id="subName"></select>
          12
          13

          js腳本:

          1    <script src="${ctx}/dwr/interface/ExamDictionaryManager.js"></script>
          2        <script type="text/javascript">
          3function findSub2(){
          4ExamDictionaryManager.findSubNameList(dwr.util.getValue("tct"),function(obj){
          5dwr.util.removeAllOptions("subCode");
          6dwr.util.addOptions("subCode",obj,'subCode','subName');
          7}
          );
          8}

          9</script>

          上面引用的${ctx}/dwr/interface/ExamDictionaryManager.js是后臺操作的業務類,在這需要聲明
          findSub2()方法是觸發一級菜單的值傳到后臺業務方法進行處理并返回
          dwr.util.removeAllOptions("subCode");是把二級菜單subCode值先清空
          dwr.util.addOptions("subCode",obj,'subCode','subName');是把二級菜單名稱是subCode的以subCode為value,subName為text

          提示:DWR2.0與DWR1.1的區別,是傳入參數和回調函數順序不同

          DWR2.0:  

          紅色字體是表明是參數在前,回調函數在后
          1ExamDictionaryManager.findSubNameList(dwr.util.getValue("tct"),function(obj){
          2dwr.util.removeAllOptions("subCode");
          3dwr.util.addOptions("subCode",obj,'subCode','subName');
          4}
          );
          5

          DWR1.1:

          紅色字體表明是回調函數在前,參數在后

          1ExamDictionaryManager.findSubNameList(function(obj){
          2dwr.util.removeAllOptions("subCode");
          3dwr.util.addOptions("subCode",obj,'subCode','subName');
          4}
          ,dwr.util.getValue("tct"));
          5}

          dwr.xml文件

           1<?xml version="1.0" encoding="UTF-8"?>
           2<!DOCTYPE dwr PUBLIC
           3    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
           4    "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
           5
           6<dwr>
           7
           8  <create creator="spring" javascript="ExamDictionaryManager">
           9      <param name="beanName" value="examDictionaryManager"/>
          10    </create>
          11</dwr>

          spring配置文件

          <bean id="examDictionaryManager"
                  class
          ="com.gresoft.sanitation.service.examapply.ExamDictionaryManager" />


          web.xml配置


           1<!-- DWR servlet,生產環境應該Debug為false -->
           2    <servlet>
           3        <servlet-name>dwr-invoker</servlet-name>
           4        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
           5        <init-param>
           6            <param-name>debug</param-name>
           7            <param-value>true</param-value>
           8        </init-param>
           9        <load-on-startup>1</load-on-startup>
          10    </servlet>
          11
          12    <servlet-mapping>
          13        <servlet-name>dwr-invoker</servlet-name>
          14        <url-pattern>/dwr/*</url-pattern>
          15    </servlet-mapping>








          業務方法:

          1public List findSubNameList(String typeCode) {
          2
          3        String hql = "select distinct new map(d.subCode as subCode,d.subName as subName) from ExamDictionary as d "
          4                + "where d.typeCode =:typeCode";
          5        return createQuery(hql).setString("typeCode", typeCode).list();
          6    }

          7


          通過前臺js腳本傳入的參數返回查詢的數據集合 

          頁面顯示效果:



              至此,二級級聯菜單功能已經完成,通過上述例子,可以發現DWR框架為我們處理我們之前用XML或JSON進行數據轉換
          的功能,大大提高了開發者開發效率。

           

          參考文章  掌握Ajax系列      Ajax和XML:五種Ajax反模式       Ajax和XML:五種常見Ajax模式     征服 Ajax 應用程序的安全威脅

          posted on 2008-01-08 17:37 harry520 閱讀(1866) 評論(1)  編輯  收藏 所屬分類: J2EE

          評論

          # re: [原創]實踐總結ajax各種使用方式(下) 2008-01-08 22:02 xidudui
          恰好是我需要的  回復  更多評論
            

          主站蜘蛛池模板: 郁南县| 汽车| 仪陇县| 长白| 大同市| 九龙坡区| 清新县| 新平| 金乡县| 宝兴县| 泽州县| 虎林市| 伊宁县| 罗甸县| 浪卡子县| 迁安市| 哈密市| 田林县| 商洛市| 积石山| 西贡区| 麟游县| 靖西县| 青阳县| 应用必备| 潼关县| 宝清县| 新河县| 驻马店市| 汾阳市| 莱芜市| 奈曼旗| 厦门市| 合川市| 中阳县| 文水县| 芜湖市| 定南县| 宾阳县| 财经| 曲水县|