Struts2系列:Struts2配置文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2系列:Struts2配置文件相关的知识,希望对你有一定的参考价值。



Struts2默认的配置文件为struts.xml,该文件需放在当前工程(Project)的src下,部署时会被放到在WEB-INF/classes目录下。


在一篇文章中,提到一个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 name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <package name="default" namespace="/" extends="struts-default">
        <action name="HelloWorld" class="com.rk.struts2.a_basic.HelloWorld">
            <result name="success">
                /Success.jsp
            </result>
        </action>
    </package>
</struts>

接下来,本文将按下图中的(1)(2)(3)(4)顺序来介绍struts的配置文件。

技术分享

1、struts-default

(1-1)struts-default包是struts内置的,定义了struts2内部的众多拦截器和Result类型。Struts2很多核心的功能都是通过这些内置的拦截器实现,例如文件上传和数据验证等等都是通过拦截器实现的。

(1-2)当包(package)继承struts-default包才能使用struts2提供的这些功能。

(2-1)struts-default包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定义。 


技术分享

(2-2)struts-default.xml也是Struts2默认配置文件。 Struts2每次都会自动加载 struts-default.xml文件。

(2-3)包可通过abstract=“true”定义为抽象包,该包不能包含action。

技术分享


2、package

技术分享

(1)Struts2 把各种 Action 分门别类地组织成不同的包(package)。

(2)一个典型的 struts.xml 文件可以有一个或多个包(package)。

(3)每个 package 元素都必须有一个 name 属性。

(4)namespace 可选, 如没有给出, 则以 “/” 为默认值. 若 namespace 有一个非默认值, 调用这个包(package)里的Action, 须把这个属性所定义的命名空间添加到有关的 URI 字符串里。

(5)package 元素通常要对 struts-default.xml 文件里定义的 struts-default包进行扩展。这样,包(package)里的所有Action就可使用在 struts-default.xml 文件里定义的result类型和拦截器. 




3、action

技术分享

(1)action 元素嵌套在 package内, 表示一个 Struts请求. 

(2)每个 action 必须有一个 name 属性, 该属性和用户请求路径间存在一一对应关系

(3)action 元素的 class 属性是可选的。 如没配置 class 属性, Struts 将把 com.opensymphony.xwork2.ActionSupport 作为默认值。如配置了 class 属性,可以使用method属性配置该类的一个动作方法. method属性的默认值为execute。



4、result

技术分享

(1)result元素是<action>的一个子元素, 指导struts在完成action后控制权转向。

(2)name属性。result元素name属性对应着Action方法返回值。因method方法在不同情况下可能返回不同的值, 所以同一个action元素可有多个 result元素。

(3)type属性。result元素的type属性负责指定结果类型。type属性的值必须是在包含当前包或者是当前包的父包里注册过的结果类型。type 属性的默认值为dispatcher。

(4)name属性的默认值。result元素的name属性建立<result>和Action方法返回值之间的映射关系。name属性的默认值为 “success”。











以上是关于Struts2系列:Struts2配置文件的主要内容,如果未能解决你的问题,请参考以下文章

Struts2系列:使用多个struts配置文件

Struts2-学习笔记系列-常量配置和实现action

Struts2系列:(14)Struts2验证

Struts2-命令-代码执行突破分析系列S2-015

Struts2系列——struts2的result

struts2的配置