數據加載中……
          dwr配置文件dwr.xml祥解
          dwr配置文件dwr.xml祥解
          2007-08-10 00:16

          本人對dwr 中文文檔關于dwr.xml做的一個整理,純粹體力活,有用得著的朋友別忘頂一下,留個聯系方式一起交流學習!

          dwr.xml是DWR的配置文件。默認情況下,應該把它放到WEB-INF目錄(web.xml的目錄)下

          創建dwr.xml文件

          dwr.xml文件的結構如下:

          <!DOCTYPE dwr PUBLIC    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"    "http://www.getahead.ltd.uk/dwr/dwr10.dtd"><dwr>  <!-- init is only needed if you are extending DWR -->  <init>    <creator id="..." class="..."/>    <converter id="..." class="..."/>  </init>  <!-- without allow, DWR isn't allowed to do anything -->  <allow>    <create creator="..." javascript="..."/>    <convert converter="..." match="..."/>  </allow>  <!-- you may need to tell DWR about method signatures -->  <signatures>     ...  </signatures></dwr>

          術語

          這里是一些必須理解的術語 - 參數會被converted,遠程Bean會被created。所以如果你有一個叫A的bean,它有一個方法叫A.blah(B) 那么你需要一個A的creator和一個B的converter。

          一:<allow>

          allow段落里面定義的試DWR可以創建和轉換的類。

          二:Creators

          dwr.xml文件中的create元素的結構如下:

          <allow>  <create creator="..." javascript="..." scope="...">    <param name="..." value="..."/>    <auth method="..." role="..."/>    <exclude method="..."/>    <include method="..."/>  </create>   ...</allow>

          這里的多數元素都是可選的 - 你真正必須知道的是指定一個creator和一個javascript名字。

          creator屬性 是必須的 - 它用來指定使用那種創造器。

          默認情況下DWR1.1有8種創造器。它們是:

          • new: 用Java的new關鍵字創造對象。
          • none: 它不創建對象,看下面的原因。 (v1.1+)
          • scripted: 通過BSF使用腳本語言創建對象,例如BeanShell或Groovy。
          • spring: 通過Spring框架訪問Bean。
          • jsf: 使用JSF的Bean。 (v1.1+)
          • struts: 使用Struts的FormBean。 (v1.1+)
          • pageflow: 訪問Beehive或Weblogic的PageFlow。 (v1.1+)

           

          如果你需要寫自己的創造器,你必須在init部分注冊它。

          javascript屬性 用于指定瀏覽器中這個被創造出來的對象的名字。你不能使用Javascript的關鍵字。

          scope屬性 非常類似servlet規范中的scope。 它允許你指定這個bean在什么生命范圍。選項有"application", "session", "request" 和"page"。這些值對于Servlet和JSP開發者來說應該相當熟悉了。

          scope屬性是可選的。默認是"page"。如果要使用"session"需要cookies。當前的DWR不支持ULR重寫。

          param元素 被用來指定創造器的其他參數,每種構造器各有不同。例如,"new"創造器需要知道要創建的對象類型是什么。每一個創造器的參數在各自的文檔中能找到。請查看上面的鏈接。

          include和exclude元素 允許創造器來限制類中方法的訪問。一個創造器必須指定include列表或exclude列表之一。如果是include列表則暗示默認的訪問策略是"拒絕";如果是exclude列表則暗示默認的訪問策略是"允許"。

          例如要拒絕防范除了setWibble()以外的所有方法,你應該把如下內容添加到dwr.xml中。

          <create creator="new" javascript="Fred">  <param name="class" value="com.example.Fred"/>  <include method="setWibble"/></create>

          對于加入到create元素中的類的所有方法都是默認可見的。

          auth元素 允許你指定一個J2EE的角色作為將來的訪問控制檢查:

          <create creator="new" javascript="Fred">  <param name="class" value="com.example.Fred"/>  <auth method="setWibble" role="admin"/></create>

           

          new創造器在DWR中已經默認聲明了:<creator id="new" class="uk.ltd.getahead.dwr.create.NewCreator"/> 。你不需要在dwr.xml文件中添加這段話,它已經存在于DWR的內部dwr.xml文件中了。

          這個創造器通過類默認的夠早函數創造對象實例。用new創造器有一些好處:

          • 安全:DWR創造的對象生存的事件越短,多次調用中間的值不一致的錯誤機會越少。
          • 內存消耗低: 如果你的站點用戶量非常大,這個創造器可以減少VM的內存溢出。

          你可以通過下面的方式使用new創造器來創造遠程調用Bean:

          <allow>  <create creator="new" javascript="Blah">    <param name="class" value="java.util.Date"/>  </create>   ... </allow>

          這些代碼把 java.util.Date 映射成Javascript,并且命名為Blah,所以在Javascript中當你調用Blah.toString(reply) 那么一個新的 java.util.Date 就會通過默認的構造函數創造出來, 然后 toString() 方法被調用, 然后結果數據返回給reply方法(在這個例子中date是字符串格式)。

           


           

          none'創造器不創建任何對象 - 它會假設你不需要創建對象。這有可能是對的,有兩個原因。

          你可能在使用的scope不是"page"(看上面),并在在前面已經把這個對象創建到這個scope中了,這時你就不需要再創建對象了。

          還有一種情況是要調用的方法是靜態的,這時也不需要創建對象。DWR會在調用創建器之前先檢查一下這個方法是不是靜態的。

          對于上訴兩種情況,你仍然需要class參數,用來告訴DWR它是在操作的對象類型是什么。

           


           

          scripted創造器在DWR中已經默認聲明了:<creator id="script" class="uk.ltd.getahead.dwr.create.ScriptedCreator"/>

          這個創造器用BSF來執行腳本得到Bean,例如:

          <allow>   ...  <create creator="script" javascript="EmailValidator">    <param name="language" value="beanshell"/>    <param name="script">       import org.apache.commons.validator.EmailValidator;       return EmailValidator.getInstance();    </param>  </create>   ...</allow>

          script創造器有如下參數:

          參數 DWR版本 描述
          language 1.0 腳本語言,字符串,例如'beanshell'. (必需)
          script 1.0 要執行的腳本。 (必需,除非scriptPath參數存在)
          scriptPath 1.1 腳本文件路徑。 (必需,除非script參數存在)
          reloadable 1.1 是否檢測腳本文件的改動,以重新加載 (可選, 默認true)
          class 1.0 創造出對象的類型(可選). 如果沒有DWR通過創造器得到類型。

          需要了解的主題

          要使用這個創造器,你需要把一些輔助庫放到WEB-INF/lib文件夾下:BSF的jar包,你要用的腳本語言的jar包

          當一個類是用script創造出來的,并且scope是session或application,如果你的腳本改變,session中的類和script中的類就不一致了。這樣會出現錯誤。雖然web容器不用重啟,但是用戶需要先登出(或以某種方式清空session),然后再登錄。

          當clazz參數不為空,并且用來創造新實例,DWR簡單的調用 class.newInstance() 方法。這種方法是沒問題的,除非腳本正在用某個參數創建一個類,或者調用某個函數來配置這個類。 不幸的是,每次請求都要重新運行script并造成上面的問題。



          ---------------------------------------------------------------------------------------
          ——使你疲勞的不是遠方的高山,而是你鞋里一粒沙子!

          posted on 2009-03-16 09:13 鋒行 閱讀(725) 評論(0)  編輯  收藏 所屬分類: DWR


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


          網站導航:
           
          主站蜘蛛池模板: 太白县| 花莲市| 贺州市| 陆丰市| 汾西县| 嘉禾县| 大名县| 杂多县| 汕头市| 左权县| 麻城市| 马尔康县| 建阳市| 上栗县| 望谟县| 定西市| 新竹市| 任丘市| 宁晋县| 天祝| 奇台县| 南充市| 呈贡县| 潜山县| 时尚| 道孚县| 富锦市| 当雄县| 通化县| 芦山县| 新化县| 拜泉县| 洛川县| 江阴市| 新安县| 丽江市| 扎囊县| 巴青县| 杂多县| 宁蒗| 和平区|