您的位置:首页 > 编程语言 > Java开发

SpringMVC项目使用log4j

2016-10-25 11:57 190 查看
简介:在SpringMVC项目中,所有的异常都抛至Controller,然后在Controller统一用一工具类ExceptionHandler进行处理。

第一步:编写BaseController(所有的Controller都要继承这一BaseController)

//所有的Controller继承后都会有一个logger对象
public class BaseController<T extends Object> {

protected Logger logger = Logger.getLogger(this.getClass());

//异常类型的错误集合
private List<String> actionError = new ArrayList<String>();

//字段类型的错误集合
private Map<String,String> fieldError = new HashMap<String, String>();

public List<String> getActionError() {
return actionError;
}

public Map<String, String> getFieldError() {
return fieldError;
}

public void addActionError(String value){
actionError.add(value);
}

public void addFieldError(String key,String value){
fieldError.put(key, value);
}

}


第二步:编写工具类

/**
* Controller中异常处理
*/
public class ExceptionHandler {

/**
* 异常处理
* @param logger
* @param baseController
* @param e
* @param request
* @param errorMessage
*/
public static String handle(Logger logger,BaseController baseController,Exception e,HttpServletRequest request,String errorMessage,String errorPage){
logger.error(errorMessage, e);
baseController.addActionError(errorMessage);

request.setAttribute(ErrorConstants.ACTION_ERROR, baseController.getActionError());
request.setAttribute(ErrorConstants.FIELDE_RROR, baseController.getFieldError());

return errorPage;
}

/**
* ajax异常处理
* @param logger
* @param e
* @param errorMessage
* @return
*/
public static void handle(Logger logger,Exception e,String errorMessage){
logger.error(errorMessage, e);

Map<String, Object> map = new HashMap<String, Object>();
map.put(Constants.CODE, Constants.CODE_VALUE_FAILURE);
}
}


第三步:如何使用

public class InventoryController extends BaseController<Inventory> {
public String inventoryList(int page,int size,Inventory t,HttpServletRequest request){
try {
PageBean<Inventory> inventories = inventoryService.getAllEntity(t, size, page);
request.setAttribute("inventories", inventories);
} catch (BaseServiceException e) {
ExceptionHandler.handle(logger, e, "项目查询失败");
}
return "admmodular/inventoryList";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息