弄清楚struts-config.xml中各項元素的作用,對於我們構建web項目有莫大的好處。<struts-config>是struts的根元素,它主要有8個子元素,DTD定義如下:
<!ELEMENT
struts-config
(data-sources?,form-beans?,global-exceptions?,global-forwards?,action-mappings?,controller?,message-resources*,plug-in*)
>
以上8個元素,下面一一描述:
1. date-sources元素
date-sources元素用來配置應用程序所需要的數據源。java語言提供了javax.sql.DateSource接口,所有數據源必須實現該接口。如下配置:
<data-sources>
<data-source
type="org.apached.commons.dbcp.BasicDataSource">
………………
</data-source>
</data-sources>
在Action中訪問方式如:
javax.sql.DataSource
dataSource;
java.sql.Connection myConnection;
try
{
dataSource =
getDataSource(request);
myConnection = dataSource.getConnection();
}
…………
如果是多數據源,可用如下配置:
<data-sources>
<data-source
key="a"
type="org.apached.commons.dbcp.BasicDataSource">
………………
</data-source>
<data-source
key="b" type="org.apached.commons.dbcp.BasicDataSource">
………………
</data-source>
</data-sources>
訪問方式:dataSource =
getDataSource(request,"a");
2.
form-beans元素
該元素主要用來配置表單驗證的類。它包含如下屬性:
1.
classname:一般用得少,指定和form-bean無素對應的配置類,默認爲org.apache.struts.config.FormBeanConfig,如果自定義,則必須擴展FormBeanConfig類。可有可無。
2.
name:ActionForm Bean的惟一標識。必須。
3.
type:ActionForm的完整類名。必須。
如下所示:
<form-beans>
<form-bean
name="Loign"
type="com.ha.login">
</form-bean>
</form-beans>
如果是動態Action
FormBean,還必須配置form-bean元素的form-property子元素。它包含四個屬性,上面三個,還有一個initial
元素:以字符串的形式設置表單字段的初始值,如果沒有設置該屬性,則是基本類型爲0,如果是對象則爲null。可有可無。如下所示:
<form-beans>
<form-bean
name="Loign"
type="com.ha.login">
<form-property
name="ok" type="java.lang.String"/>
<form-property name="oks"
type="java.lang.String"/>
<form-property name="okss"
type="java.lang.Integer"
initial="20"/>
</form-bean>
</form-beans>
3.
global-exceptions元素
該元素主要配置異常處理,它的exception子元素代表全局的異常配置。struts採取配置的方式來處理異常。它用來設置java異常和異常處理類org.apache.struts.action.ExceptionHandler之間的映射。它有七個屬性,如下所示:
1.
className:指定和exception元素對應的配置類,默認爲:org.apache.struts.config.ExceptionConfig。可有可無。
2.
Handler:指定異常得理類,默認爲:org.apache.struts.action.ExceptionHandler。可有可無
3.
key:指定在Resource Bundle中描述該異常的消息key
4. path:指定當異常發生時的轉發路徑。
5.
scope:指定ActionMessages實例的存放範圍,可選值包括:request和session,默認爲request。可有可無。
6.
type:指定所需處理異常類的名字,必須。
7. bundle:指定Resource
Bundle
如下所示:
<global-exceptions>
<exception
key="global.error.invalidlogin"
path="/error.jsp"
scope="request"
type="com.hn.tree"
/>
</global-exceptions>
4.
global-forwards元素
該元素主要用來聲明全局的轉發關係,它具有以下四個屬性:
1.
className:和forward元素對應的配置類,默認爲:org.apache.struts.action.ActionForward。可有可無。
2.
contextRelative:此項爲true時,表時path屬性以"/"開頭,相對於當前上下文的URL,默認爲false.可有可無。
3.
name:轉發路徑的邏輯名.必填。
4.
path:轉發或重定向的URL,當contextRelative=false時,URL路徑相對於當前應用(application),當爲ture時,表示URL路徑相對於當前上下文(context)。
5.
redirect:當此項爲ture時,表示執行重定向操作。當此項爲false時表示轉向操作。默認爲false。
如下所示:
<global-forwards>
<forward
name="forms1" path="/a.do"/>
<forward name="forms2"
path="/nb.jsp"/>
<global-forwards>
5.
action-mappings元素
描述從特定的請求路徑到相應的Action類的映射。它具有以下幾個屬性:
1.
attribute:設置和Action關聯的ActionForm Bean在request和session範圍內的key。如:Form
Bean存在於request範圍內,此項設爲“myBenas”,則在request.getAttribute("myBenas")就可以返回該Bean的實例。
2.
classsName:和action元素對應的配置元素,默認爲:org.apache.struts.action.ActionMapping.
3.
forward:轉發的URL路徑。
4. include:指定包含的URL路徑。
5.
input:輸入表單的URL路徑,當表單驗證失敗時,將把請求轉發到該URL。
6. name:指定和Action關聯的Action
FormBean的名字,該名字必須在Form-Bean定義過。
7. path:指定訪問Action的路徑,以“/”開頭,無擴展名。
8.
parameter:指定Actgion的配置參數,在Action類的execute()方法中,可以調用ActionMapping對象的getParameter()方法來讀取該配置參數。
9.
roles:指定允許調用該Action的安全角色,多個角色之間用,隔開,在處理請求時,RequestProcessor會根據該配置項來決定用戶是否有權限調用Action權限。
10.
scope:指定ActionForm Bean的存在範圍,可選取爲request和session,默認爲session。
11.
type:指定Action類的完整類名。
12. unknown:如果此項爲true,表示可以處理用戶發出的所有無效的Action
URL,默認爲false;
13. validate:指定是否要調用Action
FormBean的validate方法,默認值爲ture.
注:forward、include、type屬性只能選中其中一項。
如下:
<action
path="/search"
type="zxj.okBean"
name="a1"
scope="request"
validate="true"
input="/b.jsp">
<forward
name="tig"
path="/aa.jsp"/>
</action>
注:此中的forward是指局部的轉發路徑。global-forwards表示全局的轉發路徑。
6.
controller元素
該元素用於配置ActionServlet。它具有以下屬性。
1.
bufferSize:指定上載文件的輸入緩衝大小,可選,默認爲4096
2.
className:指定和controller元素對應的配置類,默認爲org.apache.struts.config.ControllerConfig
3.
conentType:字符編碼,如果在Action和JSP網頁中設置了,則覆蓋該設置。
4.
locale:指定是否把Locale對象保存到當前用戶的session中,默認值爲false.
5.
processorClass:指定負責請求的java類完整路徑。
6.
tempDir:指定處理文件的臨時工作目錄,如果此項沒有設置,將採用Servlet容器爲web應用分配的臨時工作目錄。
7.
nochache:如果爲true:在響應結果中將加入特定的頭參數:Pragma,Cache-Control和Expise,防止頁面被保存在客戶端的瀏覽器中,默認爲false
如下:
<controller
contentType="text/html;charset="UTF-8""
locale="true"
processorClass="con.ok"/>
7.
message-resources元素
主要配置本地化消息文本,它具有以下屬性。
1.
className:和message-resources元素對應的配置類,默認爲org.apache.struts.config.MessageResourcesConfig。
2.
factory:指定消息資源的工廠類,默認爲:org.apache.struts.util.PropertyMessageResourcesFactory類
3.
key:指定Resource
Bundle存放的ServletContext對象中時採用的屬性Key,默認由Globals.MESSAGES_KEY定義的字符串常量,只允許一個Resource
Bundle採用默認的屬性Key。
4.
null:指定MessageSources類如何處理未知消息的key,如果爲true,則返回空字符串,如果爲false,則返回相關字串,默認爲false
5.
prameter:指定MessageSources的資源文件名,如果爲:a.b.ApplicationResources,則實際對應的文件路徑爲:WEB-INF/classes/a/b/ApplicationResources.properties.
如:
<message-resources
null="false" parameter="defaultResource"/>
<message-resources
key="num1" null="false" parameter="test"/>
訪問爲:
<bean:message
key="zxj"/>
<bean:message key="zxj"
bundle="num1"/>
其中,zxj表法,messagesource資源文件中的一個字符串。
8.
plugin-in元素
配置Struts的插件,屬性如下:
1.
className:指定的Struts插件類,必須實現org.apache.struts.action.PlugiIn接口。如:
<plug-in
className="a.b.c.">
<set-property
property="xxx" value="/WEB-INF/aa.xml" />
</plug-in>
後記,多模塊的配置,可以供多個應用應用不同的struts-config.xml