读书人

Struts全局错误处理-拦截器+监听器配置

发布时间: 2012-09-01 09:33:03 作者: rapoo

Struts全局异常处理---拦截器+监听器配置
1、配置

<!-- 定义一个拦截器 -->        <interceptors>            <interceptor name="showException"                />                <interceptor-ref name="showException" />            </interceptor-stack>        </interceptors>        <default-interceptor-ref name="mydefault" />        <!-- 定义全局处理结果 -->        <global-results>            <!-- 逻辑名为login的结果,映射到/login.jsp页面 -->            <result name="login" type="freemarker">                /WEB-INF/templates/admin/login.ftl            </result>            <result name="noSecurity" type="freemarker">                /WEB-INF/templates/noSecurity.ftl            </result>            <result name="error" type="dispatcher">                error.jsp            </result>        </global-results>        <global-exception-mappings>            <exception-mapping result="error" name="error"                exception="com.yihaodian.pis.util.ShowException"></exception-mapping>        </global-exception-mappings> 
2、自定义异常:
package com.yihaodian.pis.util;public class ShowException extends Exception{    private static final long serialVersionUID = 0xc1a865c45ffdc5f9L;    public ShowException(String frdMessage)    {        super(createFriendlyErrMsg(frdMessage));           }    public ShowException(Throwable throwable)    {        super(throwable);    }    public ShowException(Throwable throwable, String frdMessage)    {        super(throwable);    }    private static String createFriendlyErrMsg(String msgBody) {        String prefixStr = "抱歉,";        String suffixStr = " 请稍后再试或与管理员联系!";        StringBuffer friendlyErrMsg = new StringBuffer("");        friendlyErrMsg.append(prefixStr);        friendlyErrMsg.append(msgBody);        friendlyErrMsg.append(suffixStr);        return friendlyErrMsg.toString();    }}
?

?

3、拦截器

?

public class ShowExceptionIterceptor extends  AbstractInterceptor{    /*     * (non-Javadoc)     *     * @see     * com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com     * .opensymphony.xwork2.ActionInvocation)     */    @Override    public String intercept(ActionInvocation invocation) throws Exception {               String result=null;        ActionSupport actionSupport= (ActionSupport) invocation.getAction();        try {            invocation.addPreResultListener(new MyListener());            System.out.println("拦截器之前");            result=invocation.invoke();            System.out.println("拦截器之后");                   }catch(Exception e){            System.out.println("异常身上所说是谁是谁身上收拾收拾"+e.getMessage());            actionSupport.addActionError(e.getMessage());            return Action.ERROR;        }        return result;    }}
?4、页面显示
<%@ page contentType="text/html;charset=UTF-8" language="java"%><%@ include file="../../webpage/include/mytaglib.jsp"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /><title>1号店智能定价系统</title></head><body><h2>出现异常啦</h2><s:if test="hasActionErrors()"><div><span><s:iterator value="actionErrors"><s:property/></s:iterator></span></div></s:if></body></html>
?

?

5、监听器(可有可无)
package com.yihaodian.pis.interceptor;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.PreResultListener;public class MyListener implements PreResultListener{    public void beforeResult(ActionInvocation invocation, String resultCode) {        System.out.println("监听器:"+resultCode);    }}
?

?

有不懂的可以联系QQ526151410解决。。。。

读书人网 >软件架构设计

热点推荐