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

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

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

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    DispatchAction、LookupDispatchAction、SwitchAction的應用(zhuan)

    DispatchAction

    =======================  

    org.apache.struts.actions.DispatchAction.java

    DispatchAction的作用簡單地說就是把原來我們寫在多個acton里的操作放在同一個 action里處理。 

     

    舉個例子就是如果在你的系統中有文章的管理操作,那么通常有以下操作:添加文章、察看文章、搜索文章等等,這樣的話一般你會寫 三個action[ArtilceSaveAction ArticleViewAction ArticleSearchAction ]分別處理各個操作,雖然說這樣看起來是非常清晰、流暢的操作,但是你會發現在三個action理由太多的相同的東西。現在利用DispatchAction,我們可以把“相似”的action放在一個action里操作。 

    下面以上邊的三個action和到一個action里為例: 

     

    import ****;

     

    import org.apache.struts.actions.DispatchAction; 

     

    public class ArticleAction extends DispatchAction{

        /**
         *AritcleAddAction
         */
          public ActionForward add(ActionMapping mapping,
                                ActionForm form,
                                HttpServletRequest request,
                               HttpServletResponse response)
              throws Exception {
              ...
              ...
              }         
        /**
         *AritcleViewAction
         */
          public ActionForward view(ActionMapping mapping,

                               ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response)
              throws Exception {

              ...
             ...
              }         

        /**
         *AritcleSearchAction
         */
          public ActionForward search(ActionMapping mapping,
                                ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response)
              throws Exception {
              ...

              }

    }


    好了,該action的框架已經完成,但是要想可用,還要有一步不可少的操作,

     

    那就是更改你的action mapping ,還以上邊的例子,如下: 

     

    <action path="/article"

     

      input="/article/***.jsp"

     

      parameter="method" <!--#####################-->

     

      scope="request"

     

      type="com.***.ArticleAction"  

     

      validate="false">

     

      <forward name="Success" path="/article/***.jsp" redirect="true"/>

     

     </action> 

     

    看到上邊你會發現,它和我們通常的寫法多個一項:“parameter="method"”,這是有道理的并且非常重要:DispatchAction會根據具體的method值來確定調用add,view 或者search ,如下面的來自client的請求,article.do?method=add 則會觸發添加文章的操作。

     

    LookupDispatchAction

    ========================

    org.apache.struts.actions.LookupDispatchAction.java  

     

    從名字大概我們也能看出LookupDispatchAction是DispatchAction的子類。他們從功能上有許多相似的地方。 通常它主要應用于“在一個表單中有多個提交按鈕而這些按鈕又有一個共同的名字”,這些按鈕的名字要和具體的action mapping中的parameter的值對應。[這點很重要]

     

    如下代碼截取自struts-config.xml:

     

    <action path="/editArticle"

     

            type="com.****.EditArticleAction"

     

            name="AtricleForm"

     

            scope="request"

     

            parameter="action"><!--按鈕的名字此處為“action”-->

     

        <forward name="success" path="/***.jsp"/>

     

    </action> 

     

    下面給出一個jsp頁面的表單部分

     

    <html:form action="/editArticle"/>

     

        <html:submit property="action">

     

           <bean:message key="button.view"/>

     

        </html:submit>

     

        <html:submit property="action">

     

           <bean:message key="button.delete"/>

     

        </html:submit>   

     

    </html:form> 

     

    那么相應的ApplicationResources.properties中就會有如下片斷:

     

    button.view=View The Article

     

    button.delete=Delete The Atricle 

     

    此時還并為完成,在LookupDispatchAction中有一個抽象方法:

     

        /**
         *  Provides the mapping from resource key to method name
         *
         *@return          Resource key / method name map
         */

        protected abstract Map getKeyMethodMap();

    這個方法你應該在EditArticleAction中實現,如下:

    protected Map getKeyMethodMap(){
          Map map = new HashMap();
          map.put("button.view", "view");

          map.put("button.delete", "delete");

          return map; 

     

    好了,假設在你的EditArticleAction有如下方法:

     

      public ActionForward view(ActionMapping mapping,
              ActionForm form,
              HttpServletRequest request,
              HttpServletResponse response)
              throws IOException, ServletException {
          //......

          //......

          return mapping.findForward("success");
      }


      public ActionForward delete(ActionMapping mapping,
              ActionForm form,
              HttpServletRequest request,
              HttpServletResponse response)

              throws IOException, ServletException {

          //......

          //......

          return mapping.findForward("success");
      } 

     

    下面實例幾個假設client端的請求: 

     

    http://....../editArticle.do此時頁面有兩個按鈕,按鈕1“View The Article”,"",按鈕2“Delete The Atricle” 

     

    當提交按鈕1時調用EditArticleAction里的view方法;

     

    當提交按鈕2時調用EditArticleAction里的delete方法; 

     

    以下還有一點說明;

     

    如果我有一個按鈕要觸發action的AA方法,但是在該action沒有AA方法,此時將拋出異常;如果該action中有兩個AA方法,則會調用第一個。

     

    SwitchAction

     

    ========================

     

    org.apache.struts.actions.SwitchAction

     

    SwitchAction主要在多模塊應用中執行模塊切換作用。

     

    在Struts多模塊工程中有兩種方法可以切換到新模塊上.首先,您可以在 struts-config.xml 中創建一個新的全局或局部轉發“success”(參見下面代碼)。然后可以使用 mapping.findForward("success") 切換到這個新模塊上來。

     


    <forward name="success"   contextRelative="true"
       path="/newModule/index.do"   redirect="true"/>
    contextRelative=true的意思是path是相對于應用上下文的路徑,contextRelative=false則是指path是相對于模塊上下文的路徑。

     

    其次,創建一個如下所示的操作,其類型是一個 SwitchAction 操作:

     

    <action path="/switchTo" type="org.apache.struts.actions.SwitchAction" validate="false" />

     

    然后在 struts-config-newModule.xml 中創建如下所示的操作映射。

     

    <action-mappings>
       <action path="/index" type="com.asprise.struts.newmodule.action.IndexAction">
          <forward name="success" path="/index.jsp"/>
       </action>
    </action-mappings>

     

    接下來,編寫 easyStruts/newModule/index.jsp 的代碼。index.jsp 只會顯示一條消息“<h1>Youare in module: newModule</h1>”。現在,啟動 Tomcat 服務器,并輸入 http://127.0.0.1:8080/easyStruts/switchTo.do?prefix=/newModule&page=/index.do既可。如果您想切換回默認的模塊,只需輸入 http://127.0.0.1:8080/easyStruts/switchTo.do?prefix=&page=/owner.jsp 即可。

     


     

    posted on 2007-04-25 15:47 都市淘沙者 閱讀(871) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 久久精品7亚洲午夜a| 中国国产高清免费av片| 亚洲精品在线免费观看视频| 亚洲福利电影在线观看| 欧洲人免费视频网站在线| 在线人成精品免费视频| 日本精品人妻无码免费大全| 国产免费怕怕免费视频观看| 亚洲午夜无码片在线观看影院猛| 亚洲免费在线视频| 激情无码亚洲一区二区三区| 国产免费黄色无码视频| 黄瓜视频影院在线观看免费| 亚洲一级Av无码毛片久久精品| sihu国产精品永久免费| 丁香花在线观看免费观看| 亚洲日韩看片无码电影| 成人精品综合免费视频| 中文字幕乱码免费视频| 国产亚洲欧洲Aⅴ综合一区| 亚洲国产成人精品无码区在线秒播| 黄网站在线播放视频免费观看| www视频免费看| 亚洲国产精品嫩草影院在线观看| 激情无码亚洲一区二区三区| 久久精品国产亚洲精品| 中文字幕亚洲免费无线观看日本| 亚洲成a人片在线看| 国产日韩AV免费无码一区二区 | 亚洲人成电影福利在线播放| 91成人免费观看| 亚洲精品动漫免费二区| 精品国产sm捆绑最大网免费站| 亚洲真人无码永久在线观看| 人与禽交免费网站视频| 国产精品亚洲精品日韩动图| 免费看AV毛片一区二区三区| 亚洲乱人伦精品图片| 日韩亚洲精品福利| 亚洲午夜福利在线视频| 国产亚洲精品久久久久秋霞|