Struts配置文件中的元素

<struts-config>元素

<struts-config>元素是Struts配置文件的根元素,和它對應的配置類爲org.apache.strtus.config.ModuleConfig類.<struts-config>元素有8個子元素,它的DTD定義如下:
<!ELEMENT struts-config(data-sources?,form-beans?,global-exceptions?,global-forwards?,action-mappings?,controller?,message-resources*,plug-in*)
在Struts配置文件中,必須按照以上DTD指定的先後順序來配置<struts-config>元素的各個子元素,如果顛倒了這些元素在配置文件中的順序,在Struts應用啓動時會生成XML解析錯誤.

<data-sources>元素

<data-sources>元素用來配置應用所需要的數據源.數據源負責建立和特定數據庫的連接,許多數據源採用連接池機制實現,以便提高數據庫訪問性能.Java語言提供了內在的數據源組件,很多數據庫廠商也提供了數據源的實現.下圖表現了Web應用通過數據源訪問數據庫的過程.

<data-sources>元素包含零個,一個或多個<data-source>子元素.<data-source>元素用於配置特定的數據源,它可以包含多個<set-property>子元素.<set-property>元素用於設置數據源的各種屬性.下面的代碼演示瞭如何在Struts配置文件中配置數據源:
<data-source>
<data-source 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 properyt="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>
以上代碼使用<data-source>元素配置了和MySQL數據庫的連接.<data-source>元素的type屬性用來指定數據源的實現類.以上代碼使用的是Apache軟件組織提供的DBCP數據源.開發者應該根據實際應用的需要來選用合適的數據源實現.下表列出了幾種比較流行的數據源實現
---名稱---------供應商-----------URL------------------
Poolman______開放源代碼軟件__http://sourceforge.net/projects/poolman
Expresso_____Jcorporate_______http://www.jcorporate.com
JDBC Pool____開放源代碼軟件___http://www.bitmechanic.com/projects/jdbcpool/
DBCP_________Jakarta__________http://jakarta.apache.org/commons/index.html
------------------------------------------------------------------
配置了數據源後,就可以在Action類中訪問數據源.在org.apache.struts.action.Action類中定義了getDataSource(HttpRequest)方法,它用於獲取數據源對象的引用.以下程序代碼演示瞭如何在Action類中訪問數據源:
public ActionForward execute(SctionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)throws Exception
{
javax.sql.DataSource dataSource;
java.sql.Connection myConnection;
try{
dataSource=getDataSource(request);
myConnection=dataSource.getConnection();
//do what you wish with myConnection
}catch(SQLException sqle){
getServlet().log("Connection.process",sqle);
}finally{
//enclose this in a finally block to make
//sure the connection is closed
try{
myConnection.close();
}catch(SQLException e){
getServlet().log("Connection.close",e);
}
}
}
也可以在配置文件中聲明多個數據源,此時需要爲每一個數據源分配唯一的key值,通過該值來標識特定的數據源.例如:
<data-sources>
<data-source key="A" type="org.apache.commons.dbcp.BasicDataSource">
...properties as before...
</data-source>
<data-source key="B" type="org.apache.commons.dbcp.BasicDataSource">
...properties as before...
</data-source>
...
</data-sources>
在Action類中通過以下方式訪問特定的數據源:
dataSourceA=getDataSource(request,"A");
dataSourceB=getDataSource(request,"B");
  貼子相關圖片:
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章