<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"); |
|