仅仅是为了统一管理多个action元素.
格式为:
<package name="" extends="" namespace="" abstract="true|false">
可以一个模块分出一个<package>元素.
常用的属性:
name: 表示当前<package>元素的名称,多个<package>元素的name不能相同.oaPkg/crmPkg
extends: 自定义的<package>元素必须继承于struts-default包或者struts-defalt的子包.
如此一来,当前<package>元素就可以拥有父package的所有配置.
namespace: 命名空间,和action的name共同决定了一个action的访问路径.
abstract: 表示当前<package>元素是否是抽象的.
如果为true,那么当前<package>就不能定义action元素,只能用于被其他<package>所继承.
-----------------------------------------------------------------------
开发中的最佳实践:
多个package共同的配置信息:
<package name="basePkg" extends="struts-default" namespace="/" abstract="true">
<!--该package的拦截器配置--->
</package>
***********************************************************************************************
action元素:是<package>元素的子元素,用于配置Action类.
语法:<action name="" class="" method="">
常用的属性:
name: action的名称,该名称和当前action所在package的namespace共同决定了访问路径.
访问Action的格式:http://ip:port/contextPath/namsspace/actionName[.action]
注意:action名称没有/,在同一个<package>不能相同.
class: Action类的全限定名,表示把哪一个Action类交给Strtus2框架来管理.
class的默认值:com.opensymphony.xwork2.ActionSupport.
method: 当前action需要执行哪一个方法,注意:该方法必须在class对应的类中.
method的默认值:execute.
*************************************************************************************************
result元素:是<action/>元素的子元素,表示结果视图(action执行完毕跳转到哪里去).
语法格式:<result name="" type=""></result>
result元素的配置:
name属性: 唯一,表示逻辑视图名称,该名称就是action方法的返回结果.默认值:success.
type属性: 表示资源的跳转方式(请求转发/URL重定向),阅读struts-default包.默认:dispatcher
文本内容: 表示需要跳转资源的路径(从webapp下开始寻找).
result元素的type属性的常用值:
dispatcher: 请求转发:(Action请求转发到JSP),默认的.
chain: 请求转发:(Action请求转发到Action).
redirect: URL重定向:(Action重定向到JSP).
redirectAction: URL重定向:(Action重定向到Action).
stream: 文件下载使用,输入流.
-------------------------------------------------
result元素分类:
1):局部的结果视图:配置在<action>元素里面,就只能当前Action可以跳转的.
2):全局的结果视图:配置在<package>元素中的<global-results>元素里面,当前<package>的Action都可以跳转进去.
先从当前Action中去找指定名字的result,找到就跳转,找不到,再找全局的result,找到跳转,找不到,就报404 错误.