struts-config.xml是Struts的主要配置文件,在该文件中,可以配置数据源、form-bean、action和plug-in(插件)和资源文件的信息。其文件(Struts1.2版本)主要结构如下所示:
- <p><?xml version="1.0" encoding="UTF-8"?>
-
- <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
-
- </struts-config>
-
- <data-sources>
-
- <data-source>
-
- </data-source>
-
- </data-sources>
-
- <form-beans>
-
- </form-bean>
-
- </form-beans>
-
- <global-forwards>
-
- <forward/>
-
- </global-forwards>
-
- <action-mappings>
-
- <action />
-
- <controller />
-
- <message-resources />
-
- <plug-in />
-
- </struts-config>
- </p>
以上各元素必须是按照这个顺序的,若开发人员打乱顺序,很可能引起Struts容器启动时出错。
当然struts-config.xml还有<display-name />、<description />和<icon />子元素,因为它们用得很少,在此不再赘述。只是讲述常用的子元素的配置。
1. data-sources
本节讲述子元素data-sources的配置,该元素可以配置一个或多个data-source元素,即数据源元素,可以通过<set-property>设置driverClass、url、user、password等属性。配置实例如下:
<data-source>
<!-- 所用的JDBC驱动类,必须-->
<set-property property="driverClass" value="com.mysql.jdbc.Driver"/>
<!-- 所用的JDBC的URL,必须-->
<set-property property="url" value="jdbc:mysql://localhost/test"/>
<!-- 同时打开的最小连结数,缺省值为1,可选-->
<set-property property="minCount" value="1"/>
<!-- 同时打开的最大连结数,缺省值为2,可选-->
<set-property property="maxCount" value="5"/>
<!-- 连结到数据库的用户名,必须-->
<set-property property="user" value="root"/>
<!-- 连结到数据库的密码,必须-->
<set-property property="password" value="root"/>
</data-source>
开发人员还可以设置Key(绑定在ServletContext上的DataSource实例的索引键,若不设定则缺省为Action.DATA_SOURCE_KEY,如果在应用程序中有多于一个的DataSource,则必须设置Key的值)、Description(关于DataSource的描述信息)、ReadOnly(如果设为true,则表示该连结是只读的,缺省为false)、LoginTimeout(创建连结的最大允许时间,以秒为单位)和AutoCommit(如果为true,则每次execute之后会强制回滚。缺省为true)属性。
在实际项目中,例如在Hibernate + Struts构建的系统中,一般使用Hibernate的hibernate.cfg.xml文件来配置数据源的信息。而在Hibernate + Struts + Spring构建的系统中,一般使用spring的配置文件(eg. applicationContext.xml)来配置数据源的信息。
2. form-beans
子元素form-beans用来配置绑定到Action的各个FormBean的实例。每个FormBean实例用form-bans的子元素form-bean来定义。form-bean又分普通的FormBan和动态FormBean。
(1)普通form-bean
普通FormBean需要定义一个JavaBean类,在form-bean元素中指定该类。普通form-bean元素的定义格式如下:
<form-bean name="FormBean的名称" type="FormBean对应JavaBean类的全路径"/>
Eg. <form-bean name="UserForm"
type="com.amigo.struts.form.user.UserForm" />
对应的FormBean类一般是继承ActionForm类,例如下面的例子定义了一个UserForm,它具有userName和password两个属性。该类的代码如下:
- package com.amigo.struts.form.user;
-
- import org.apache.struts.action.ActionForm;
-
- public class UserForm extends ActionForm {
-
- private static final long serialVersionUID = 1L;
-
-
-
-
- private String userName;
-
-
-
- private String password;
-
- public String getPassword() {
-
- return password;
-
- }
-
- public void setPassword(String password) {
-
- this.password = password;
-
- }
-
- public String getUserName() {
-
- return userName;
-
- }
-
-