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

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

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

    Struts對多配置和模塊化的支持 (ZT)

    Posted on 2007-08-17 16:25 bluoy 閱讀(191) 評論(0)  編輯  收藏

    我們知道,在Struts 1.0中,我們只能在web.xml中為ActionServlet指定一個配置文件,這對于我們這些網上的教學例子來說當然沒什么問題,但是在實際的應用開發過程中,可能會有些麻煩。因為許多開發人員都可能同時需要修改配置文件,但是配置文件只能同時被一個人修改,這樣肯定會造成一定程度上的資源爭奪,勢必會影響開發效率和引起開發人員的抱怨。

    在Struts 1.1中,為了解決這個并行開發的問題,提出了兩種解決方案:

    1. 多個配置文件的支持
    2. 模塊的支持

     

    支持多個配置文件,是指你能夠為ActionServlet同時指定多個xml配置文件,文件之間以逗號分隔,比如Struts提供的MailReader演示例子中就采用該種方法。

    
                <!-- Action Servlet Configuration -->
                <servlet>
                <servlet-name>action</servlet-name>
                <servlet-class>
                    org.apache.struts.action.ActionServlet
                </servlet-class> <init-param> <param-name>config</param-name> <param-value>
    /WEB-INF/struts-config.xml,
    /WEB-INF/struts-config-registration.xml
    </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>

    這種方法可以很好地解決修改沖突的問題,不同的開發人員可以在不同的配置文件中設置自己的Action、ActionForm等等(當然不是說每個開發人員都需要自己的配置文件,可以按照系統的功能模塊進行劃分)。但是,這里還是存在一個潛在的問題,就是可能不同的配置文件之間會產生沖突,因為在ActionServlet初始化的時候這幾個文件最終還是需要合并到一起的。比如,在struts-config.xml中配置了一個名為success的<forward>,而在struts-config-registration.xml中也配置了一個同樣的<forward>,那么執行起來就會產生沖突。

    為了徹底解決這種沖突,Struts 1.1中引進了模塊(Module)的概念。一個模塊就是一個獨立的子系統,你可以在其中進行任意所需的配置,同時又不必擔心和其它的配置文件產生沖突。因為前面我們講過,ActionServlet是將不同的模塊信息保存在不同的ModuleConfig對象中的。要使用模塊的功能,需要進行以下的準備工作:

    1、為每個模塊準備一個配置文件

    2、配置web.xml文件,通知控制器

    決定采用多個模塊以后,你需要將這些信息告訴控制器,這需要在web.xml文件進行配置。下面是一個典型的多模塊配置:

    
                <init-param>
                <param-name>config</param-name>
                <param-value>
                    /WEB-INF/struts-config.xml
                </param-value> </init-param> <init-param> <param-name>config/customer</param-name> <param-value>
                    /WEB-INF/struts-config-customer.xml
                </param-value> </init-param> <init-param> <param-name>config/order</param-name> <param-value>
                    /WEB-INF/struts-config-order.xml
                </param-value> </init-param>

    要配置多個模塊,你需要在原有的一個<init-param>(在Struts 1.1中將其對應的模塊稱為缺省模塊)的基礎之上,增加模塊對應的<init-param>。其中<param-name>表示為config/XXX的形式,其中XXX為對應的模塊名,<param-value>中還是指定模塊對應的配置文件。上面這個例子說明該應用有三個模塊,分別是缺省模塊、customer和order,它們分別對應不同的配置文件。

    3、準備各個模塊所需的ActionForm、Action和JSP等資源

    但是要注意的是,模塊的出現也同時帶來了一個問題,即如何在不同模塊間進行轉發?有兩種方法可以實現模塊間的轉發,一種就是在<forward>(全局或者本地)中定義,另外一種就是利用org.apache.struts.actions.SwitchAction。

    下面就是一個全局的例子:

    
                ...
                <struts-config>
                ...
                <global-forwards>
                <forward name="toModuleB"
                contextRelative="true"
                path="/moduleB/index.do"
                redirect="true"/>
                ...
                </global-forwards>
                ...
                </struts-config>
                

    可以看出,只需要在原有的path屬性前加上模塊名,同時將contextRelative屬性置為true即可。此外,你也可以在<action>中定義一個類似的本地<forward>。

    
                <action-mappings>
                <!-- Action mapping for profile form -->
                <action path="/login"
                type="com.ncu.test.LoginAction"
                name="loginForm"
                scope="request"
                input="tile.userLogin"
                validate="true">
                <forward name="success" contextRelative="true" path="/moduleA/login.do"/>
                </action>
                </action-mappings>
                

    如果你已經處在其他模塊,需要轉回到缺省模塊,那應該類似下面這樣定義,即模塊名為空。

    
                <forward name="success" contextRelative="true" path="/login.do"/>
                

    此外,你也可以使用org.apache.struts.actions.SwitchAction,例如:

    
                ...
                <action-mappings>
                <action path="/toModule"
                type="org.apache.struts.actions.SwitchAction"/>
                ...
                </action-mappings>
                ...
                


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲乱码无人区卡1卡2卡3| 亚洲人成电影福利在线播放| 亚洲AV无码一区二区三区人| a毛片免费全部在线播放**| 亚洲精品天堂成人片AV在线播放 | selaoban在线视频免费精品| 亚洲av片一区二区三区| 精品韩国亚洲av无码不卡区| 国产成人免费福利网站| 国产综合激情在线亚洲第一页| 国产成人啪精品视频免费网| 黄色一级视频免费观看| 亚洲国产精品成人一区| 2022国内精品免费福利视频| 国产亚洲av片在线观看18女人| 亚洲免费观看视频| 亚洲精品不卡视频| 国内一级一级毛片a免费| 国产亚洲综合精品一区二区三区| 亚洲国产天堂久久综合| 成人电影在线免费观看| 91亚洲精品视频| 午夜时刻免费入口| 日亚毛片免费乱码不卡一区| 亚洲熟女一区二区三区| 日本免费网站视频www区| 亚洲AV网一区二区三区| 亚洲乱码国产乱码精品精| 97在线视频免费播放| 亚洲乱妇老熟女爽到高潮的片 | 337p日本欧洲亚洲大胆精品555588| 国产1000部成人免费视频| 亚洲风情亚Aⅴ在线发布| 久久亚洲国产成人影院网站| 久久大香香蕉国产免费网站| 亚洲综合欧美色五月俺也去| 亚洲乱亚洲乱少妇无码| 欧洲一级毛片免费| 又粗又长又爽又长黄免费视频 | 国产无遮挡又黄又爽免费视频| 中文字幕手机在线免费看电影|