struts2 action异常处理

我们在使用struts2 时经常会有这样的需求

1.要有一个统一的异常处理

2.针对某个 action 要有一个单独的异常处理


先来说需求一

很好解决我们可以使用﹤global-exception-mappings﹥

例:

       <global-results>
            <result name="exception">/exception.jsp</result>
            <result name="login" type="redirect" >/index.jsp</result>
            <result name="input">/exception.jsp</result>
        </global-results>
        
        <global-exception-mappings>
            <exception-mapping result="exception" exception="java.lang.Exception"/>
        </global-exception-mappings>

再来说一个需求二

我们可以使用 :局部异常映射:﹤exception-mapping…﹥元素作为﹤action…﹥元素的子元素配置。

具体来说我们可以定一个异常处理action专门处理某个action的异常

例:

<struts>
    <package name="report" extends="json-default">
        <interceptors>
            <interceptor-stack name="mydefault">
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="mydefault" />

        <!-- 保存选中要过滤的userid -->
        <action name="reportAction"  class="xxxxx.xxxx.ReportAction" >
            <result type="json">  
                <param name="root">result</param>  
            </result>
            <!-- 异常处理-->
            <result name="all" type="chain">error</result>
            <exception-mapping result="all" exception="java.lang.Exception"/>
        </action>
        
        <action name="error" class="xxxx.xxxx.ErrorAction">
               <result name="error"></result>  
           </action>

    </package>
</struts>

下面是ErrorAction的定义,你就可以在ErrorAction中为所欲为啦!!!!特别是处理ajax请求的统一异常处理

public class ErrorAction extends ActionSupport{
    private static final long serialVersionUID = 1L;
    Logger logger = Logger.getLogger(ErrorAction.class);
    @Override
    public String execute() throws Exception {
        logger.error("Action Error ===> "+ActionContext.getContext().getValueStack()
        .findValue("exceptionStack"));

       // logger.error("Action Error ===> "+ActionContext.getContext().getValueStack()
       // .findValue("exception"));


        return ERROR;
    }
}


另需求二也可以应用到需求一上,这样就可以定义一个处理全局 action 异常的统一处理类了

























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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值