struts.xml文件中,package元素有很多子元素,其中主要的有:
一.action
拥有的属性如下:
1.name:
必需属性,作为Action的唯一标识。Action的name没必要写成后面加“.do”或者“.action”这样的后缀名形式,因为系统在运行时会默认自动搜寻后缀名为“.action”的Action,直接写成例如:“book_action”,若加了就会变成搜寻“book_action.action.action”这样格式的Action,系统将会报错。通过设置<constant name="struts.action.extension" value="do"/>
这一常量可以设置系统默认的后缀
2.class:
可选属性,在Struts2里系统主动寻找名字为name属性值的Action,找到后就根据class属性里定义的Action类路径去执行该Action类,如:
<action name="book_action" class="com.bookAction"></action>
<!-- 系统搜索到这个Action后根据映射定义的class执行bookAction类 -->
子元素<result>
二、拦截器
<interceptors>
<!-- 定义拦截器栈 -->
<interceptor-stack name="crudStack">
<interceptor-ref name="params"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
三、全局或默认属性
1.<global-results>
是全局导航页面映射定义,这些定义的<result>
是被多个Action共用的。如果一个具体的Action在<action>
里找不到定义的<result>
唯一标识,它就去寻找(匹配)<global-results>
里的<result>
唯一标识
<package name="ch01" extends="struts-default">
<!-- 全局导航页面定义 -->
<global-results>
<result name="global">/jsp/error.jsp</result>
<global-results>
<!-- 通过Action处理才导航的导航页面定义 -->
<action name="login" class="com.action.LoginAction">
<result name="success">/jsp/success.jsp</result>
<result name="error">/jsp/error.jsp</result>
</action>
<!-- 直接导航的导航页面定义 -->
<action name="index">
<result>/jsp/index.jsp</result>
</action>
</package>
2.全局异常页面定义
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error"/>
</global-exception-mappings>
3.<default-action-ref name="showcase"/>
定义默认来处理请求的Action是名为showcase的Action
4.<default-interceptor-ref name="crudStack"/>
定义默认的拦截器引用