关于 Struts中 struts-config.xml文件的攻略(简)
这里我们将开始讨论Jakarta Struts中的核心文件struts-config.xml文件。在使用Struts组件的时候我们都需要用到这个文件。
我们可以通过配置文件来配置各种组件,例如数据源DataSource,表单类FormBean,全局异常GlobalException,全局转向GlobalForwars,行为映射ActionMappings,控制器Controller,消息资源MessageResources,以及插件Plugins。
首先大略看一下一个struts-config.xml配置文件。下文中介绍了最高层级top-level的元素项。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<data-sources> <!--数据源的配置-->
<data-source
type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="com.mysql.jdbc.Driver" />
<set-property property="url"
value="jdbc:mysql://localhost/stocks" />
<set-property property="username"
value="YOUR USERNAME" />
<set-property property="password"
value="YOUR PASSWORD" />
</data-source>
</data-sources>
<form-beans> <!--表单类的配置-->
<form-bean name="registrationForm"
type="com.wrox.RegistrationForm"/>
</form-beans>
<global-exceptions> <!--全局异常的配置-->
<exception
key="com.wrox.error"
type="java.io.Exception"
handler="com.wrox.ExceptionHandler">
</global-exceptions>
<global-forwards> <!--全局转向的配置-->
<forward name="registration" path="/registration.jsp"/>
</global-forwards>
<action-mappings> <!--行为映射的配置-->
<action path="/saveRegistration"
type="com.wrox.SaveRegistrationAction"
name="registrationForm"
scope="request"
input="registration"/>
</action-mappings>
<controller> <!--控制器的配置-->
<set-property property="inputForward" value="true"/>
</controller>
<!--消息资源的配置-->
<message-resources
parameter="com.wrox.ApplicationResources"/>
<!--插件的配置-->
<plug-in className="com.wrox.plugins.ModuleConfigVerifier"/>
</struts-config>
在这个配置文件中,每一组元素的先后排列次序是很重要的。换句话说就是在struts-config.xml文件中这些元素都须依照如此的先后次序进行排列。如果排列的次序打乱的话,Struts会在启动时抛出异常。
添加数据原 Adding a DataSource
首先我们需要进行配置的就是数据源。配置数据源有2中方式,一种采用自己开发的组件直接操作数据源实例。另一种方法就是我们将在这里进行演示的方法,通过修改struts配置文件来完成数据源的配置工作。
当我们开始描述数据源实例的时候,我们必须使用<data-sources>的元素项。这个元素项中可以包括多个<data-source>的子元素项,这样可以用来描述每一个数据源实例。在下面的代码中描述了<data-sources>的子元素项中包含了一个单独的<data-source>的子元素项。
<data-sources>
<data-source
type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="com.mysql.jdbc.Driver" />
<set-property property="url"
value="jdbc:mysql://localhost/stocks" />
<set-property property="username"
value="YOUR USERNAME" />
<set-property property="password"
value="YOUR PASSWORD" />
</data-source>
</data-sources>
<data-source>条目的属性
type 这是用来定义含有完整命名控件的DataSource对象。这个类必须是扩展javax.sql.DataSource,并且能进行<set-property>的子元素项的设置操作。关于DB的pool的设置将安排另外的文档进行编写
className 用于设定配置类所用。详细描述这里省略。
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>
而我们在代码中使用的时候可以如下:
...
try {
dataSourceA = getDataSource(request, "A");
dataSourceB = getDataSource(request, "B");
...
添加表单类的定义 Adding FormBean Definitions
<form-bean> 子元素项通常用户描述一个表单类的实例。它的构造语法如下:
<form-beans>
<form-bean name="name used to uniquely identify a FormBean"
type="fully qualified class name of FormBean" />
</form-beans>
首先这里注意的是<form-bean>必须嵌套在<form-beans>之中,
name 是表示唯一的能识别的bean名称。这个值通常用于行为映射并绑定一个表单类到一个行为上。
type 则是类文件的完整命空间及文件名称。
例如
<form-beans>
<form-bean name="lookupForm"
type="wrox.LookupForm" />
</form-beans>
添加全局异常处理 Adding Global Exceptions
全局异常处理子元素项通常可以定义多个异常处理的子元素项。语法结构如下:
<global-exceptions>
<exception key="Key" type="Exception Type"
handler="Exception Handler">
</global-exceptions>
实例如下:
<global-exceptions>
<exception
key="wrox"
type="ch15.WroxException"
handler="ch15.WroxExceptionHandler">
</global-exceptions>
添加全局转向 Adding Global Forwards
在<global-forwards>中可以定义多个<forward>子元素项,语法构造如下:
<global-forwards>
<forward name="unique target identifier"
path="context-relative path to targetted resource "/>
</global-forwards>
实例如下:
<global-forwards>
<forward name="success" path="/welcome.jsp"/>
<forward name="failure" path="/index.jsp"/>
</global-forwards>
添加行为 Adding Actions
<Action-mappings>子元素项可以定义多个<action>子元素项。它就好比是<action>的一个容器,因此我们将着重讨论每一个<action>的子元素项。
<action>子元素项通常用来描述一个正对ActionServlet的行为的实例。它的语法构造如下:
<action-mappings>
<action
path="context-relative path mapping action to a request"
type="fully qualified class name of the Action class"
name="the name of the form bean bound to this Action">
<forward name="forwardname1" path="context-relative path"/>
<forward name="forwardname2" path="context-relative path"/>
</action>
</action-mappings>
注意在上面的部分代码中,包含有2个<forward>子元素项,而这些<forward>仅能被当前的<action>所引用。
实例代码如下:
<action-mappings>
<action path="/lookupAction"
type="wrox.LookupAction"
name="LookupForm"
scope="request"
validate="true"
input="/index.jsp">
<forward name="success" path="/quote.jsp"/>
<forward name="faliue" path="/index.jsp"/>
</action>
</action-mappings>
添加控制器 Adding Controller Elements
控制器元素项用于定义一个控制配置类,通常用于应用服务运行模块进行配置所用。实例如下:
<controller
processorClass="ch04.WroxRequestProcessor"
nocache="true" />
添加消息资源 Adding Message Resources
添加插件 Adding Plugins
<plug-in>元素项通常用于添加插件至struts控制器中。struts的插件用于分配资源或者数据库预备连接资源或者是JNDI资源。语法结构如下:
<plug-in className="Fully qualified Plugin class name"/>
实例如下
<plug-in className="ch04.WroxPlugin"/>
消息资源对象用来描述MessageResource对象,语法结构如下:
<message-resources
parameter="configuration parameter"
key="main" />
是列代码如下:
<message-resources
parameter="ch15.MainResources"
key="main" />
这里我们将开始讨论Jakarta Struts中的核心文件struts-config.xml文件。在使用Struts组件的时候我们都需要用到这个文件。
我们可以通过配置文件来配置各种组件,例如数据源DataSource,表单类FormBean,全局异常GlobalException,全局转向GlobalForwars,行为映射ActionMappings,控制器Controller,消息资源MessageResources,以及插件Plugins。
首先大略看一下一个struts-config.xml配置文件。下文中介绍了最高层级top-level的元素项。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<data-sources> <!--数据源的配置-->
<data-source
type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="com.mysql.jdbc.Driver" />
<set-property property="url"
value="jdbc:mysql://localhost/stocks" />
<set-property property="username"
value="YOUR USERNAME" />
<set-property property="password"
value="YOUR PASSWORD" />
</data-source>
</data-sources>
<form-beans> <!--表单类的配置-->
<form-bean name="registrationForm"
type="com.wrox.RegistrationForm"/>
</form-beans>
<global-exceptions> <!--全局异常的配置-->
<exception
key="com.wrox.error"
type="java.io.Exception"
handler="com.wrox.ExceptionHandler">
</global-exceptions>
<global-forwards> <!--全局转向的配置-->
<forward name="registration" path="/registration.jsp"/>
</global-forwards>
<action-mappings> <!--行为映射的配置-->
<action path="/saveRegistration"
type="com.wrox.SaveRegistrationAction"
name="registrationForm"
scope="request"
input="registration"/>
</action-mappings>
<controller> <!--控制器的配置-->
<set-property property="inputForward" value="true"/>
</controller>
<!--消息资源的配置-->
<message-resources
parameter="com.wrox.ApplicationResources"/>
<!--插件的配置-->
<plug-in className="com.wrox.plugins.ModuleConfigVerifier"/>
</struts-config>
在这个配置文件中,每一组元素的先后排列次序是很重要的。换句话说就是在struts-config.xml文件中这些元素都须依照如此的先后次序进行排列。如果排列的次序打乱的话,Struts会在启动时抛出异常。
添加数据原 Adding a DataSource
首先我们需要进行配置的就是数据源。配置数据源有2中方式,一种采用自己开发的组件直接操作数据源实例。另一种方法就是我们将在这里进行演示的方法,通过修改struts配置文件来完成数据源的配置工作。
当我们开始描述数据源实例的时候,我们必须使用<data-sources>的元素项。这个元素项中可以包括多个<data-source>的子元素项,这样可以用来描述每一个数据源实例。在下面的代码中描述了<data-sources>的子元素项中包含了一个单独的<data-source>的子元素项。
<data-sources>
<data-source
type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="com.mysql.jdbc.Driver" />
<set-property property="url"
value="jdbc:mysql://localhost/stocks" />
<set-property property="username"
value="YOUR USERNAME" />
<set-property property="password"
value="YOUR PASSWORD" />
</data-source>
</data-sources>
<data-source>条目的属性
type 这是用来定义含有完整命名控件的DataSource对象。这个类必须是扩展javax.sql.DataSource,并且能进行<set-property>的子元素项的设置操作。关于DB的pool的设置将安排另外的文档进行编写
className 用于设定配置类所用。详细描述这里省略。
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>
而我们在代码中使用的时候可以如下:
...
try {
dataSourceA = getDataSource(request, "A");
dataSourceB = getDataSource(request, "B");
...
添加表单类的定义 Adding FormBean Definitions
<form-bean> 子元素项通常用户描述一个表单类的实例。它的构造语法如下:
<form-beans>
<form-bean name="name used to uniquely identify a FormBean"
type="fully qualified class name of FormBean" />
</form-beans>
首先这里注意的是<form-bean>必须嵌套在<form-beans>之中,
name 是表示唯一的能识别的bean名称。这个值通常用于行为映射并绑定一个表单类到一个行为上。
type 则是类文件的完整命空间及文件名称。
例如
<form-beans>
<form-bean name="lookupForm"
type="wrox.LookupForm" />
</form-beans>
添加全局异常处理 Adding Global Exceptions
全局异常处理子元素项通常可以定义多个异常处理的子元素项。语法结构如下:
<global-exceptions>
<exception key="Key" type="Exception Type"
handler="Exception Handler">
</global-exceptions>
实例如下:
<global-exceptions>
<exception
key="wrox"
type="ch15.WroxException"
handler="ch15.WroxExceptionHandler">
</global-exceptions>
添加全局转向 Adding Global Forwards
在<global-forwards>中可以定义多个<forward>子元素项,语法构造如下:
<global-forwards>
<forward name="unique target identifier"
path="context-relative path to targetted resource "/>
</global-forwards>
实例如下:
<global-forwards>
<forward name="success" path="/welcome.jsp"/>
<forward name="failure" path="/index.jsp"/>
</global-forwards>
添加行为 Adding Actions
<Action-mappings>子元素项可以定义多个<action>子元素项。它就好比是<action>的一个容器,因此我们将着重讨论每一个<action>的子元素项。
<action>子元素项通常用来描述一个正对ActionServlet的行为的实例。它的语法构造如下:
<action-mappings>
<action
path="context-relative path mapping action to a request"
type="fully qualified class name of the Action class"
name="the name of the form bean bound to this Action">
<forward name="forwardname1" path="context-relative path"/>
<forward name="forwardname2" path="context-relative path"/>
</action>
</action-mappings>
注意在上面的部分代码中,包含有2个<forward>子元素项,而这些<forward>仅能被当前的<action>所引用。
实例代码如下:
<action-mappings>
<action path="/lookupAction"
type="wrox.LookupAction"
name="LookupForm"
scope="request"
validate="true"
input="/index.jsp">
<forward name="success" path="/quote.jsp"/>
<forward name="faliue" path="/index.jsp"/>
</action>
</action-mappings>
添加控制器 Adding Controller Elements
控制器元素项用于定义一个控制配置类,通常用于应用服务运行模块进行配置所用。实例如下:
<controller
processorClass="ch04.WroxRequestProcessor"
nocache="true" />
添加消息资源 Adding Message Resources
添加插件 Adding Plugins
<plug-in>元素项通常用于添加插件至struts控制器中。struts的插件用于分配资源或者数据库预备连接资源或者是JNDI资源。语法结构如下:
<plug-in className="Fully qualified Plugin class name"/>
实例如下
<plug-in className="ch04.WroxPlugin"/>
消息资源对象用来描述MessageResource对象,语法结构如下:
<message-resources
parameter="configuration parameter"
key="main" />
是列代码如下:
<message-resources
parameter="ch15.MainResources"
key="main" />