Spring 注解学习手札(八)补遗——@ExceptionHandler
2016-08-25 14:32
417 查看
Spring注解,改变了我的开发思路。前段时间,用@RequestBody,@ResponseBody,不费吹灰之力就解决了JSon自动绑定。接着就发现,如果遇到RuntimeException,需要给出一个默认返回JSON。
以前都是用SimpleMappingExceptionResolver拦截实现,今天偶尔看下资料,@ExceptionHandler,就把这个异常给拦截了,太方便了!
相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler
直接上代码:
Java代码
@Controller
public class AccessController {
/**
* 异常页面控制
*
* @param runtimeException
* @return
*/
@ExceptionHandler(RuntimeException.class)
public @ResponseBody
Map<String,Object> runtimeExceptionHandler(RuntimeException runtimeException) {
logger.error(runtimeException.getLocalizedMessage());
Map model = new TreeMap();
model.put("status", false);
return model;
}
}
当这个Controller中任何一个方法发生异常,一定会被这个方法拦截到。然后,输出日志。封装Map并返回,页面上得到status为false。就这么简单。
或者这个有些有些复杂,来个简单易懂的,上代码:
Java代码
@Controller
public class AccessController {
/**
* 异常页面控制
*
* @param runtimeException
* @return
*/
@ExceptionHandler(RuntimeException.class)
public String runtimeExceptionHandler(RuntimeException runtimeException,
ModelMap modelMap) {
logger.error(runtimeException.getLocalizedMessage());
modelMap.put("status", IntegralConstant.FAIL_STATUS);
return "exception";
}
}
以前都是用SimpleMappingExceptionResolver拦截实现,今天偶尔看下资料,@ExceptionHandler,就把这个异常给拦截了,太方便了!
相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler
直接上代码:
Java代码
@Controller
public class AccessController {
/**
* 异常页面控制
*
* @param runtimeException
* @return
*/
@ExceptionHandler(RuntimeException.class)
public @ResponseBody
Map<String,Object> runtimeExceptionHandler(RuntimeException runtimeException) {
logger.error(runtimeException.getLocalizedMessage());
Map model = new TreeMap();
model.put("status", false);
return model;
}
}
当这个Controller中任何一个方法发生异常,一定会被这个方法拦截到。然后,输出日志。封装Map并返回,页面上得到status为false。就这么简单。
或者这个有些有些复杂,来个简单易懂的,上代码:
Java代码
@Controller
public class AccessController {
/**
* 异常页面控制
*
* @param runtimeException
* @return
*/
@ExceptionHandler(RuntimeException.class)
public String runtimeExceptionHandler(RuntimeException runtimeException,
ModelMap modelMap) {
logger.error(runtimeException.getLocalizedMessage());
modelMap.put("status", IntegralConstant.FAIL_STATUS);
return "exception";
}
}
相关文章推荐
- Spring 注解学习手札(八)补遗——@ExceptionHandler
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(八)补遗——@ExceptionHandler
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(八)补遗——@ExceptionHandler
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(八) 补遗——@ExceptionHandler
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(八)补遗——@ExceptionHandler