<!--struts2默认配置-->
<!--文件约束对于的键值对的键-->
<struts>
<!--配置bean-->
<bean class="com.opensymphony.xwork2.ObjectFactory" name="xwork" />
<bean type="com.opensymphony.xwork2.ObjectFactory" name="struts" class="org.apache.struts2.impl.StrutsObjectFactory" />
<!--定义bean-->
<bean type="com.opensymphony.xwork2.ActionProxyFactory" name="xwork" class="com.opensymphony.xwork2.DefaultActionProxyFactory"/>
<bean type="com.opensymphony.xwork2.ActionProxyFactory" name="struts" class="org.apache.struts2.impl.StrutsActionProxyFactory"/>
<bean type="com.opensymphony.xwork2.FileManager" class="com.opensymphony.xwork2.util.fs.DefaultFileManager" name="system" scope="singleton"/>
<!-- 笨拙的解决ognl,因为目前没有一种刷新页面的方式,有待于以后框架开发者的完善-->
<bean type="ognl.PropertyAccessor" name="java.util.ArrayList" class="com.opensymphony.xwork2.ognl.accessor.XWorkListPropertyAccessor" />
<bean type="ognl.PropertyAccessor" name="java.util.HashSet" class="com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor" />
<bean type="ognl.PropertyAccessor" name="java.util.HashMap" class="com.opensymphony.xwork2.ognl.accessor.XWorkMapPropertyAccessor" />
<!--默认继承的struts2的配置包-->
<package name="struts-default" abstract="true">
<result-types>
<!--所有结果类型:对应的实体类-->
</result-types>
<!--配置拦截器以及拦截器栈-->
<interceptors>
<!--所有拦截器的配置:关联的实体类-->
<interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/>
......
<!-- 基本配置的一个基栈 -->
<interceptor-stack name="basicStack">
......
</interceptor-stack>
<!-- 验证器和工作流的栈的例子 -->
<interceptor-stack name="validationWorkflowStack">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
<!--文件上传的栈的例子-->
<interceptor-stack name="fileUploadStack">
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
<!-- model-driven 拦截器栈的例子 -->
<interceptor-stack name="modelDrivenStack">
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
<!-- 转发到一个Action的栈的例子 -->
<interceptor-stack name="chainStack">
<interceptor-ref name="chain"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
<!--国际化例子的栈: i18n stack -->
<interceptor-stack name="i18nStack">
<interceptor-ref name="i18n"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
//常用的拦截器栈
<interceptor-stack name="paramsPrepareParamsStack">
......
</interceptor-stack>
//默认的拦截器栈
<interceptor-stack name="defaultStack">
...
</interceptor-stack>
//completeStack指向默认的拦截器栈
<interceptor-stack name="completeStack">
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
//特殊的拦截器栈:executeAndWaitStack
<interceptor-stack name="executeAndWaitStack">
<interceptor-ref name="execAndWait">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="execAndWait">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<!--引用默认的拦截器栈-->
<default-interceptor-ref name="defaultStack"/>
<!--默认的处理类-->
<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
</package>
</struts>