<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    資料整理

     

    Sturts ---DispatchAction的使用

    Struts心得--DispatchAction使用日記

    Struts1.1發布了這么長時間了,我才剛剛開始系統地學習Struts的相關知識,經過前一陣潛心研究,對Struts1.1中已有的類DispatchAction有了進一步的認識。我將在這里總結一下,希望能對大家有所幫助。
      
      在1.0版本中我們通常都是用execute方法來完成我們對業務邏輯的處理及頁面的轉發。通常在一個Action中我們都只能夠完成一種業務邏輯的操作。如果要是完成多個業務邏輯(比如:添加、刪除等)功能相近的業務邏輯我們就沒有辦法了么?答案是否定的,我們可以通過在頁面中定義一個隱藏變量,在不同的頁面要求處理不同的業務邏輯的時候我們可以賦予這個變量不同的值,并在execute方法中通過對變量值的判斷來完成不同的業務邏輯操作。
      
      舉例來說,我們首先在頁面中定義一個隱藏變量。
      
      <;html:hidden property="operAt"/>
      
      然后定義一個JavaScript函數,我們可以在通過點擊提交按鈕的時候,在函數體里面修改它的值。
      
      <;SCRIPT>
      
      function set(key) {
      
      with(document.forms[0]){
      
      operAt.value=key;
      
      }
      
      }
      
      <;/SCRIPT>
      
      當我們點擊提交按鈕便觸發該事件,修改變量的值。
      
      <;html:submit onclick="set('save');">SAVE<;/html:submit>
      
      那我們在后臺execute中又如何處理相關邏輯呢?
      
      String operAt = myForm.getOperAt();
      
      if (operAt.equals("create")) { ……
      
      if (operAt.equals("save")) { ……
      
      很簡單吧!雖然說這樣做我們可以實現多個業務邏輯在同一個Action中實現,可是帶來的代價便是代碼的冗長,不易理解。
      
      下面我們就要介紹一下DispatchAction類了。它是Action的一個子類,它可以實現多個業務邏輯在同一個Action當中的實現,而上面的例子在DispatchAction中也就變成了下面的形式:
      
      public ActionForward create(
      
      ActionMapping mapping,
      
      ActionForm form,
      
      HttpServletRequest request,
      
      HttpServletResponse response)
      
      throws Exception { ……
      
      public ActionForward save(
      
      ActionMapping mapping,
      
      ActionForm form,
      
      HttpServletRequest request,
      
      HttpServletResponse response)
      
      throws Exception { ……
      
      每一種業務邏輯都能在DispatchAction當中找到對應的方法。那么我們如何去實現這樣的調用呢?DispatchAction中對struts-config.xml的配置比一般的Action配置稍顯麻煩,舉例來講:
      
      <;action path="/telConsle" type="com.meng.action.TelConsleDispatch"
      
      name="telForm" scope="request" validate="false" parameter="method"/>
      
      我們在這里指定了parameter的值為method,而當我們請求Action的時候我們必須指定method的值來確定去我們想要調用哪個Action方法。如:
      
      http://localhost:8080/tsss/telConsle.do?method=save
      
      顯然,通過顯示鏈接指定參數值的方法可以達到我們調用方法的目的。然而我們如果不想顯示調用的話我們應該怎樣處理呢?還記得前面講過的方法么?我們在頁面中定義一個隱藏的變量,然后通過對變量的賦值來確定我們來確定我們將要執行的業務方法。在這里我們可不可以一樣這樣使用呢?
      
      答案是肯定的,我們當然可以通過定義一個類似于<;html:hidden property="operAt"/>的變量,只要對該變量賦上對應DispatchAction中的方法的值來確定我們要調用的業務方法。然而筆者比提倡用Struts標簽來定義這樣的隱含的變量,因為Struts標簽為動態標簽,它可能需要在FormBean中定義該屬性的get和set方法,而在parameter中定義的值不需要在FormBean當中定義get和set方法。筆者建議用html的標準標簽<;input>來定義該隱藏變量。因為該標簽為靜態標簽,如果我們該用Struts標簽的話可能導致頁面出錯。


    我們在頁面上有多個按鈕
    我們就用那么DispatchAction
    控制我們想要做的事
    我們先在頁面用其所長<html:hidden property="method " value=""/>來隱葳變量
    我們用javascript告訴我們要做什么事也就是用戶點擊了那個鈕?\\
    我想我們用這個就有一點好處就是頁面有javaxcript提示出來就是有一點人性化
    我相我們用他的子類會更好些
    我認為我們用了javacript以后我們的頁面就多了很多代碼量
    我們用lookupdispacthaction也行

    posted on 2006-08-21 13:32 謝瑋 閱讀(449) 評論(0)  編輯  收藏 所屬分類: 流行框架Web

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    主站蜘蛛池模板: 亚洲福利视频网站| 亚洲成A人片在线观看WWW| 亚洲妓女综合网99| 久久精品一本到99热免费| 久久久久亚洲精品影视| 精品国产一区二区三区免费| 亚洲AV无码国产丝袜在线观看| 成人无码WWW免费视频| 国产精品久久久亚洲| 中文字幕无码免费久久| 久久久久亚洲精品成人网小说 | 免费无码黄网站在线观看| 亚洲视频免费播放| 久久亚洲精品无码AV红樱桃| 91人成网站色www免费下载| 久久精品国产亚洲av麻豆小说| 久久久久久曰本AV免费免费| 亚洲一区二区三区免费观看| 四色在线精品免费观看| 色婷婷精品免费视频| 亚洲精品自在在线观看| 免费人妻无码不卡中文字幕系| 亚洲一区二区三区在线观看蜜桃| 成人免费网站在线观看| 瑟瑟网站免费网站入口| 亚洲自偷自偷图片| 午夜精品一区二区三区免费视频| 亚洲最大黄色网址| 国产一级特黄高清免费大片| 国产精品成人免费观看| 亚洲色图综合网站| 四虎影在线永久免费观看| 国产啪精品视频网站免费尤物 | 亚洲AV日韩AV天堂一区二区三区| 18禁美女裸体免费网站| 亚洲AV成人一区二区三区观看 | 亚洲午夜无码久久久久软件| 亚洲日本在线观看视频| 最近免费中文在线视频| 免费精品国自产拍在线播放| 91精品国产亚洲爽啪在线观看|