package 元素的所有属性及对应功能
Attribute | Required | Description |
---|
name | yes | key to for other packages to reference ---任意的包名称,用来让别的包继承是使用不能重复 |
extends | no | inherits package behavior of the package it extends -----当前包所要继承的父包,继承之后,当前包拥有父包中所定义的任意类、拦截器等 |
namespace | no | 用于区分包中相同的类,例子见下。 |
abstract | no | declares package to be abstract (no action configurations required in package)定义当前包为一个抽象的包(不能有action元素在当前包中) |
<struts>
<package name="abc" extends="struts-default">
<action name="login" class="com.jpioneer.action.Login">
<result>/success.jsp</result>
</action>
<action name="login1" class="com.jpioneer.action.Login">
<result>/success.jsp</result>
</action>
</package>
<package name="abc1" extends="struts-default" namespace="/kfc">
<action name="login" class="com.jpioneer.action.Login">
<result>/aa.jsp</result>
</action>
</package>
</struts>
包abc没有填写namespace属性说明包abc为默认空间
包abc1填写namespace属性那么包abc1的空间就为/kfc
现在有两个请求,都是请求login的:
1、/工程名/login.action------这个请求abc包下的action name=login的有效
2、/工程名/kfc/login.action-----这个请求abc1包下的action name=login有效
3、/工程名/kfc/login1.action----这个请求很明显是请求abc1这个包下的信息的,但是struts在检索了abc1包下的所有action后没有检索到当前请求的login1,这时struts会检索默认空间下是否有当前请求,检查abc下发现存在login1就得到当前检索。