转自: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
1 <?xml version="1.0" encoding="GBK"?> 2 <!-- 指定Struts 2配置文件的DTD信息 --> 3 <!DOCTYPE struts PUBLIC 4 "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" 5 "http://struts.apache.org/dtds/struts-2.1.7.dtd"> 6 7 <!-- Struts 2配置文件的根元素 --> 8 <struts> 9 <!-- 配置了系列常量 --> 10 <constant name="struts.i18n.encoding" value="GBK"/> 11 <constant name="struts.devMode" value="true"/> 12 13 <package name="shop-default" abstract="true" extends="struts-default"> 14 <global-results> 15 <!-- 错误页面 --> 16 <result name="error">/show_error.jsp</result> 17 <!-- 程序主页面 --> 18 <result name="index" type="redirectAction">index</result> 19 <!-- 后台管理主页面 --> 20 <result name="manager">/main.jsp</result> 21 <!--会员注册 --> 22 <result name="reg">/WEB-INF/pages/user/customer_reg.jsp</result> 23 <!--会员登录--> 24 <result name="customerLogin">/WEB-INF/pages/user/customer_login.jsp</result> 25 <!--管理员登录--> 26 <result name="userLogin">/WEB-INF/pages/admin/user/user_login.jsp</result> 27 </global-results> 28 <global-exception-mappings> 29 <exception-mapping result="error" exception="com.lyq.util.AppException"></exception-mapping> 30 </global-exception-mappings> 31 </package> 32 33 34 <package name="xqh" extends="shop-default"> 35 <!-- 定义一个拦截器 --> 36 <interceptors> 37 <interceptor name="authority" class="com.xqh.interpector.LoginInterceptor"> 38 </interceptor> 39 <interceptor-stack name="mydefault"> 40 <interceptor-ref name="defaultStack"></interceptor-ref> 41 <interceptor-ref name="authority"></interceptor-ref> 42 </interceptor-stack> 43 </interceptors> 44 45 <!-- 定义处理用户请求的Action,指定该Action的实现类--> 46 <action name="registPro" class="com.xqh.action.RegistAction"> 47 <result name="error">/error.jsp</result> 48 <result name="success">/welcome.jsp</result> 49 </action> 50 51 <action name="showPro" class="com.xqh.action.ShowAction"> 52 <!-- 使用此拦截器 --> 53 <interceptor-ref name="mydefault" /> 54 <result name="login">/login.jsp</result> 55 <result name="success">/show.jsp</result> 56 </action> 57 58 <!-- 让用户直接访问该应用时列出所有视图页面 --> 59 <action name="*"> 60 <result>/{1}.jsp</result> 61 </action> 62 </package> 63 </struts>