使用多个struts-config配置文件,模块化
來源:http://www.diybl.com/course/3_program/java/javajs/2008531/118259.html
?
可以將一個struts-config.xml分割成多個小的struts-config.xml。每個都必須按照struts-config DTD文件的格式進行編寫。配置舉例如下:
<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-2.xml
??? </param-value>
?</init-param>
?<load-on-startup>1</load-on-startup>
</servlet>
當載入ActionServlet類時,struts將多個配置文件拼成單個的配置文件。
如果多個配置文件中有重復的元素則使用最后一個配置文件中的。
你也可以為多個字模塊指定多個配置文件。如下所示:
<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-default-config.xml,
????? /WEB-INF/struts-default-config-2.xml
??? </param-value>
?</init-param>
?<init-param>
??? <param-name>config/module1</param-name>
??? <param-value>
????? /WEB-INF/struts-module1-config.xml
??? </param-value>
?</init-param>
?<init-param>
??? <param-name>config/module2</param-name>
??? <param-value>
????? /WEB-INF/struts-module2-config.xml,
????? /WEB-INF/struts-module2-config-2.xml,
????? /WEB-INF/struts-module2-config-3.xml
??? </param-value>
?</init-param>
?<load-on-startup>1</load-on-startup>
</servlet>
模塊化
需求
需要將一個模塊分割成多個子模塊,每個模塊有自己的配置文件。
解決方案
在web.xml中配置如下:
<!-- 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引入模塊的概念將一個應用程序分割成多個具有不同功能的子模塊。每個模塊可以定義自己的配置文件。簡單的struts程序隱含一個默 認的模塊,它沒有子模塊名。添加的子模塊用一個前綴config/來定義。如上例中定義了三個模塊。第一個init-param定義了一個默認模塊。第 二、三個init-param分別定義了module1,module2兩個模塊。
?
struts通過在web.xml中對模塊的聲明處理每一個請求的模塊信息。它將作用于global forwards, global exceptions, action mappings, local forwards, and local exceptions的path屬性。各個模塊的配置文件struts-config.xml不需要知道自己屬于哪個模塊
如果你使用struts 標簽如html:link和html:rewrite生成URL,則URL中將包含模塊的名稱。如:
<html:link page="/validateswitch.do?prefix=/validate&page=/input.jsp">to validate/input.jsp</html:link>
一般情況下,應用程序會將所有的圖片文件放在一個頂層目錄中(如:<top-level>/images),
如果你使用模塊時,當你用到標簽html:img時需要為每個模塊建立一個images文件夾,或設置在html:img標簽的module屬性為空字符串(“”)指明images文件假在應用程序根目錄下。
模塊間的切換
問題
想從一個模塊(源模塊)切換到另一個模塊(目標模塊)。
解決方案
在你的源模塊中建立一個 type為“org.apache.struts.actions.SwitchAction”的action:
<action path="/ChangeModuleTest"
??????? type="org.apache.struts.actions.SwitchAction"/>
使用這個action,向它傳遞兩個參數prefix和page。prefix指明了目標模塊名稱,必須是以斜扛開頭(“/”),page指明了相對于目標模塊的位置。如:
<html:link page="/ChangeModuleTest.do?prefix=moduleName&page=/SomeAction.do">
??? Change Module
</html:link>如果你要連接到一個action,別忘了加上 ”.do” 。
討論
SwitchAction能將應用程序從一個模塊轉到另一個模塊,然后跳轉到目標模塊的指定位置。
同ForwardAction、IncludeAction一樣SwitchAction不需要子類化。
?
當我們在瀏覽器中使用http://hostaddress/contextpath/module/action.do式樣的的url時,actionservlet會根據module選擇模塊對象,下面是actionservlet處理http請求的代碼:
總結
以上是生活随笔為你收集整理的使用多个struts-config配置文件,模块化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3D移动 translate3d
- 下一篇: 00后男生长期把可乐当水喝:牙全坏