package 属性是用来实现继承的
namespace 是用来解决重名的
比如
<package name="a" namespace="/a" extends="default"> <package name="b" namespace="/b" extends="default">
这样在两个包里都有test Action
时在url
地址中用/a/test
或/b/test
就能区分开了。
上面是不同 package , 不同namespace 的情景。
当出现 不同 package , 相同namespace 的两个action 配置时,比如下面的配置
<package name="a" namespace="/json" extends="default"> <package name="b" namespace="/json" extends="default">
struts 会随机加载其中的一个配置,会出现在 不同环境 加载的配置不同的情况。当用 / json /test 访问时,就会出现在有的环境跳到的是 a 包下的配置,有时跳到的是 b 包下的配置。具体原因没有深入研究。
当出现 相同 package , 相同namespace 的两个action 配置时,比如下面的配置
<package name="a" namespace="/json" extends="default"> <action name="test_*" method="{1}" class="testAction"> <package name="a" namespace="/json" extends="default"> <action name="test_*" method="{1}" class="testAction1">
struts 会随机加载其中的一个配置,会出现在 不同环境 加载的配置不同的情况。当用 / json /test 访问时,就会出现在有的环境跳到的是 a action 下的配置,有时跳到的是 b action 下的配置。具体原因没有深入研究。