`

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" />
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics