Struts配置文件
Struts框架在啟動時會讀入其配置文件,根據(jù)它來創(chuàng)建和配置各種Struts組件。Struts配置文件使得開發(fā)者可以靈活地組裝和配置各個組件,提高了應用軟件的可擴展性和靈活性,可以避免硬編碼。Struts配置文件是基于XML的。
·1。org.apache.struts.config包
在Struts1.1中加入了org.apache.struts.config包。在Struts應用啟動時,會把Struts配置文件中的配置信息讀入到內存中,并把他們存放在cofnig包中相關JavaBean類的實例中。
org.apache.struts.config包中的每一個類都和Struts配置文件中特定的配置元素對應。
在Struts框架完成了對配置文件的驗證和解析后,就把配置文件中的信息存放在這些類的實例中。這些類的實例可以充當配置信息的運行時容器,Struts組件可以方便地通過他們來獲取配置信息。
org.apache.struts.config.ModuleConfig在Struts框架中扮演了十分重要的角色。它是整個org.apache.struts.config包的核心,在Struts應用運行時用來存放整個Struts應用的配置信息。如果有多個子應用,每個子應用都會有一個ModuleConfig對象。ModuleConfig和Struts配置文件的根元素<struts-config>對應。<struts-config>根元素中包含<form-bean>、<action>和<forward>等一系列子元素,因此ModuleConfig中包含了和每個子元素對應的配置類實例。
org.apache.struts.config.ConfigRuleSet類的功能不同于其他類,它包含了解析Struts配置文件所需要的一組規(guī)則。在應用啟動時,該類負責構造org.apache.struts.config包中其他用于保存配置信息的JavaBean類的實例。
下面分別介紹Struts配置文件中每個元素的用法。
·2。<struts-config>元素
<struts-cofnig>元素是Struts配置文件的根元素,和它對應的配置類為org.apache.struts.config.ModuleConfig類。<struts-config>元素有8個子元素。
在Struts配置文件中,必須按照它的DTD指定的先后順序來配置<struts-config>元素的各個子元素,如果顛倒了這些子元素在配置文件中的順序,在Struts應用啟動時就會生成XML解析錯誤。
·3。<data-sources>元素
<data-sources>元素用來配置應用所需要的數(shù)據(jù)源。數(shù)據(jù)源負責建立和特定數(shù)據(jù)庫的連接,許多數(shù)據(jù)源采用連接池機制實現(xiàn),以便提高數(shù)據(jù)庫訪問性能。Java語言提供了javax.sql.DataSource接口,所有的數(shù)據(jù)源必須實現(xiàn)該接口。許多應用服務器和Web容器提供了內在的數(shù)據(jù)源組件,很多數(shù)據(jù)庫廠商也提供了數(shù)據(jù)源的實現(xiàn)。
<data-sources>元素包含零個,一個或多個<data-source>子元素。<data-source>元素用于配置特定的數(shù)據(jù)源,它可以包含多個<set-property>子元素。<set-property>元素用于設置數(shù)據(jù)源的各種屬性。
<data-source>元素的type屬性用來指定數(shù)據(jù)源的實現(xiàn)類。開發(fā)者應該根據(jù)實際應用的需要來選用合適的數(shù)據(jù)源實現(xiàn)。
配置了數(shù)據(jù)源后,就可以在Action類中訪問數(shù)據(jù)源。在org.apache.struts.action.Action類中定義了getDataSource(HttpRequest)方法,它用于獲取數(shù)據(jù)源對象的引用。
也可以在配置文件中聲明多個數(shù)據(jù)源,此時需要為每一個數(shù)據(jù)源分配唯一的key值,通過該值來標識特定的數(shù)據(jù)源。
·4。<form-beans>元素
<form-beans>元素用來配置多個ActionForm Bean。<form-beans>元素包含零個或多個<form-bean>子元素。每個<form-bean>元素又包含多個屬性。
<form-bean>元素的屬性
屬性
|
描述
|
className
|
指定和<form-bean>元素對應的配置類,默認值為org.apache.struts.config.FormBeanConfig。如果在這里設置自定義的類,該類必須擴展FormBeanConfig類
|
name
|
指定該ActionForm Bean的唯一標識符,整個Struts框架用該標識符來引用這個bean。該屬性是必需的。
|
type
|
指定ActionForm類的完整類名(類的報名也包含在內),該屬性是必需的
|
如果配置動態(tài)ActionForm Bean,還必須配置<form-bean>元素的<form-property>子元素。<form-property>元素用來指定表單字段,它有四個屬性。
<form-property>元素的屬性
屬性
|
描述
|
className
|
指定和<form-property>元素對應的配置類,默認值為org.apache.struts.config.FormPropertyConfig
|
initial
|
以字符串的形式設置表單字段的初始值。如果沒有設置該屬性,則基本類型的表單字段的默認值為0,對象類型的表單字段的默認值為null
|
name
|
指定表單字段的名字。該屬性是必需的
|
type
|
指定表單字段的類型。如果表單資源為Java類,必須給出完整的類名。該屬性是必需的。
|
·5。<global-exceptions>元素
<global-exceptions>元素用于配置異常處理。<global-exceptions>元素可以包含零個或者多個<exception>元素。
<exception>元素用來設置Java異常和異常處理類org.apache.struts.action.ExceptionHandler之間的映射。
<exception>元素的屬性
屬性
|
描述
|
className
|
指定和<exception>元素對應的配置類。默認值為org.apache.struts.config.ExceptionConfig
|
handler
|
指定異常處理類。默認值為org.apache.struts.action.ExceptionHandler
|
key
|
指定在Resource Bundle中描述該異常的消息key
|
path
|
指定當異常發(fā)生時的轉發(fā)路徑
|
scope
|
指定ActionMessages實例的存放范圍,可選值包括request和session,此項的默認值為request
|
type
|
指定所需處理的異常類的名字。此項是必需的
|
bundle
|
指定Resource Bundle
|
·6。<global-forwards>元素
<global-forwards>元素用來聲明全局的轉發(fā)關系。<global-forwards>元素由零個或者多個<forward>元素組成。<forward>元素用于把一個邏輯名映射到特定的URL。通過這種方式,Action類或者JSP文件無需要指定實際的URL,只要指定邏輯名就能實現(xiàn)請求轉發(fā)或者重定向,這可是減弱控制組件和視圖組件之間的耦合,并且有助于維護JSP文件。
<forward>元素的屬性
屬性
|
描述
|
className
|
和<forward>元素對應的配置類,默認值為org.apache.struts.action.ActionForard
|
contextRelative
|
如果此項為true,表示當path屬性以“/”開頭時,給出的是相對于當前上下文的URL。此項的默認值為false
|
name
|
轉發(fā)路徑的邏輯名。此項是必需的
|
path
|
指定轉發(fā)或重定向的URL。此項是必需的,必需以“/”開頭。當contextRelative屬性為false時,表示URL路徑相對于當前應用(application-relative);當contextRelative屬性為true時,表示URL路徑相對于當前上下文(context-relative)
|
redirect
|
當此項為true時,表示執(zhí)行重定向操作;當此項為false時,表示執(zhí)行請求轉發(fā)操作。此項默認值為false
|
·7。<action-mappings>元素
<action-mappings>元素包含零個或者多個<action>元素。<action>元素描述了從特定的請求路徑到相應的Action類的映射。
在<action>元素中可以包含多個<exception>和<forward>子元素,他們分別配置局部的異常處理及請求轉發(fā)僅被當前的Action所訪問。
在<global-exceptions>元素中定義的<exception>子元素代表全局的異常配置。在<global-forwards>元素中定義的<forward>子元素代表全局的請求轉發(fā)。在不同位置配置<exception>和<forward>元素的語法和屬性是一樣的。
<action>元素的屬性
屬性
|
描述
|
attribute
|
設置和Action關聯(lián)的ActionForm Bean在request或session范圍內的屬性key。例如,假定Form Bean存在于request范圍內,并且此項為“myBean”,那么request.getAttribute(“MyBean”)就可以返回該Bean的實例。此項為可選項。
|
className
|
和<action>元素對應的配置元素。默認值為org.apache.struts.action.ActionMapping
|
forward
|
指定轉發(fā)的URL路徑
|
include
|
指定包含的URL路徑
|
input
|
指定包含輸入表單的URL路徑。當表單驗證失敗時,將把請求轉發(fā)到該URL
|
name
|
指定和該Action關聯(lián)的ActionForm Bean的名字。該名字必需在<form-bean>元素中定義過。此項是可選項
|
path
|
指定訪問Action的路徑,它以“/”開頭,沒有擴展名
|
parameter
|
指定Action的配置參數(shù)。在Action類的execute()方法中,可以調用ActionMapping對象的getParameter()方法來讀取該配置參數(shù)
|
roles
|
指定允許調用該Action的安全角色。多個角色之間以逗號隔開。在處理請求時,RequestProcessor會根據(jù)該配置項來決定用戶是否有調用Action的權限
|
scope
|
指定ActionForm Bean的存在范圍,可選值為request和session。默認值為session
|
type
|
指定Action類的完整類名
|
unknown
|
如果此項為true,表示可以處理用戶發(fā)出的所有無效的Action URL。默認值為false
|
validate
|
指定是否要先調用ActionForm Bean的validate()方法。默認值為true
|
提示:<action>元素的forward、include和type屬性相互排斥,也就是說只能設置其中的一項。forward屬性的作用和org.apache.struts.actions.ForwardAction類相同。Include屬性的作用和org.apache.struts.actions.IncludeAction類相同。
如果在<action>元素中定義了局部的<forward>元素,它的優(yōu)先級別高于全局的<forward>元素。
<Action>的forward屬性和<forward>子元素是兩個不同的概念。Forward屬性指定和path屬性匹配的請求轉發(fā)路徑。
·8。<controller>元素
<controller>元素用于配置ActionServlet。
<controller>元素的屬性
屬性
|
描述
|
bufferSize
|
指定上載文件的輸入緩沖的大小。該屬性為可選項,默認值為4096。
|
className
|
指定和<controller>元素對應的配置類。默認值為org.apache.struts.config.ControllerConfig。
|
contentType
|
指定響應結果的內容類型和字符編碼。該屬性為可選項,默認值為text/html。如果在Action和JSP網頁中也設置了內容類型和字符編碼,將會覆蓋該設置
|
locale
|
指定是否把Locale對象保存到當前用戶的Session中。默認值為false
|
processorClass
|
指定負責處理請求的Java類的完整類名。默認值為org.apache.struts.action.RequestProcessor。如果把此項設置為自定義的類,那么應該保持該類擴展了org.apache.struts.action.RequestProcessor類
|
tempDir
|
指定處理文件上傳的臨時目錄。如果此項沒有設置,將采用Servlet容器為Web應用分配的臨時工作目錄
|
nochache
|
如果為true,在響應結果中將加入特定的頭參數(shù):Pragma,Cache-Control和Expires,防止頁面被存儲在客戶瀏覽器的緩存中。默認值為false
|
如果應用包含多個子應用,可以在每個子應用的Struts配置文件中配置<controller>元素。這樣,盡管這些子應用共享同一個ActionServlet對象,但是它們可以使用不同的RequestProcessor類。
·9。<message-resources>元素
<message-resources>元素用來配置Resource Bundle,Resource Bundle用于存放本地化消息文本。
<message-resources>元素的屬性
屬性
|
描述
|
className
|
和<message-resources>元素對應的配置類。默認值為org.apache.struts.config.MessageResourcesConfig
|
factory
|
指定消息資源的工廠類。默認值為org.apache.struts.util.PropertyMessageResourcesFactory類
|
key
|
指定Resource Bundle存放在ServletContext對象中時采用的屬性key。默認值為由Globals.MESSAGES_KEY定義的字符串常量。只允許有一個Resource Bundle采用默認的屬性key
|
null
|
指定MessageResources類如何處理未知的消息key。如果此項為true,將返回空字符串。如果此項為false,將返回類似“???global.label.missing???”的字符串。該屬性為可選項,默認值為true
|
parameter
|
指定Resource Bundle的消息資源文件名。
|
許多Struts客戶化標簽都通過bundle屬性來指定Resource Bundle,標簽的bundle屬性和<message-resources>元素的key屬性匹配。
·10。<plug-in>元素
<plug-in>元素用于配置Struts插件。
<plug-in>元素的屬性
屬性
|
描述
|
className
|
指定Struts插件類。插件類必需實現(xiàn)org.apache.struts.action.PlugIn接口
|
·11。配置多應用模塊
Struts 1.1支持多應用模塊,即同一個應用包含多個子應用,每個子應用可以處理相關的一組功能。
所有的子應用都共享同一個ActionServlet實例,但每個子應用都有單獨的配置文件。把應用劃分成多個子應用模塊包含一下步驟:
(1) 為每個子應用傳見單獨的Struts配置文件。
(2) 在web.xml的ActionServlet的配置代碼中添加每個子應用信息。
(3) 采用<forward>元素或SwitchAction類來實現(xiàn)子應用之間的切換。
------------http://blog.csdn.net/ayace/archive/2005/04/10/342472.aspx
posted on 2007-11-19 17:36
紫蝶∏飛揚↗ 閱讀(990)
評論(0) 編輯 收藏 所屬分類:
Struts1/2