Spring注解,改变了我的开发思路。前段时间,用
@RequestBody
,
@ResponseBody
,不费吹灰之力就解决了JSon自动绑定。接着就发现,如果遇到
RuntimeException
,需要给出一个默认返回JSON。
当这个Controller中任何一个方法发生异常,一定会被这个方法拦截到。然后,输出日志。封装Map并返回,页面上得到status为false。就这么简单。
或者这个有些有些复杂,来个简单易懂的,上代码:
以前都是用SimpleMappingExceptionResolver拦截实现,今天偶尔看下资料,@ExceptionHandler,就把这个异常给拦截了,太方便了!
直接上代码:
- @Controller
- publicclassAccessController{
- /**
- *异常页面控制
- *
- *@paramruntimeException
- *@return
- */
- @ExceptionHandler(RuntimeException.class)
- public@ResponseBody
- Map<String,Object>runtimeExceptionHandler(RuntimeExceptionruntimeException){
- logger.error(runtimeException.getLocalizedMessage());
- Mapmodel=newTreeMap();
- model.put("status",false);
- returnmodel;
- }
- }
当这个Controller中任何一个方法发生异常,一定会被这个方法拦截到。然后,输出日志。封装Map并返回,页面上得到status为false。就这么简单。

或者这个有些有些复杂,来个简单易懂的,上代码:
- @Controller
- publicclassAccessController{
- /**
- *异常页面控制
- *
- *@paramruntimeException
- *@return
- */
- @ExceptionHandler(RuntimeException.class)
- publicStringruntimeExceptionHandler(RuntimeExceptionruntimeException,
- ModelMapmodelMap){
- logger.error(runtimeException.getLocalizedMessage());
- modelMap.put("status",IntegralConstant.FAIL_STATUS);
- return"exception";
- }
- }