转自:https://blog.csdn.net/u013161278/article/details/41855273

如果我们所有的action均有可能跳到相同的页面,则不妨使用全局result。为了方便引用我们专门建立一个package来存放公共的result。在会用到个全局的跳转时,只需要把继承自这个公共的package即可。

建立公共包,代码如下:

<package name="pubResult" extends="struts-default" abstract="true">

<global-results>

<result name="error">/error.jsp</result>

</global-results>

</package>

由于它下面没的action配置,所以我们可以像默认的struts-default 包一样,声明abstract=true,这样声明表示此packgage下不会有action,它一般是用来让别的package继承。随后再在要用到 全局result中引用这个公共的package。代码如下:

<package name="testGlobal" extends="pubResult" >

<action name="error" class="com.asm.ErrorAction"></action>

<action name="error2" class="com.asm.Error2Action"></action>

</package>这样操作相当于把全局的result加到了此package下的所有action中去。

 
 
struts.xml
 <?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd"> <!-- Struts 2配置文件的根元素 -->
<struts>
<!-- 配置了系列常量 -->
<constant name="struts.i18n.encoding" value="GBK"/>
<constant name="struts.devMode" value="true"/> <package name="shop-default" abstract="true" extends="struts-default">
<global-results>
<!-- 错误页面 -->
<result name="error">/show_error.jsp</result>
<!-- 程序主页面 -->
<result name="index" type="redirectAction">index</result>
<!-- 后台管理主页面 -->
<result name="manager">/main.jsp</result>
<!--会员注册 -->
<result name="reg">/WEB-INF/pages/user/customer_reg.jsp</result>
<!--会员登录-->
<result name="customerLogin">/WEB-INF/pages/user/customer_login.jsp</result>
<!--管理员登录-->
<result name="userLogin">/WEB-INF/pages/admin/user/user_login.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error" exception="com.lyq.util.AppException"></exception-mapping>
</global-exception-mappings>
</package> <package name="xqh" extends="shop-default">
<!-- 定义一个拦截器 -->
<interceptors>
<interceptor name="authority" class="com.xqh.interpector.LoginInterceptor">
</interceptor>
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="authority"></interceptor-ref>
</interceptor-stack>
</interceptors> <!-- 定义处理用户请求的Action,指定该Action的实现类-->
<action name="registPro" class="com.xqh.action.RegistAction">
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action> <action name="showPro" class="com.xqh.action.ShowAction">
<!-- 使用此拦截器 -->
<interceptor-ref name="mydefault" />
<result name="login">/login.jsp</result>
<result name="success">/show.jsp</result>
</action> <!-- 让用户直接访问该应用时列出所有视图页面 -->
<action name="*">
<result>/{1}.jsp</result>
</action>
</package>
</struts>
05-19 22:15