Struts 2.x权威指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3.4 struts.xml文件结构

struts.xml文件是整个Struts 2框架的核心,下面提供了一个最完整的struts.xml文件,这个文件没有任何实际意义,仅仅是一个struts.xml文件示范。

<?xml version="1.0" encoding="GBK"?>
<!-- 下面指定Struts 2.3配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- struts是Struts 2配置文件的根元素 -->
<struts order="">
    <!-- 下面元素可以出现0次,也可以出现无数次 -->
    <constant name="" value="" />
    <!-- 下面元素可以出现0次,也可以出现无数次 -->
    <bean type="" name="" class="" scope="" static="" optional="" />
    <!-- 下面元素可以出现0次,也可以出现无数次 -->
    <include file="" />
    <!-- package元素是Struts配置文件的核心,该元素可以出现0次,或者无数次 -->
    <package name="必填的包名" extends="" namespace="" abstract=""
          externalReferenceResolver="" strict-method-invocation="">
          <!-- 该元素可以出现,也可以不出现,最多出现一次 -->
          <result-types>
                <!-- 该元素必须出现,可以出现无数次-->
                <result-type name="" class="" default="true|false">
                    <!-- 下面元素可以出现0次,也可以出现无数次 -->
                    <param name="参数名">参数值</param>*
                </result-type>
          </result-types>
          <!-- 该元素可以出现,也可以不出现,最多出现一次 -->
          <interceptors>
                <!-- 该元素的interceptor元素和interceptor-stack至少出现其中之一
                也可以二者都出现 -->
                <!-- 下面元素可以出现0次,也可以出现无数次 -->
                <interceptor name="" class="">
                    <!-- 下面元素可以出现0次,也可以出现无数次 -->
                    <param name="参数名">参数值</param>*
                </interceptor>
                <!-- 下面元素可以出现0次,也可以出现无数次 -->
                <interceptor-stack name="">
                    <!-- 该元素必须出现,可以出现无数次-->
                    <interceptor-ref name="">
                          <!-- 下面元素可以出现0次,也可以出现无数次 -->
                          <param name="参数名">参数值</param>*
                    </interceptor-ref>
                </interceptor-stack>
          </interceptors>
          <!-- 下面元素可以出现0次,也可以出现无数次 -->
          <default-interceptor-ref name="">
                <!-- 下面元素可以出现0次,也可以出现无数次 -->
                <param name="参数名">参数值</param>
          </default-interceptor-ref>
          <!-- 下面元素可以出现0次,也可以出现无数次 -->
          <default-action-ref name="">
                <!-- 下面元素可以出现0次,也可以出现无数次 -->
                <param name="参数名">参数值</param>*
          </default-action-ref>?
          <!-- 下面元素可以出现0次,也可以出现无数次 -->
          <global-results>
                <!-- 该元素必须出现,可以出现无数次-->
                <result name="" type="">
                      <!-- 该字符串内容可以出现0次或多次 -->
                      映射资源
                      <!-- 下面元素可以出现0次,也可以出现无数次 -->
                      <param name="参数名">参数值</param>*
                </result>
          </global-results>
          <!-- 下面元素可以出现0次,也可以出现无数次 -->
          <global-exception-mappings>
                <!-- 该元素必须出现,可以出现无数次-->
                <exception-mapping name="" exception="" result="">
                      异常处理资源
                      <!-- 下面元素可以出现0次,也可以出现无数次 -->
                      <param name="参数名">参数值</param>*
                </exception-mapping>
          </global-exception-mappings>
          <action name="" class="" method="" converter="">
                <!-- 下面元素可以出现0次,也可以出现无数次 -->
                <param name="参数名">参数值</param>*
                <!-- 下面元素可以出现0次,也可以出现无数次 -->
                <result name="" type="">
                      映射资源
                      <!-- 下面元素可以出现0次,也可以出现无数次 -->
                      <param name="参数名">参数值</param>*
                </result>
                <!-- 下面元素可以出现0次,也可以出现无数次 -->
                <interceptor-ref name="">
                      <!-- 下面元素可以出现0次,也可以出现无数次 -->
                      <param name="参数名">参数值</param>*
                </interceptor-ref>
                <!-- 下面元素可以出现0次,也可以出现无数次 -->
                <exception-mapping name="" exception="" result="">
                      异常处理资源
                      <!-- 下面元素可以出现0次,也可以出现无数次 -->
                      <param name="参数名">参数值</param>*
                </exception-mapping>
                <!-- 下面元素可以出现0次或1次 -->
                <allow-methods></allowed-methods>
          </action>
    </package>*
    <!-- unknown-handler-stack元素可以出现0次或1次 -->
    <unknown-handler-stack>
          <!-- unknown-handler-ref元素可以出现0次或多次 -->
          <unknown-handler-ref name=" ">...</unknown-handler-ref>*
    </unknown-handler-stack>?
<struts>

上面的struts.xml配置文件是一个非常全面的配置文件,包含了Struts 2的全部配置元素。上面的配置文件主要用于帮助对DTD不太熟悉的读者尽快熟悉Struts 2配置文件的结构。

提示:

Struts 2.3.1.2引入了一个新版本的DTD,即struts-2.3.dtd,这个版本的DTD主要为struts元素新增了order属性,通过该属性可指定加载Struts 2配置文件的优先顺序。

实际上,如果读者需要熟悉XML文件的DTD(元素类型定义)语法,通过查看Struts 2配置文件的 DTD 信息,同样可以了解 Struts 2 配置文件的结构,Struts 2 的 DTD 文件就是struts2-core-2.3.1.2.jar压缩包里的struts-2.3.dtd文件。

通过上面讲解,读者应该大致掌握了Struts 2配置文件的结构,Struts 2的各种核心组件都是通过该文件进行配置、管理的。下面将会详细介绍Struts 2核心组件的开发、配置。