使用这种形式的全局异常跳转,记录日志得写在jsp页面上
<global-exception-mappings> <exception-mapping result="error" exception="java.lang.Exception">/errorPage.jsp </exception-mapping> </global-exception-mappings>
所以自定义一个拦截器,再拦截器里记录异常
<package name="basePriv" extends="struts-default"> <interceptors> <interceptor name="exceptionInterceptor" class="com.hanpeng.b2c.phone.priv.ExceptionInterceptor"/> <interceptor-stack name="b2cplatPrivInterceptor"> <interceptor-ref name="exceptionInterceptor"/> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="b2cplatPrivInterceptor"/> <global-results> <result name="error">/error.jsp</result> </global-results> </package>
拦截器实现
package com.hanpeng.b2c.phone.priv;
import org.apache.log4j.Logger;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class ExceptionInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1008901298342362080L;
private static final Logger log = Logger
.getLogger(ExceptionInterceptor.class);
@Override
public String intercept(ActionInvocation invocation) throws Exception {
String actionName = invocation.getInvocationContext().getName();
try {
String result = invocation.invoke();
return result;
} catch (Exception e) {
log.error(actionName, e);
return "error";
}
}
}