springmvc異常統一處理

全部錯誤統一處理,不論dao層,service層,controller層都層層向向上拋, 具體實現以下spring

1. spring提供的類SimpleMappingExceptionResolverapp

2. spring接口HandlerExceptionResolverxml

3. spring註解ExceptionHandler繼承

具體實現例子接口

1.1   繼承類SimpleMappingExceptionResolver 並初始化相關參數io

1.2   在applicationContext.xml 上SimpleMappingExceptionResolver配置對應的bean和相關參數class

2.1   實現HandlerExceptionResolver接口配置

@Componentmodel

public class MyExceptionHandler implements HandlerExceptionResolver {  
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,  Exception ex) {  
        Map<String, Object> model = new HashMap<String, Object>();  
        model.put("ex", ex);   
        if(ex instanceof BusinessException) {  
            return new ModelAndView("error-business", model);  
        }else if(ex instanceof ParameterException) {  
            return new ModelAndView("error-parameter", model);  
        } else {  
            return new ModelAndView("error", model);  
        }  
    }  
}            service

3.1    自定義一個基類的業務上加入@ExceptionHandler,內容和2.1相同,其餘Controller繼承此基類
public class BaseController {
    @ExceptionHandler  
    public String exp(HttpServletRequest request, Exception ex) {  
        request.setAttribute("ex", ex);  
        if(ex instanceof BusinessException) {  
            return "error-business";  
        }else if(ex instanceof ParameterException) {  
            return "error-parameter";  
        } else {  
            return "error";  
        }  
    }  
}

public class OtherController extends BaseController

相關文章
相關標籤/搜索