Struts2中的package

在Struts2的配置文件(Struts.xml)中,package(包)是一个经常被用到的东西。与编程语言中的package一样,Struts2配置中的package也是一种对逻辑单元进行分门别类的方法。这些可被分门别类进行模块化组织的逻辑单元包括:Action、Result、Result Type、Interceptor和Interceptor-Stacks。和面向对象编程中的Class(类)相似,Struts2配置中的package可以从另外一个package处继承。

package示例

以下是一个在Struts2中使用package的例子:

<struts>  
  <package name="default" namespace="/" extends="struts-default">
    <action name="Action1" class="com.lifelaf.blog.Action1">
      <result>/action1Result.jsp</result>
    </action>
    <action ...>
      ...
    </action>
    ...
  </package>

  <package name="demo" namespace="/demo" extends="struts-default">
    <action>
      ...
    </action>
    ...
  </package>
</struts>  

package标签的属性

Struts2配置文件中,package标签有4个属性:

  • name。package标签的必需属性,可被其它package引用。
  • extends。可选属性,定义当前package的行为从另一个package处继承。值得注意的是,Struts2配置文件的解析是顺序进行的,因此被继承的package必须在当前package之前定义。
  • namespace。可选属性,定义当前package的模块路径。
  • abstract。可选属性,定义当前package是否为抽象包。如果是抽象包,则意味着当前package仅供继承用,其内部不需要Action定义。