當前位置:開發者網絡 >> 技術教程 >> JSP教程 >> 資料/其它 >> 內容
精彩推薦
分類最新教程
分類熱點教程
    
在struts1.1中使用應用模塊簡介
作者:未知
日期: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正式版中已經支持多了配置文件] 
相關文章: