在struts1.1中使用應用模塊簡介 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 在struts1.1中使用應用模塊簡介 (http://www.webasp.net/article/19/18067.htm) |
| -- 作者:未知 -- 發佈日期: 2005-04-28 |
| Struts 1.1的一個新特性是應用模塊的概念。應用模塊允許將單個Struts應用劃分成幾個模塊,每個模塊有自己的Struts配置文件, JSP頁面,Action等等。這個新特性是為了解決大中型的開發隊伍抱怨最多的一個問題,即為了更好的支持並行開發允許多個配置 文件而不是單個配置文件。
在用struts進行大型項目開發中,使用這種新特性將是非常好的選擇。 下面我以一個非常簡單的例子來展示這一功能。 通常在單模塊進行開發時,文件的最一般的目錄結構如下: test/ ..../web-inf/ .........../classes .........../lib .........../*.tld .........../struts-config.xml ........... /web.xml ........... /validator-rules.xml ........... /validation.xml ........... ... ..../js ..../css ..../main1.jsp (本例使用的一個簡單的jsp頁面) ..../*.jsp ... .. 如果我們增加一個單獨的模塊如:test1,則文件的最一般的目錄結構如下: test/ ..../test1 **** ........./main11.jsp (本例使用的一個簡單的jsp頁面) ........./*.jsp **** ..../web-inf/ .........../classes .........../lib .........../*.tld .........../struts-config.xml ........... /struts-test1-config.xml ***** ........... /web.xml ........... /validator-rules.xml ........... /validation.xml ........... ... .../js ... /css .../main1.jsp (本例使用的一個簡單的jsp頁面) .../*.jsp ... .. [旁邊帶有「****」的為新增的一些文件或目錄] 以下為變更的幾個xml配置文件: 1.struts-config.xml 在原來的action-mapping 增加switchAction 如: .... .... <action-mappings> <!-- Edit user registration --> <action path="/login" type="com.ifreeway.rms.v12.action.LoginAction" scope="request"> <forward name="error" path="/main1.jsp"/> </action> <action path="/login1" type="com.ifreeway.rms.v12.action.LoginAction1" scope="request"> <forward name="error" path="/main1.jsp"/> </action> <action path="/switchdo" type="org.apache.struts.actions.SwitchAction"/> **** </action-mappings> .... .... [旁邊帶有「****」的為新特性中增加的配置] 2.struts-test1-config.xml 添加輸入這個模塊的actionmapping 如下: .... .... <action-mappings> <!-- Edit user registration --> <action path="/login3" type="com.ifreeway.rms.v12.action.LoginAction2" scope="request"> <forward name="error" path="/main11.jsp"/> </action> </action-mappings> .... .... 3.web.xml .... .... <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/test1</param-name> ***** <param-value>/WEB-INF/struts-test1-config.xml</param-value> ***** </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> .... .... [旁邊帶有「****」的為新特性中增加的配置] 大家可以看到在struts-test1-config.xml中增加了下面代碼: <action path="/switchdo" type="org.apache.struts.actions.SwitchAction"/> 因為在struts1.1中模塊之間的導航要使用到org.apache.struts.actions.SwitchAction,如果你查看struts1.1的源代碼可以發現 org.apache.struts.actions.SwitchAction需要兩個參數:prefix 和 page 下面對這個參數逐一說明: 這兩個參數均要以「/」開頭 prefix 簡單一點就是新增模塊的名字,本例為:test1 page 就是在新的strutsconfig配置文件中要使用的actionmapping的名字 就本例為:login3.do 注意:如果是要使用卻省模塊的調用的話 prefix=空字符串 好了下面給出模塊間轉換的方法 啟動Tomcat http://localhost:8080/test/switchdo.do?prefix=/test1&page=/login3.do 則調用struts-test1-config.xml下的/login3.do http://localhost:8080/test/switchdo.do?prefix=&page=/login1.do 則調用struts-config.xml下的/login1.do http://localhost:8080/test/switchdo.do?prefix=&page=/login.do 則調用struts-config.xml下的/login.do 總的來說模塊之間的轉換要用到org.apache.struts.actions.SwitchAction,而它需要傳遞兩個參數(一般出錯的地方極有可能出在參數 的錯誤上,請注意了) [註:在struts1.1正式版中已經支持多了配置文件] |
| webasp.net |