首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts通用Exception处置

2012-11-15 
struts通用Exception处理struts通用Exception处理 自定义一个Exception类继承自RunTimeException,定义属性

struts通用Exception处理
struts通用Exception处理
自定义一个Exception类继承自RunTimeException,定义属性key、values等,并实现多个构造方法用于初始化。
如:

private String key; private Object values; //带key和参数 public SystemException(String message,String key,Object value){   super(message);   this.key=key;   this.values=new Object[]{value}; } //带key和参数数组 public SystemException(String message,String key,Object values[]){   super(message);   this.key=key;   this.values=values; } public SystemException(String message,String key) {   super(message); } 


struts-config.xml配置
  <global-exceptions>
  <!-- 全局异常 -->
   <exception key="error" type="java.lang.Exception" path="/common/error.jsp" />
  </global-exceptions>
在ExceptionHandler中实现附加参数等处理,如SystemExceptionHandler继承ExceptionHandler重写execute方法:

public ActionForward execute(Exception ex, ExceptionConfig ec,    ActionMapping mapping,    ActionForm form,    HttpServletRequest request,    HttpServletResponse response) throws ServletException {   ActionForward forward=null;   if(ec.getPath()!=null){    forward=new ActionForward(ec.getPath());   }else{    forward=mapping.getInputForward();   }   logger.debug("出现异常",ex);   if (ex instanceof SystemException) {    SystemException se = (SystemException) ex;    String key=se.getKey();    ActionMessage error=null;    if(key==null){     //无参,输入message     error=new ActionMessage(key,se.getMessage());    }else{     if(se.getValues()!=null){      //带参      error=new ActionMessage(key,se.getValues());     }else{      //不带参      error=new ActionMessage(key);     }    }      //置error入 collection under Globals.ERROR_KEY.    this.storeException(request, key, error, forward, ec.getScope());    return forward;   }     //默认 Handle the Exception.   //Return the ActionForward instance (if any) returned by the called ExceptionHandler   return super.execute(ex, ec, mapping, form, request, response);   } 

热点排行