- 浏览: 4402790 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (163)
- 职场 && 心情 (22)
- Java/Basic (17)
- Java/Compression (7)
- Java/Security (20)
- Java/Maven (3)
- Java/Cache (11)
- Eclipse (4)
- Spring (19)
- ORM/Hibernate (2)
- ORM/iBatis (3)
- DB/NoSQL (11)
- DB/MySQL (7)
- DB/MS SQL Server (4)
- OS/Linux (11)
- OS/Mac (7)
- C/C++ (4)
- Server Architecture/Basic (13)
- Server Architecture/Distributed (17)
- Moblie/Andriod (2)
- WebService (3)
- Objective-C (1)
- Html (1)
- 设计模式 (1)
- Scala (0)
- Kafka (1)
最新评论
-
w47_csdn:
证书安装:在"浏览"选项中选择" ...
Java加密技术(九)——初探SSL -
w47_csdn:
spiritfrog 写道你好,我按照你的步骤,tomcat中 ...
Java加密技术(九)——初探SSL -
liuyachao111:
11楼说的对 用@ControllerAdvicepublic ...
Spring 注解学习手札(八)补遗——@ExceptionHandler -
irayslu:
作者你好, 我把你的源码放在jdk6, jdk7 中运行正常, ...
Java加密技术(五)——非对称加密算法的由来DH -
夏季浅忆-卖小子:
为什么不能解压rar格式的压缩包呢
Java压缩技术(三) ZIP解压缩——Java原生实现
Spring注解,改变了我的开发思路。前段时间,用@RequestBody,@ResponseBody,不费吹灰之力就解决了JSon自动绑定。接着就发现,如果遇到RuntimeException,需要给出一个默认返回JSON。
以前都是用SimpleMappingExceptionResolver拦截实现,今天偶尔看下资料,@ExceptionHandler,就把这个异常给拦截了,太方便了!
相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler
直接上代码:
当这个Controller中任何一个方法发生异常,一定会被这个方法拦截到。然后,输出日志。封装Map并返回,页面上得到status为false。就这么简单。
或者这个有些有些复杂,来个简单易懂的,上代码:
相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler
建议将
return new ResponseEntity<Object>(tResult,HttpStatus.OK);
改为
return new ResponseEntity<Object>(tResult,HttpStatus.INTERNAL_SERVER_ERROR);
正解!!!
完全可以将@ExceptionHandler写到父类中,然后子类controller继承。。。
那还不如写到xml里,全局处理
完全可以将@ExceptionHandler写到父类中,然后子类controller继承。。。
兄弟,再具体一点,给个代码参考下,我完善下
嗯,这是这种处理方式的限定
以前都是用SimpleMappingExceptionResolver拦截实现,今天偶尔看下资料,@ExceptionHandler,就把这个异常给拦截了,太方便了!
相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler
直接上代码:
@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。就这么简单。
或者这个有些有些复杂,来个简单易懂的,上代码:
@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 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler
评论
16 楼
liuyachao111
2018-04-16
11楼说的对 用@ControllerAdvice
public class WebExceptionHandler {...
可以统一处理异常,对所有的Controller都起作用
public class WebExceptionHandler {...
可以统一处理异常,对所有的Controller都起作用
15 楼
tomecs
2017-10-11
学完了,感觉收获好多,
14 楼
di1984HIT
2017-06-25
学习了~~
13 楼
cruiser_31hehe
2017-03-13
chenyueling 写道
可以使用 @ControllerAdvice
不用任何的配置,只要把这个类放在项目中,Spring能扫描到的地方。就可以实现全局异常的回调。
@ControllerAdvice public class SpringExceptionHandler{ /** * 全局处理Exception * 错误的情况下返回500 * @param ex * @param req * @return */ @ExceptionHandler(value = {Exception.class}) public ResponseEntity<Object> handleOtherExceptions(final Exception ex, final WebRequest req) { TResult tResult = new TResult(); tResult.setStatus(CodeType.V_500); tResult.setErrorMessage(ex.getMessage()); return new ResponseEntity<Object>(tResult,HttpStatus.OK); } }
不用任何的配置,只要把这个类放在项目中,Spring能扫描到的地方。就可以实现全局异常的回调。
建议将
return new ResponseEntity<Object>(tResult,HttpStatus.OK);
改为
return new ResponseEntity<Object>(tResult,HttpStatus.INTERNAL_SERVER_ERROR);
12 楼
家哇尘续缘
2016-09-11
chenyueling 写道
可以使用 @ControllerAdvice
不用任何的配置,只要把这个类放在项目中,Spring能扫描到的地方。就可以实现全局异常的回调。
@ControllerAdvice public class SpringExceptionHandler{ /** * 全局处理Exception * 错误的情况下返回500 * @param ex * @param req * @return */ @ExceptionHandler(value = {Exception.class}) public ResponseEntity<Object> handleOtherExceptions(final Exception ex, final WebRequest req) { TResult tResult = new TResult(); tResult.setStatus(CodeType.V_500); tResult.setErrorMessage(ex.getMessage()); return new ResponseEntity<Object>(tResult,HttpStatus.OK); } }
不用任何的配置,只要把这个类放在项目中,Spring能扫描到的地方。就可以实现全局异常的回调。
正解!!!
11 楼
chenyueling
2016-03-09
可以使用 @ControllerAdvice
不用任何的配置,只要把这个类放在项目中,Spring能扫描到的地方。就可以实现全局异常的回调。
@ControllerAdvice public class SpringExceptionHandler{ /** * 全局处理Exception * 错误的情况下返回500 * @param ex * @param req * @return */ @ExceptionHandler(value = {Exception.class}) public ResponseEntity<Object> handleOtherExceptions(final Exception ex, final WebRequest req) { TResult tResult = new TResult(); tResult.setStatus(CodeType.V_500); tResult.setErrorMessage(ex.getMessage()); return new ResponseEntity<Object>(tResult,HttpStatus.OK); } }
不用任何的配置,只要把这个类放在项目中,Spring能扫描到的地方。就可以实现全局异常的回调。
10 楼
wangleihome
2016-01-13
不错
9 楼
高国藩
2015-07-09
设置一个全局的异常处理类就可以了啊,为什么还要这样写呢
8 楼
在世界的中心呼喚愛
2015-04-06
yangtong501703793 写道
daisiki 写道
也有不好的地方,每个Controller你都得写一遍...
完全可以将@ExceptionHandler写到父类中,然后子类controller继承。。。
那还不如写到xml里,全局处理
7 楼
yangtong501703793
2013-10-08
daisiki 写道
也有不好的地方,每个Controller你都得写一遍...
完全可以将@ExceptionHandler写到父类中,然后子类controller继承。。。
6 楼
snowolf
2013-01-17
saintsaya 写道
测试了一下第一种方式可行,第二种方式不可行,参数里放一个ModelMap会抛异常,Illegal那个参数异常,放在里面new出来是可以的,各位可以测试一下
兄弟,再具体一点,给个代码参考下,我完善下
5 楼
saintsaya
2013-01-17
测试了一下第一种方式可行,第二种方式不可行,参数里放一个ModelMap会抛异常,Illegal那个参数异常,放在里面new出来是可以的,各位可以测试一下
4 楼
iluoxuan
2012-12-25
继承啊 真实的
3 楼
snowolf
2012-09-20
daisiki 写道
进行异常处理的方法必须与出错的方法在同一个Controller里面
嗯,这是这种处理方式的限定
2 楼
daisiki
2012-09-20
进行异常处理的方法必须与出错的方法在同一个Controller里面
1 楼
daisiki
2012-09-20
也有不好的地方,每个Controller你都得写一遍...
发表评论
-
征服 Redis + Jedis + Spring (三)—— 列表操作
2013-03-06 16:16 84095一开始以为Spring下操 ... -
Memcached笔记——(四)应对高并发攻击
2012-09-13 09:48 29065近半个月过得很痛苦,主要是产品上线后,引来无数机器用户恶意 ... -
征服 Redis + Jedis + Spring (二)—— 哈希表操作(HMGET HMSET)
2012-08-29 18:29 82411不得不说,用哈希操作来存对象,有点自讨苦吃! 不过,既然 ... -
征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)
2012-08-29 16:30 157640有日子没写博客了,真的是忙得要疯掉。 完成项目基础架构搭建 ... -
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
2012-08-10 21:27 440230最近需要做些接口服务,服务协议定为JSON,为了整合在Spri ... -
征服 Kestrel + XMemcached + Spring TaskExecutor
2012-07-30 14:43 6268上一篇征服 Kestrel + XMemcached只是对Ke ... -
征服Spring AOP—— @AspectJ
2012-04-10 12:01 18730接N年前写的一篇Spring AOP相关的内容征服Spring ... -
Memcached笔记——(二)XMemcached&Spring集成
2012-04-01 09:55 42412今天研究Memcached的Java的Client,使用XMe ... -
Spring util
2011-02-24 12:02 01,<util:constant/> 取代了之前通 ... -
Spring HttpInvoke实现,以及效率提升!
2010-07-01 17:38 15094最近接手服务器总被人质疑效率问题,说到底是质疑Spring H ... -
Spring 注解学习手札(六) 测试
2010-02-05 16:28 53239既然系统基于注解自成一体,那么基于Spring的测试是否可以依 ... -
Spring 注解学习手札(五) 业务层事务处理
2010-02-04 16:11 25429控制器层、持久层都有 ... -
Spring 注解学习手札(四) 持久层浅析
2010-01-29 11:11 22669今天,我们玩玩数据库,搞搞持久层。不搞太复杂的东西,Sprin ... -
Spring 注解学习手札(三) 表单页面处理
2010-01-26 15:21 40588昨天小歇一天,看着两篇博客迅速飙升的点击率,十分欣慰。今天来研 ... -
Spring 注解学习手札(二) 控制层梳理
2010-01-24 15:53 36643昨天对Spring注解有了一 ... -
Spring 注解学习手札(一) 构建简单Web应用
2010-01-23 13:40 83763近来工作发生了一些变化,有必要学习一下Spring注解了! ... -
征服Spring AOP—— Schema
2008-09-03 17:41 6484自从开始使用Spring,就接触到AOP,但一直未能深入,沉淀 ... -
关于Spring中Commons Validator的使用说明
2008-09-01 09:57 8197关于Spring中Commons Validator的使用说明 ... -
acegi 我该从哪里取到用户的信息
2006-09-21 17:32 5838项目需要 用acegi做为安全屏障,按acegi 1.0.1 ...
相关推荐
在Spring框架中,注解是实现轻量级、声明式编程的重要工具,极大地简化了代码并提高了可维护性。本文将深入探讨`@ResponseBody`、`@RequestBody`和`@PathVariable`这三个关键注解,它们在处理HTTP请求和响应中的作用...
Spring提供`@ExceptionHandler`注解,可以定义在控制器类或方法上,用于捕获和处理特定类型的异常。这有助于保持代码的整洁,同时提供统一的错误处理机制。 为了启动Spring应用,通常我们会创建一个`@Configuration...
这篇“Spring注解学习手札(二)控制层梳理”主要聚焦于如何利用注解来构建和理解Spring MVC的控制层,即Controller。Spring MVC是Spring框架的一部分,专门用于处理Web应用程序的请求和响应。 一、@RestController...
【Spring注解学习手札】 在现代Java Web开发中,Spring框架因其强大的功能和灵活性而备受推崇。Spring注解的引入极大地简化了配置文件,提高了开发效率。本篇将聚焦于Spring MVC中的注解,通过构建一个简单的Web...
在本篇《Spring注解学习手札(四)持久层浅析》中,我们将深入探讨Spring框架在持久层的应用,特别是如何通过注解简化数据库操作。Spring作为一个强大的轻量级框架,提供了丰富的功能来处理数据访问,使得开发者可以...
在本篇《Spring注解学习手札(三)表单页面处理》中,我们将深入探讨Spring框架中关于处理Web表单的关键注解和技术。在实际的Web开发中,表单处理是用户交互的重要组成部分,Spring提供了强大的支持,使得开发者能够...
在本篇《Spring注解学习手札(六)——测试》中,我们将深入探讨Spring框架中的测试支持,尤其是如何利用注解进行单元测试和集成测试。Spring为开发者提供了丰富的注解,使得测试代码更加简洁、易读且易于维护。本文...
这篇“Spring注解学习手札(五)——业务层事务处理”深入探讨了如何使用注解来管理应用程序中的事务,确保数据的一致性和完整性。Spring提供了声明式事务管理,使得开发者无需编写繁琐的事务控制代码,只需在方法上...
这份"Perl学习手札"是为那些想要深入理解Perl语言特性和应用的初学者或有一定经验的开发者准备的宝贵资源。 首先,Perl的核心特性在于其灵活性和表达力。Perl语法受到了C、sed、awk等多种语言的影响,这使得它在...
- "spring-reference.pdf" 和 "Spring注解手札.pdf" 可能是详细的 Spring 参考文档和注解指南,对于深入学习 Spring 极为有用。 以上内容只是 Spring 框架的冰山一角,想要精通 Spring,还需要通过阅读文档、实践...
"Perl学习手札中文"是一份专为初学者设计的学习资料,旨在帮助读者快速掌握Perl语言的基础和高级特性。以下是对这些文件内容的概览: 1. **word.css**: 这个文件可能是样式表,用于定义文档中的排版和格式。在学习...
关于作者: 简信昌 “傲尔网”专案经理 博仲法律事务所资讯部门 台北Perl推广组 (Taipei.pm) 召集人 Newzilla召集人 目前专案: Open Source Foundry (OSSF) Newzilla 线上杂志 ...“Perl学习手札”
Perl学习手札.chmPerl学习手札.chmPerl学习手札.chm
hibernate学习手札.z03
hibernate学习手札.z01
"高级Perl编程(黑豹书)"和"Perl_学习手札"这两本书籍是深入理解并掌握Perl编程的重要资源。 《高级Perl编程》(黑豹书)是Perl编程领域的经典之作,它不仅适合初学者作为进阶读物,也对有经验的Perl程序员提供了...
通过深入学习“Perl学习手札”,你可以系统地掌握这些概念,并逐步成长为一个熟练的Perl程序员。记住,实践是检验知识的最好方式,所以不仅要理解理论,还要动手编写代码,解决实际问题。祝你在Perl的学习之旅中取得...