隨筆-10  評論-22  文章-1  trackbacks-0
          Struts中有四種不同Action,分別如下:
          1.Action
          2.DispatchAction
          3.LookupDispatchAction
          4.MappingDispatchAction
          關(guān)于Action在Struts中的工作流程,這里我就不多說了,只針對各種不同的Action詳解
              第一種Action:是最普通、也是我們最先接觸的一種,但它僅支持一種業(yè)務(wù)方法,Action中只能允許有一個execute(),所有比較單一,有局限性,平時的項目中也用的少,或者說,它針對的是一個表單,一個Submit
          關(guān)于用法: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:這是我們在平時的學(xué)習(xí)和項目中用的最多的一種,因為它支持多個業(yè)務(wù)方法的擴展,使用起來也方便,或者說,它針對的是一個表單,多個Button
          關(guān)于用法:Action中需要幾個業(yè)務(wù)方法,就復(fù)制幾個execute(),然后改名即可,比如我們做加、減、乘、除,有四個方法,即:add(),sub(),mul(),div();而struts-config.xml中也只需配一個<action/>節(jié)點;當(dāng)然,在涉及到有的業(yè)務(wù)是否需要表單驗證時,可以單獨再添加節(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參數(shù)對應(yīng)的就是我們的業(yè)務(wù)方法了,在三種DispatchAction中都要用到它,因為有了它,就可實現(xiàn)多業(yè)務(wù)的調(diào)用;
          哪我們在視圖層,是如何調(diào)用的呢?很簡單:/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">
                 第一個數(shù):
          <input type="text" name="num1"><br>
                 第二個數(shù):
          <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è)務(wù),或者說,它針對的是一個表單,多個Submit;
          但用起來非常麻煩,需要struts標(biāo)簽,資源文件,Action中要Map集合;這里就大概說一下
          Actoin中業(yè)務(wù)方法跟上面一樣,只不過多一個包含Map的方法:
          //通過資源文件的key(button.add),來找到業(yè)務(wù)方法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也跟上面一樣,根據(jù)method來找;
          哪視圖組件如何來調(diào)用呢?
          <!-- 一個表單多個提交 -->
              
          <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;
          關(guān)于用法,也比較簡單:
          Action中的業(yè)務(wù)實現(xiàn)跟DispatchAction一樣,strut-config.xml則要靈活些,針對每一個業(yè)務(wù)方法,配一個<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>
          視圖組件的調(diào)用就很能夠方便了:直接跟/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用法基本完畢,此純屬本人在學(xué)習(xí)過程中自己的總結(jié),若有不當(dāng)之處,愿不令賜教!!!
          posted on 2009-03-16 10:43 獨孤行 閱讀(2027) 評論(7)  編輯  收藏 所屬分類: Struts

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

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


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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 察雅县| 阳信县| 离岛区| 江门市| 长治市| 富民县| 南雄市| 卢氏县| 东安县| 衡东县| 武义县| 陵川县| 宜阳县| 克山县| 周至县| 宝丰县| 揭阳市| 祁门县| 枝江市| 于田县| 积石山| 行唐县| 屏东市| 环江| 湄潭县| 嘉禾县| 呼和浩特市| 恩平市| 兰考县| 葫芦岛市| 太仆寺旗| 贵阳市| 韩城市| 宜宾市| 洛南县| 南京市| 望江县| 晴隆县| 教育| 云霄县| 天全县|