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

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

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

    Love Pisces

    It's not your aptitude but your attitude that determines your altitude!
    posts - 2, comments - 43, trackbacks - 0, articles - 9

    Struts詳解之Action類

    Posted on 2007-06-02 13:44 筱筱 閱讀(660) 評論(0)  編輯  收藏 所屬分類: Struts學習日記

    1.Action類

          org.apache.action.Action類是Struts的心臟,也是客戶請求和業務操作間的橋梁。每個Action類通常涉及為代替客戶完成某種操作。

          一旦正確的Action實例確定,就會調用RequestProcessor類的processActionPerform()方法,processActionPerform()方法,負責調用Action實例的execute()方法。

          execute()方法有4個參數:ActionMapping對象、ActionForm對象 、HttpServletRequest對象和HttpServletResponse對象。ActionForm對象封裝了表單數據,因此Action類可以通過getter方法從該對象中獲得表單數據,然后調用模型組件處理這些數據。Action類又通過ActionMapping對象的findForward()方法獲得一個ActionForward對象,然后把處理結果轉發到ActionForward對象所指的目標。 
          其具體的實現過程如下代碼所示:
    package login;
    import org.apache.struts.action.*;
    import javax.servlet.http.*;
    import java.util.*;
     
    publlic class loginAction extends Action{
            public ActionForward execute(ActionMapping actionmapping, ActionForm actionForm,

                            HttpServletRequest request, HttpServletResponse response )
       {
              loginActionForm loginForm=(loginActionForm) actionForm;
                //從form bean中取出表單數據
              String username=loginForm.getUsername();
              String password=loginForm.getPassword();
                //生成一個Session對象
              HttpSession session=request.getSession(true);
              session.removeAttribute("username");
              session.setAttribute("username",username);
                //生成一個ArrayList對象,并把用戶名和密碼的值寸入該對象中
              ArrayList arr=new ArrayList();
              arr.add(username);
              arr.add(password);
              String prompt;
                //調用模型組件loginHandler,檢查該用戶是否已經注冊
              loginHandler login=new loginHandler();
              boolean mark=login.checkLogin(arr);

              if(mark)  prompt="Success";
                  else prompt="Fail";
                return actionMapping.findForward(prompt);
       }
    }

    2.ActionMapping類
          
          ActionMapping存儲了與特定用戶請求對應的特定Action的相關信息,例如輸入頁面、轉發頁面等。ActionServlet將ActionMapping傳送到Action類的execute()方法,然后Action將調用ActionMapping的findForward()方法,此方法返回一個指定名稱的ActionForward,這樣Action就完成了本地轉發。若沒有找到具體的ActionForward,就返回一個null。

    3.ActionForward類

          Action類中的execute()方法返回一個ActionForward對象。ActionForward對象代表一個Web資源的邏輯抽象表示形式。這里的Web資源通常就是JSP頁面或Java Servlet。
          ActionForward是該資源的包裝類,所以應用程序和實際資源之間并無多少瓜葛。實際的Web資源只在配置文件struts-config.xml中指定(如forward元素的name,path和redirect屬性),并非在程序代碼中寫入。RequestDispatch會根據redirect屬性的值,來決定ActionForward實例要進行轉發還是重定向。
          要從一個Action實例返回一個ActionForward實例,可以在Action類內動態地創建一個ActionForward實例,或者更常見的做法是使用ActionMapping的findForward()方法找出配置文件中預先配置的一個ActionForward實例,如下所示:
          return mapping.findForward("Success");
             其中,mapping是一個ActionMapping實例,該程序片斷能夠返回一個參數“Success”對應的ActionForward實例,以下代碼是在配置文件struts-config.xml中定義的forward元素:
          <action name="loginActionForm" type="login.loginAction"
             validate="false" input="/login.jsp"
             scope="request" path="/loginAction">
          <forward name="Success" path="/main.jsp" redirect="true"/>
          <forward name="Fail" path="/register.jsp" redirect="true"/>
          <action/>
           ActionMapping類的findForward()方法首先會調用findForwardConfig()方法,以查看在<action>元素中是否包含<forward>子元素,如果有,就會檢查<global-forwards>元素片段。一旦找到匹配的ActionForward實例,就會從execute()方法將其返回給RequestProcessor。下面是ActionMapping類的findForward()方法:
          public ActionForward findForward(String name)
          {
                ForwardConfig config=findForwardConfig(name);
                if(config==null)
                {
                      config=getModuleConfig().findForwardConfig(name);
                }
                return ( (ActionForward)  config );
          }
          
    主站蜘蛛池模板: 久久久久久亚洲精品| 亚洲人成77777在线播放网站| 亚洲精品电影在线| 免费无码VA一区二区三区| 亚洲a一级免费视频| 99re6在线视频精品免费下载| 亚洲AV无码成人精品区蜜桃| 人人玩人人添人人澡免费| 精品久久久久久亚洲| 久久国产乱子伦精品免费一 | 久久精品国产亚洲麻豆| 亚欧国产一级在线免费| 国产亚洲精品岁国产微拍精品| 天堂在线免费观看| 亚洲狠狠ady亚洲精品大秀| 大地资源在线观看免费高清| 亚洲成在人线aⅴ免费毛片 | 久久久无码精品亚洲日韩蜜桃| 无码av免费一区二区三区试看| 亚洲成在人线电影天堂色| 国内免费高清在线观看| 美女视频黄a视频全免费网站色 | 亚色九九九全国免费视频| 91在线亚洲综合在线| 亚洲国产精品视频| 精品四虎免费观看国产高清午夜| 亚洲美女中文字幕| 国产精品va无码免费麻豆| 国色精品va在线观看免费视频| 亚洲成AV人片久久| 国产美女精品视频免费观看| 你好老叔电影观看免费| 亚洲最大天堂无码精品区| 久久久久亚洲精品天堂久久久久久| 未满十八18禁止免费无码网站| 日韩亚洲国产综合高清| 久久久久亚洲爆乳少妇无| 成视频年人黄网站免费视频| 一级做a爰全过程免费视频毛片| 亚洲精品天天影视综合网| 成人爱做日本视频免费|