struts2异常处理,global-results定义全局结果处理

COME FROM
<global-results>定义全局结果处理

一般发生异常之后 结果返回errHandler
因为errHandler是由<global-exception-mappings>关联到Exception这个类了
然后处理结果
 <result name="errHandler" type="chain">
然后它就根据
<param name="actionName">errorProcessor</param>
找action
<action name="errorProcessor" class="cn.itcast.sh.error.ErrorProcess">
             <result>/error.jsp</result>
  </action>
处理了 然后 返回到 error.jsp
 
 

在struts.xml中

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>
 2    <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <constant name="struts.devMode" value="true" />
 7     <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
 8     <!-- <constant name="struts.custom.i18n.resources" value="itcast"></constant> -->
 9     <package name="struts-global" namespace="/" extends="struts-default">
10         <global-results>
11             <result name="errHandler" type="chain">
12                 <param name="actionName">errorProcessor</param>
13             </result>
14         </global-results>
15         <global-exception-mappings>
16             <exception-mapping result="errHandler" exception="java.lang.Exception">
17             </exception-mapping>
18         </global-exception-mappings>
19         
20         <action name="errorProcessor" class="cn.itcast.sh.error.ErrorProcess">
21             <result>/error.jsp</result>
22         </action>
23     </package>
复制代码

然后其他包都继承它 就默认使用了其中定义的 错误处理

然后实现 类

class="cn.itcast.sh.error.ErrorProcess"
复制代码
 1 package cn.itcast.sh.error;
 2 
 3 import com.opensymphony.xwork2.ActionContext;
 4 import com.opensymphony.xwork2.ActionSupport;
 5 
 6 public class ErrorProcess extends ActionSupport {
 7     private Exception exception;
 8 
 9     public Exception getException() {
10         return exception;
11     }
12 
13     public void setException(Exception exception) {
14         this.exception = exception;
15     }
16     @Override
17     public String execute()
18     {
19         ActionContext.getContext().getValueStack().push(this.exception.getMessage());      //放到值栈顶
20         return this.SUCCESS;
21     }
22 }
复制代码

 

例子

struts.xml配置

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>
 2    <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <constant name="struts.devMode" value="true" />
 7     <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
 8     <!-- <constant name="struts.custom.i18n.resources" value="itcast"></constant> -->
 9     <package name="struts-global" namespace="/" extends="struts-default">
10         <global-results>
11             <result name="errHandler" type="chain">
12                 <param name="actionName">errorProcessor</param>
13             </result>
14         </global-results>
15         <global-exception-mappings>
16             <exception-mapping result="errHandler" exception="java.lang.Exception">
17             </exception-mapping>
18         </global-exception-mappings>
19         
20         <action name="errorProcessor" class="cn.itcast.sh.error.ErrorProcess">
21             <result>/error.jsp</result>
22         </action>
23     </package>
24     <include file="struts-user.xml"></include>
25     <include file="struts-login.xml"></include>
26 </struts>
复制代码
struts-user.xml中
复制代码
 1 <?xml version="1.0" encoding="utf-8"?>
 2    <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <package name="user" namespace="/" extends="struts-global">
 7         <action name="UserAction_*" method="{1}" class="cn.itcast.sh.action.UserAction">
 8             <result name="userList">/user/list.jsp</result>
 9         </action>
10     </package>
11 </struts>
复制代码

然后 如果页面异常 都会转向 error.jsp中 显示

error.jsp可以进行错误显示

因为信息被放到栈顶了 所以可以取到

<s:property />

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值