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

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

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

    鐵手劍譜

    上善若水
    數據加載中……
    Struts秘籍之第1段:第2.5式. 將應用重構為模塊

    第2.5式. 將應用重構為模塊

    問題

    你想要將你的應用隔離為多個相對不同的子應用、或者模塊,每一個都有其自己的單獨的配置。

    動作要領

    除了默認模塊的Struts 配置文件之外,為每一個模塊創建一個單獨的Struts 配置文件。然后使用ActionServlet的初始化參數在web.xml中聲明每一個模塊,如Example 2-11.

    Example 2-11. ActionServlet 的多模塊配置

     

    <!-- 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</param-value>
      
    </init-param>
      
    <init-param>
        
    <param-name>config/module1</param-name>
        
    <param-value>/WEB-INF/struts-config-module1.xml</param-value>
      
    </init-param>
      
    <init-param>
        
    <param-name>config/module2</param-name>
        
    <param-value>/WEB-INF/struts-config-module2.xml</param-value>
      
    </init-param>
      
    <load-on-startup>1</load-on-startup>
    </servlet>

     

    動作變化

    Struts 1.1 引入了定義單獨配置的子應用的能力,那就是模塊(module)。Modules 引入到Struts 之中是為了解決將web應用分解為相對不同的,可管理的部分的問題。每一個module 都通過其自己的配置文件進行定義。每一個Struts 應用都隱含的具有一個默認module。默認module 沒有名字。

    附加的模塊通過指定一個模塊前綴來定義。前綴是Struts的ActionServlet的初始化參數中的config/后面緊跟的值。在Example 2-11中,定義了3個模塊。第一個init-param元素定義了默認模塊。第二個和第三個init-param元素分別建立了module1和module2。

    Struts 預先為每一個通過在struts-config.xm文件中為每一個模塊定義的聲明來訪問的URL準備模塊前綴。這項規則也適用于全局轉發,全局異常,action mapping,局部轉發和局部以外中的path 屬性。然而,module的 Struts 配置文件則不需要知道也不應該使用module 前綴。

    通過Struts標簽所產生的URL,比如通過html:link和html:rewrite,將包含module名稱。這意味著包含模塊前綴在你想要引用全局共享的Web資源比如圖像和CSS時會很令人頭痛。很多Web 應用通常都將所有圖片放置在站點的頂層/images文件夾中。如果使用modules 并且使用html:img標簽來顯示這些圖片,你必須為每一個模塊創建一個單獨的/images文件夾戶或者設置html:img標簽的module屬性為空字符串("") 以指示默認的模塊。

    假定你想要為struts示例的MailReader應用創建一個管理的UI接口。需要在應用中加入一個管理模塊,如下面的方式修改web.xml文件,其中第2個init-param元素就定義了admin模塊:

      <!-- 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>
        
    <init-param>
          
    <param-name>config/admin</param-name>
          
    <param-value>/WEB-INF/struts-config-admin.xml</param-value>
        
    </init-param>
        
    <load-on-startup>1</load-on-startup>
      
    </servlet>

    使用module常犯的一個錯誤就是在你導航到包含模塊前綴的URL的時候, Struts 將認為你是在模塊之中。例如,你可能在應用的主頁面提供了一個標準的HTML 鏈接(比如<a href . . . >) 到管理模塊的index頁面。如果用戶選擇該鏈接,它們會看到正確的頁面。然而, Struts 所關心的是,用戶仍然在默認模塊中。為了在Struts 1.1 應用的模塊之間切換,你必須通過一個特殊的action,SwitchAction來轉發用戶。在Struts 1.2中,產生鏈接和URL的Struts html標簽已經支持module屬性,這樣你就可以顯式地指定目標模塊。

    使用Struts 1.1 的模塊機制有其缺點。注意不是所有的Struts 1.1標簽都支持模塊。所以,你可能會發現模塊中的JSP頁面并不能完全與它們屬于的模塊無關的情況下便寫出來。使用模塊的這些缺點都在Struts 1.2中被彌補了。因此,我推薦你只有在Struts1.2中才考慮使用模塊。如果你必須使用Struts 1.1 并且你的應用僅僅是稍微有些復雜,你可以向要避免使用模塊的矛盾,而使用子目錄的方式來組織你的應用,并且使用第2.4中所講的技術來將struts-config.xml文件進行分解。

    相關招式

    第2.4 將struts-config.xml文件分解為多個配置的技術。

    第6.7 展示了在運行的Struts 應用的模塊之間進行切換的技術。

    posted on 2005-05-17 16:44 鐵手 閱讀(1440) 評論(1)  編輯  收藏 所屬分類: JavaStruts系列

    評論

    # Struts 秘籍(CookBook)[TrackBack] 2005-11-12 18:29 阿泠

    本系列源改編自O'Reily的Strus Cookbook
    [引用提示]阿泠引用了該文章, 地址: http://blog.donews.com/inclear/archive/2005/11/12/624363.aspx
      回復  更多評論    
    主站蜘蛛池模板: 亚洲国产国产综合一区首页| 国产zzjjzzjj视频全免费| 国产亚洲精AA在线观看SEE| 免费在线观看一区| 亚洲av永久无码| 成人免费a级毛片无码网站入口| 1024免费福利永久观看网站| 亚洲福利电影一区二区?| 国产精品亚洲综合| 亚洲AV蜜桃永久无码精品| 亚洲综合在线成人一区| 1000部禁片黄的免费看| 亚洲一区精品伊人久久伊人| 亚洲精品欧洲精品| 91免费资源网站入口| 伊人久久亚洲综合影院首页| 可以免费观看的国产视频| 国产免费av一区二区三区| 黄色一级视频免费| 亚洲精品无码久久一线| 91成人在线免费观看| 亚洲精品无码Av人在线观看国产| 国产高清不卡免费视频| 亚洲欧洲精品视频在线观看| 嫩草视频在线免费观看| 亚洲精品黄色视频在线观看免费资源| 国产精品亚洲精品日韩已满| 亚洲成年人免费网站| 蜜桃传媒一区二区亚洲AV | 中文字幕不卡高清免费| 国产成人精品123区免费视频| 国产.亚洲.欧洲在线| 97国产在线公开免费观看| 亚洲 欧洲 日韩 综合在线| 中文字幕乱码免费视频| 亚洲精品亚洲人成在线| 亚洲乱码日产一区三区| 毛片免费观看网址| 日本三级在线观看免费| 亚洲色偷偷色噜噜狠狠99网| 国产亚洲精久久久久久无码77777|