Struts2--struts.xml配置文件(常量配置、包配置、包含配置)详解

struts.xml配置

struts.xml 是 Struts2 框架的核心配置文件,该文件主要用于配置 Action 和请求的对应关系,以及配置逻辑视图和物理视图(逻辑视图就是在 struts.xml 文件中配置的 元素,它的 name 属性值就是逻辑视图名;物理视图是指 元素中配置的结果页面,如 JSP 文件)资源的对应关系。

struts.xml 文件通常放在 Web 应用的 WEB-INF/classes 目录下,在该目录下的 struts.xml 文件可以被 Struts2 框架自动加载。由于 MyEclipse 开发工具在编译时会自动将 src 路径下的 struts.xml 文件编译后放到 WEB-INF/classes 路径下,所以直接将其放到项目的 src 路径下即可。

示例:

<?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>元素用于包配置:
			name:包名,随便起,起到标识作用,不能与其他包名重复
			namespace:给action的访问路径中定义一个命名空间
			extends:继承一个指定包,struts-default(Struts2内置配置文件)
			abstract:包是否为抽象的,标识性属性,标识该包不能独立运行,专门被继承,默认为false
	-->
    <package name="default" namespace="/" extends="struts-default">
        <!--
        	配置Action:
        		name:决定了Action访问资源名
        		class:action的完整类名
        		method:指定调用action中的哪个方法来处理请求
        -->
        <action name="index" class="xxx.xxx.xxx" method="xxx.method"/>
            <!--
            	配置Result:
            		name:标识结果处理的名称。与action返回值对应
            		type:制定调用哪个result类来处理结果,默认使用转发
            -->
            <result name="result" type="dispatcher">
                <param name="location">/index.jsp</param>
            </result>
        </action>
    </package>
    <!-- <include>元素用于包含配置 -->
    <include file="example.xml"/>
</struts>

在上述文件中,元素说明如下:

  • < struts > 元素是文件的根元素,所有其他元素都放在 < struts ></ struts > 中。
  • < constant > 元素用于进行常量配置。
  • < package > 元素用于进行包配置,在 Struts2 框架中,包用于组织 Action 和拦截器等信息,每个包都是由零个或多个拦截器以及 Action 所组成的集合。
  • < include > 元素用于在一个 struts.xml 配置文件中包含其他的配置文件。
常量配置

在使用 Struts2 框架开发的项目中,通常需要使用大量的常量,这些常量大多在默认的配置文件中已经配置好,但由于用户的需求不同,开发的要求也有所不同,这时可能就需要对这些常量值进行修改,其修改的方法就是在配置文件中对常量进行重新配置。

在 Struts2 中,常量的配置通常使用以下三种方式:

  • 在 struts.xml 文件中使用 < constant > 元素配置常量(常用方式)。
  • 在 struts.properties 文件中配置常量。
  • 在 web.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>

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 框架中,包用于管理 Action 和拦截器,每个包就是多个 Action、多个拦截器、多个拦截器引用的集合。在 struts.xml 文件中,使用 元素定义包配置,每个 元素都定义了一个包配置,其示例代码下所示:

<package name="default" namespace="/" extends="struts-default">
    ...
</package>
  • name:必填属性,用于指定该包的名称(该名称在配置文件中必须是唯一的),此名称是该包被其他包引用的 Key。
  • namespace:可选属性,用于定义该包的命名空间。
  • extends:可选属性,用于指定该包继承自其他包。其属性值必须是另一个包的 name 属性值,但该属性值通常都设置为 struts-default,这样该包中的 Action 就具有了 Struts2 框架默认的拦截器等功能。
包含配置

Struts2 允许将一个配置文件分解成多个配置文件,从而提高配置文件的可读性, 元素用于在一个 struts.xml 配置文件中包含其他的配置文件。Struts2 默认只加载 WEB-INF/classes 下的 struts.xml 文件,一旦通过多个 XML 文件配置 Action,就必须通过 元素包含其他配置文件。

<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 文件通过 元素包含了四个配置文件,其中 file 属性用于指定被包含配置文件的名称。如果被包含的配置文件在 src 路径下,则直接指定文件名即可,如果被包含的配置文件在具体的包中,则需要引入被包含文件的包路径。

注意:每一个被包含的配置文件都是标准的 Struts2 配置文件,同样包含 DTD 信息、Struts2 配置文件的根元素等信息。由于 struts.xml 文件包含了其他的配置文件,所以在 Struts2 框架自动加载 struts.xml 文件时,就会完成所有配置信息的加载。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值