Struts配置文件详解(2)

关于 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" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值