紙飛機

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            22 隨筆 :: 28 文章 :: 30 評論 :: 0 Trackbacks

          Struts DispatchAction 的使用



          紙飛機
          JAVA 學習筆記   英文名 : Steven Wang    QQ 63001184     郵箱: jxhkwhy@126.com                              [ 原創 ] 

           

          今天在看一個 Struts 代碼時,發現 Action 類繼承的父類為 DispatchAction ,于是找了找資料研究了下 DispatchAction 類,現總結如下:

          DispatchAction Struts1.1 中的一個類,它的父類是 Action ,它的作用就在于將多個功能相似的業務邏輯放在同一個 Action 中實現,各個業務邏輯通過傳入不同的參數來決定執行哪個操作方法

          通常在 Action 中我們都是通過 execute 方法來處理業務邏輯及頁面轉向,一個 Action 只能完成一種業務邏輯處理 , 當然我們也可以在頁面插入一個隱藏的變量,然后在 Action execute 方法中通過判斷這個隱藏變量的值來決定調用哪個方法,也可以達到同一個 Action 來處理多種業務邏輯,可是這樣的話想一想肯定會造成頁面代碼的增加及影響頁面代碼的可讀性 .

          看一看 DispatchAction 是如何實現的

          比如對一個用戶對象來說,存在增加,刪除,修改的操作,首先創建一個繼承 DispatchAction UserAction 類,

          然后將 addUser,delUser,updateUser 這些方法寫在這個類里面,代碼如下:

          package com.why.struts.action;

           

          import javax.servlet.http.HttpServletRequest;

          import javax.servlet.http.HttpServletResponse;

           

          import org.apache.struts.action.ActionForm;

          import org.apache.struts.action.ActionForward;

          import org.apache.struts.action.ActionMapping;

          import org.apache.struts.actions.DispatchAction;

           

          import com.why.Constant;

          import com.why.struts.form.AddUserForm;

          import com.why.struts.form.LoginForm;

           

          public class UserAction extends DispatchAction

          {

              public ActionForward addUser (ActionMapping mapping,ActionForm form,

                      HttpServletRequest request,HttpServletResponse response) throws Exception

              {

                       // 增加用戶業務的邏輯

                      return mapping.findForward(Constant. FORWARD_ADD );

              }

             

              public ActionForward delUser(ActionMapping mapping,ActionForm form,

                      HttpServletRequest request,HttpServletResponse response) throws Exception

              {

                       // 刪除用戶業務的邏輯

                      return mapping.findForward(Constant. FORWARD_SUCCESS );

              }

           

              public ActionForward updateUser(ActionMapping mapping,ActionForm form,

                      HttpServletRequest request,HttpServletResponse response) throws Exception

              {

                       // 更新用戶業務的邏輯

                      return mapping.findForward(Constant. FORWARD_SUCCESS );

              }

          }

          如何實現這些不同方法的調用呢 ? 那就是要在 struts-config.xml 文件中更改 action-mapping 的配置,如下:

          < action-mappings >

              < action

                attribute = "addUserForm"

                input = "/addUser.jsp"

                name = "addUserForm"

                parameter="method"

                path = "/addUser"

                scope = "request"

                type="com.why.struts.action.UserAction" >

              </ action >

              < action

                attribute = "delUserForm"

                input = "/delUser.jsp"

                name = "delUserForm"

                parameter="method"

                path = "/delUser"

                scope = "request"

                type="com.why.struts.action.UserAction" />

          < action

                attribute = "updateUserForm"

                input = "/updateUser.jsp"

                name = "updateUserForm"

                parameter="method"

                path = "/updateUser"

                scope = "request"

                type="com.why.struts.action.UserAction" />

            </ action-mappings >

          可以看到每個 <action  /> 中都增加了 parameter=" " 項,這個值可以隨便命名,如上面命名為 metho d ,用來接收頁面傳來的參數

          如下為頁面的提交,   注意:對應 <action  /> 中的 parameter , 對應 UserAction 類中的方法名

          AddUser.jsp

          <html:link href="addUser.do?method=addUser">Add User</html:link>

          DelUser.jsp

          <html:link href="delUser.do?method=delUser">Add User</html:link>

          UpdateUser.jsp

          <html:link href="updateUser.do?method=updateUser">Add User</html:link>

           

           

          posted on 2007-01-21 21:43 紙飛機 閱讀(4217) 評論(2)  編輯  收藏

          評論

          # re: Struts:DispatchAction的使用 2009-01-16 21:46 viralpatel.net@gmail.com
          Hi,
          See this tutorial for DispatchAction example in Struts.
          http://viralpatel.net/blogs/2009/01/struts-dispatch-action-tutorial-with-example-in-eclipse.html  回復  更多評論
            

          # re: Struts:DispatchAction的使用 2009-07-10 20:13 showMe
          你的這個好象是MappingDispatchAction的用法吧?DispatchAction只能有一個訪問路徑,ActionServlet決定調用哪個方法,取決于JSP頁面中所提供的一個參數的名稱的值,不知道我說的對不對  回復  更多評論
            


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


          網站導航:
           
          主站蜘蛛池模板: 喀喇沁旗| 南岸区| 禄丰县| 汉阴县| 永德县| 共和县| 崇仁县| 朝阳市| 肥西县| 茶陵县| 偃师市| 井冈山市| 北海市| 滕州市| 鄂州市| 永福县| 上林县| 宜兴市| 西乌| 英超| 隆子县| 南通市| 太保市| 武隆县| 苍南县| 大渡口区| 新巴尔虎左旗| 宜都市| 亚东县| 漠河县| 淅川县| 波密县| 疏勒县| 长岭县| 遂平县| 娄底市| 临澧县| 修水县| 巨野县| 开化县| 正安县|