<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"); 贴子相关图片: