
struts.xml 是 Struts2 框架的核心配置文件,该文件主要适于配置 Action 和恳求的对应关系,以及配置逻辑视图和数学视图(逻辑视图就是在 struts.xml 文件中配置的 <result> 元素,它的 name 属性值就是逻辑视图名;物理视图是指 <result> 元素中配置的结果页面,如 JSP 文件)资源的对应关系。
struts.xml 文件一般放到 Web 应用的 WEB-INF/classes 目录下,在该目录下的 struts.xml 文件可以被 Struts2 框架自动读取。由于 MyEclipse 开发软件在编译时会手动将 src 路径下的 struts.xml 文件编译后放入 WEB-INF/classes 路径下,所以直接将其放在项目的 src 路径下即可。
下面来看一个典型的 struts.xml 文件结构,如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!--<constant>元素用常量的配置-->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<!--<package>元素用于包配置-->
<package name="default" namespace="/" extends="struts-default">
<!--配置Action-->
<action name="index" class="Xxx"/>
<!--配置Result-->
<result type="dispatcher">
<param name="location">/index.jsp</param>
</result>
</action>
</package>
<!-- <include>元素用于包含配置 -->
<include file="example.xml"/>
</struts>在上述文件中,元素说明如下:
下面,将分别对于很多常见的元素及其配置进行具体详解。常量配置在使用 Struts2 框架研发的项目中,通常还要使用少量的常量,这些常量大多在默认的配置文件中已然配置好,但因为用户的需求不同,开发的要求还有所不同,这时或许就还要对很多常量值进行更改,其更改的方式就是在配置文件中对常量进行从新配置。

在 Struts2 中struts.xml,常量的配置一般使用下列三种方法。
上述三种配置方法中,在 struts.xml 文件中通过 <constant> 元素配置常量,是项目研发时最常见的方法,教程中的常量配置只是通过此种方式谋求的,所以这儿只介绍通过 <constant> 元素配置常量的形式struts.xml,其他两种方法读者只需了解即可。
在 struts.xml 文件中通过 <constant.../> 元素配置常量时,需要指定两个必填的属性 name 和 value。其中 name 属性用于指定常量的常量名,value 属性用于指定常量的常量值。其配置的实例代码如下所示:
<struts>
<!--设置默认编码集为UTF-8-->
<constant name="struts.il8n.encoding" value="UTF-8" />
<!--设置使用开发模式-->
<constant name="struts.devMode" value="true" />
</struts>
在上述实例代码中,配置了常量 struts.i18n.encoding 和 struts.devMode。其中 struts.i18n.encoding 用于指定 Struts2 应用程序的默认编码集为 UTF-8,struts.devMode 用于指定项目使用的是研发体系。

Struts2 所支持的常量数量众多,在 struts2-core-2.3.37.jar 压缩文件的 org/apache/struts2 路径下有一个 default.properties 文件,该文件里为 Struts2 的所有常量都指定了默认值,读者可以通过查看该文件知道 Struts2 所支持的常量。
除了可以通过上述的三种方法配置常量以外,在 Struts2 内置的一些配置文件中还有对常量的配置。因此,如果在多个文件中配置了同一个 Struts2 常量,则 Struts2 框架加载常量是有一定次序的,通常的搜索排序如下。
1)default.properties:该文件存放在 struts2-core-2.3.37.jar 中的 org.apache.struts2 包中。
2)struts-default.xml:该文件存放在 struts2-core-2.3.37.jar 文件中。
3)struts-plugin.xml:该文件存放在 struts-Xxx-2.3.37.jar 等 Struts2 插件 JAR 包中。

4)struts.xml:该文件是 Web 应用自身的 Struts2 配置文件。
5)struts.properties:该文件是 Web 应用默认的 Struts2 配置文件。
6)web.xml:该文件是 Web 应用的配置文件。
上面指定了 Struts2 框架搜索 Struts2 常量的排序,需要留意的是,如果在多个文件中配置了同一个 Struts2 常量,则后一个文件中配置的常量值会覆盖后面文件中配置的常量值。包配置在 Struts2 框架中,包用于管理 Action 和,每个包就是多个 Action、多个、多个引用的集合。在 struts.xml 文件中,使用 <package> 元素定义包配置,每个 <package> 元素都定义了一个包配置,其实例代码下所示:
<package name="default" namespace="/" extends="struts-default">

...
</package>
在上述代码中,<package> 元素用到了三个关键属性 name、namespace、extends,具体表明如下。
包含配置Struts2 允许将一个配置文件分解成多个配置文件,从而降低配置文件的可读性,<include> 元素用于在一个 struts.xml 配置文件中包括其他的配置文件。Struts2 默认只读取 WEB-INF/classes 下的 struts.xml 文件,一旦通过多个 XML 文件配置 Action,就需要通过 <include> 元素包括其他配置文件。
在 struts.xml 文件中包括配置的样例代码如下所示:
<struts>
<!--不指定路径,默认在src下时的方式-->
<include file="struts-post.xml"/>
<include file="struts-user.xml"/>
<include file="struts-dept.xml"/>
<!--配置文件在具体包中时的方式-->
<include file="com/mengma/action/struts-product.xml"/>
</struts>
在上述代码中,struts.xml 文件通过 <include> 元素包括了四个配置文件,其中 file 属性用于指定被包括配置文件的全称。如果被包括的配置文件在 src 路径下,则直接指定文件名即可,如果被包括的配置文件在详细的包中,则还要引进被包括文件的包模式。
需要留意的是,每一个被包括的配置文件都是标准的 Struts2 配置文件,同样包括 DTD 信息、Struts2 配置文件的根元素等信息。由于 struts.xml 文件包括了其他的配置文件,所以在 Struts2 框架自动读取 struts.xml 文件时,就会完成所有配置信息的读取。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-119804-1.html
奥巴马政府选择了一个看似聪明的策略
虽然美国有台湾保护法