隨筆-10  評論-22  文章-1  trackbacks-0
          Struts中有四種不同Action,分別如下:
          1.Action
          2.DispatchAction
          3.LookupDispatchAction
          4.MappingDispatchAction
          關于Action在Struts中的工作流程,這里我就不多說了,只針對各種不同的Action詳解
              第一種Action:是最普通、也是我們最先接觸的一種,但它僅支持一種業(yè)務方法,Action中只能允許有一個execute(),所有比較單一,有局限性,平時的項目中也用的少,或者說,它針對的是一個表單,一個Submit
          關于用法:Action中就一個execute(),而strut-config.xml也只需配置一具最普通的<action/>節(jié)點,就夠了
          <!-- Action -->
              
          <action
                attribute
          ="loginForm"
                name
          ="loginForm"
                path
          ="/login"
                scope
          ="request"
                type
          ="org.svse.struts.action.LoginAction">
                
          <forward name="ok" path="/ok.jsp"></forward>
                
          <forward name="error" path="/error.jsp"></forward>      
                
          </action>
              第二種DispatchAction:這是我們在平時的學習和項目中用的最多的一種,因為它支持多個業(yè)務方法的擴展,使用起來也方便,或者說,它針對的是一個表單,多個Button
          關于用法:Action中需要幾個業(yè)務方法,就復制幾個execute(),然后改名即可,比如我們做加、減、乘、除,有四個方法,即:add(),sub(),mul(),div();而struts-config.xml中也只需配一個<action/>節(jié)點;當然,在涉及到有的業(yè)務是否需要表單驗證時,可以單獨再添加節(jié)點嘛
          <!-- DispatchAction -->
              
          <action
                attribute
          ="calForm"
                name
          ="calForm"
                parameter
          ="method"
                path
          ="/cal"
                scope
          ="request"
                type
          ="org.svse.struts.action.CalAction">
                
          <forward name="result" path="/cal_result.jsp"></forward>
                
          </action>
          parameter參數對應的就是我們的業(yè)務方法了,在三種DispatchAction中都要用到它,因為有了它,就可實現多業(yè)務的調用;
          哪我們在視圖層,是如何調用的呢?很簡單:/cal.do?method=方法名(add、sub)
          <script type="text/javascript">
                  function dosubmit(url)
          {
                      var myform 
          = document.myform;
                      myform.action 
          = url;
                      myform.submit();
                  }

              
          </script>
            
          </head>
            
            
          <body>
            
          <!-- 一個表單多個按鈕 -->
            
          <form method="post" name="myform">
                 第一個數:
          <input type="text" name="num1"><br>
                 第二個數:
          <input type="text" name="num2"><br>
                 
          <input type="button" value="" onclick="dosubmit('cal.do?method=add')">
                 
          <input type="button" value="" onclick="dosubmit('cal.do?method=sub')">
              
          <input type="button" value="" onclick="dosubmit('cal.do?method=mul')">
                 
          <input type="button" value="" onclick="dosubmit('cal.do?method=div')"> 
            
          </form>
            
          </body>
              第三種LookupDispatchAction:此種Action恐怕是我們平時用的最少的一種了,盡管它也支持多業(yè)務,或者說,它針對的是一個表單,多個Submit;
          但用起來非常麻煩,需要struts標簽,資源文件,Action中要Map集合;這里就大概說一下
          Actoin中業(yè)務方法跟上面一樣,只不過多一個包含Map的方法:
          //通過資源文件的key(button.add),來找到業(yè)務方法add(),sub()
              protected Map getKeyMethodMap() {
                  Map map 
          = new HashMap();
                  map.put(
          "button.add","add");
                  map.put(
          "button.sub","sub");
                  
          return map;
              }
          資源文件:
          # Resources for parameter 'org.svse.struts.ApplicationResources'
          # Project ch03
          button.add
          =add
          button.sub
          =sub
          struts-config.xml也跟上面一樣,根據method來找;
          哪視圖組件如何來調用呢?
          <!-- 一個表單多個提交 -->
              
          <form action="cal2.do" method="post">
                    num1:
          <input type="text" name="num1"/><br>
                    num2:
          <input type="text" name="num2"/><br>
                    
          <html:submit property="method">
                        
          <bean:message key="button.add"/>
                    
          </html:submit>
                    
          <html:submit property="method">
                        
          <bean:message key="button.sub"/>
                    
          </html:submit>
              
          <form>
          怎么樣夠麻煩的吧。。。
              第四種MappingDispatchAction:我自認為它比DispatchAction差不多好用,只是它夠靈活(這里針對<action/>節(jié)點,想咋配咋配),或者說,它針對的是多個表單,多個Submit;
          關于用法,也比較簡單:
          Action中的業(yè)務實現跟DispatchAction一樣,strut-config.xml則要靈活些,針對每一個業(yè)務方法,配一個<action/>節(jié)點:
          <!-- MappingDispatchAction -->
              
          <!-- add -->
              
          <action
                attribute
          ="calForm"
                name
          ="calForm"
                parameter
          ="add"
                path
          ="/add"
                scope
          ="request"
                type
          ="org.svse.struts.action.Cal3Action">
                
          <forward name="result" path="/cal_result.jsp" />
              
          </action>
              
          <!-- sub -->
              
          <action
                attribute
          ="calForm"
                name
          ="calForm"
                parameter
          ="sub"
                path
          ="/sub"
                scope
          ="request"
                type
          ="org.svse.struts.action.Cal3Action">
                
          <forward name="result" path="/cal_result.jsp" />
              
          </action>
          視圖組件的調用就很能夠方便了:直接跟/path路徑名.do:
          <form action="add.do" method="post">
                  num1:
          <input type="text" name="num1"><br>
                  num2:
          <input type="text" name="num2"><br>
                  
          <input type="submit" value="">
              
          </form>
          Struts中四種Action用法基本完畢,此純屬本人在學習過程中自己的總結,若有不當之處,愿不令賜教!!!
          posted on 2009-03-16 10:43 獨孤行 閱讀(2018) 評論(7)  編輯  收藏 所屬分類: Struts

          評論:
          # re: 四種Action詳解 2009-03-16 13:28 | 妖嬈盛唐
          我也在學習Struts,不過比你學得淺好多……

          只指正最后一句的漢語錯誤:“愿不令賜教”當寫作“愿不吝賜教”


          另:最好寫作“望不吝賜教”比較好點,“愿”通常指自己愿意……
            回復  更多評論
            
          # re: 四種Action詳解 2009-03-16 15:52 | 獨孤行
          感謝指教,我的語言水平有限哦,上中學那會,經常不及格的
            回復  更多評論
            
          # re: 四種Action詳解[未登錄] 2009-10-10 18:01 | xx
          謝啦~~  回復  更多評論
            
          # re: 四種Action詳解[未登錄] 2011-05-11 09:28 | zz
          .....  回復  更多評論
            
          # re: 四種Action詳解 2012-08-24 16:37 | 啊啊啊啊
          啊啊啊啊啊  回復  更多評論
            
          # re: 四種Action詳解[未登錄] 2012-08-24 16:38 | 1
          1111  回復  更多評論
            
          # re: 四種Action詳解[未登錄] 2012-08-24 16:38 | 1
          @啊啊啊啊
          1111  回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 乡城县| 交口县| 上饶市| 怀集县| 抚顺县| 凤冈县| 日土县| 台东县| 湾仔区| 成都市| 洛宁县| 新密市| 河源市| 连云港市| 溧阳市| 宽甸| 宜都市| 定州市| 钦州市| 吉水县| 哈巴河县| 九寨沟县| 闸北区| 周至县| 卓资县| 渭南市| 平山县| 丰台区| 多伦县| 团风县| 深州市| 文成县| 大理市| 施秉县| 城市| 阿瓦提县| 福贡县| 应城市| 闵行区| 都兰县| 仁寿县|