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解决。。。。