struts----struts-config.xml檔案配置學習
1.概述。
在Struts應用啟動時,會把Struts配置檔案中的配置資訊讀入到記憶體中,並把他們放到config包中相關javaBean類的例項 中,org.apache.struts.config包中的每一個類都和Struts配置檔案中特定的配置元素對應。例如: <action>
<forward>元素---->ActionForward類
2.根元素<struts-config>
<struts-config>元素是Struts配置檔案的根元素,和它對應的配置類為org.apche.struts.config.ModuleConfig類。
<struts-config>元素有8個子元素,它的DTD定義如下:
<!ELEMENT struts-config(data-source
定義Struts配置檔案,必須按照上面DTD規定的順序進行配置,否則將報錯。
2.1. <data-sources>元素
<data-sources
<data-sources>元素包含零個,一個或多個<data-source>子元素。
<data-source>元素用於配置特定的資料來源,它可以包括多個<set-property>子元素。
<set-property>元素用於設定資料來源的各種屬性。例如:
<data-sources>
<data-source type=”org.apche.commons.dbcp.BasicDataSource”>
<set-property property=”autoCommit” value=”true”/>
<set-property property=”description” value=”MySQL Data Source”/>
<set-property property=”driverClass” value=”com.mysql.jdbc.Driver”/>
<set-property property=”maxCount” value=”10”/>
<set-property property=”minCount” value=”2”/>
<set-property property=”user” value=”root”/>
<set-property property=”password” value=””/>
<set-property property=”url” value=”jdbc:mysql://localhost:3306/addressbooksample”/>
</data-source>
</data-sources>
比較流行的資料來源:
名稱 |
供應商 |
URL |
Poolman |
開放原始碼軟體 |
|
Expresso |
Jcorporate |
|
JDBC Pool |
開放原始碼軟體 |
|
DBCP |
Jakarta |
配置完資料來源後,就可以在Action類中訪問資料來源。
在org.apache.struts.action.Action類中定義了getDataSource(HttpRequest)方法,可以用於獲取資料來源物件的引用。
例如:
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest
request,HttpServletResponse response) throws Exception{
javax.sql.DataSource dataSource;//定義資料來源物件
java.sql.Connection myConnection;//定義聯接物件
try{
dataSource=getDataSource(request);//從配置檔案中讀取資料來源資訊並進行配置
myConnection=dataSource.getConnection();//建立一個數據源連線例項
}
catch(SQLException sqle){
getServlet().log(“Connection.process”,sqle);
}
finally{
try{
myConnection.close();
}
catch(SQLException e){
getServlet().log(“Connection.close”,e);
}
}// end finally
}//end execute
在配置檔案中宣告多個數據源的方法:
可以通過為每一個數據源分配唯一的key值,通過該值來標識特定的資料來源。例如:
<data-sources>
<data-source key=”A” type=”org.apache.commons.dbcp.BasicDataSource”>
<set-property property=”autoCommit” value=”true”/>
<set-property property=”description” value=”MySQL Data Source”/>
<set-property property=”driverClass” value=”com.mysql.jdbc.Driver”/>
<set-property property=”maxCount” value=”10”/>
<set-property property=”minCount” value=”2”/>
<set-property property=”user” value=”root”/>
<set-property property=”password” value=””/>
<set-property property=”url” value=”jdbc:mysql://localhost:3306/addressbooksample”/>
</data-source>
<data-source key=”B” type=”org.apache.commons.dbcp.BasicDataSource”>
</data-source>
<data-source key=”C” type=”org.apache.commons.dbcp.BasicDataSource”>
</data-source>
</data-sources>
2.2.<form-beans>元素
<form-beans>元素用來配置多個ActionForm Bean。
<form-beans>元素包含零個,一個或多個<form-bean>子元素。每個<form-bean>又包含多個屬性:
屬性 |
描述 |
className |
指定和<form-bean>元素對應的配置類,預設值為org.apache.struts.config.FormBeanConfig,如果在這裡設定自定義的類,該類必須擴充套件FormBeanConfig類。 |
Name |
指定該ActionForm Bean的唯一識別符號,整個Struts框架用識別符號來引用這個Bean,該屬性是必須的。 |
Type |
指定ActionForm類的完整名,該屬性是必需的。(在配置type屬性時,必須給出ActionForm類的完整類名,即包括類的包名。) |
<form-beans>
<form-bean name="wfcm1010Form"
type="jp.co.bsnnet.sofia.web.forms.keiyaku.wfcm1000.Wfcm1010Form">
</form-bean>
</form-beans>
2.3.<global-exceptions>元素
該元素主要配置異常處理,它的exception子元素代表全域性的異常配置。
2.4 <global-forwards>元素
該元素主要用來宣告全域性的轉發關係,它具有以下四個屬性:
2.5 <action-mappings>元素
描述從特定的請求路徑到相應的Action類的對映。
2.5.1 attribute:設定和Action關聯的ActionForm Bean在request和session範圍內的key.
2.5.2 classsName:和action元素對應的配置元素,預設為:org.apache.struts.action.ActionMapping.
2.5.3 forward:轉發的URL路徑。
2.5.4 include:指定包含的URL路徑。
2.5.5 name:指定和Action關聯的Action FormBean的名字,該名字必須在Form-Bean定義過。
2.5.6 input:輸入表單的URL路徑,當表單驗證失敗時,將把請求轉發到該URL。
2.5.7 path:指定訪問Action的路徑,以“/”開頭,無副檔名。
2.5.8 parameter:指定Actgion的配置引數,在Action類的execute()方法中,可以呼叫ActionMapping物件的getParameter()方
法來讀取該配置引數。
2.5.9 scope:指定ActionForm Bean的存在範圍,可選取為request和session,預設為session。
2.5.10 type:指定Action類的完整類名
2.5.11 validate:指定是否要呼叫Action FormBean的validate方法,預設值為ture.
注:forward、include、type屬性只能選中其中一項。