- 浏览: 7955089 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
在spring mvc 3中,处理异常的是试用exceptionresolver去做异常,先来个简单DEMO看下:
1) 自定义异常类
2) 一个简单的控制器,其中用到了注解
3 在传统的xxxx-servlet.xml中配置SimpleMappingExceptionResolver
其中 ExceptionPage.jsp得定义出来,如下页面:
这样当有异常的话,就出现ExceptionPage.jsp的页面了;
注意一下,使用:
@ExceptionHandler(IOException.class)
public ModelAndView handleIOException(IOException ex) {
则凡是IOException的子类异常的话,也会用handleIOException方法去处理的喔';
可以看到,其实在spring mvc3中,如果使用
这个方法,其弊端在于,一个controller只能搭配响应一类异常,也就是说,
只能处理同一个controller中出现的ioexception;在最新的spring mvc 3.2中,比如DEMO如下:
还有一个controller:
两个controller都抛出了IOException的异常,则统一处理的为:
这样一来,使用了@ControllerAdvice标签,则无论应用中有多少个controller,只要
其中一个抛出IOException,都会使用 MyControllerAdviceDemo 去处理了;
1) 自定义异常类
public class SpringException extends RuntimeException{ private String exceptionMsg; public SpringException(String exceptionMsg) { this.exceptionMsg = exceptionMsg; } public String getExceptionMsg(){ return this.exceptionMsg; } public void setExceptionMsg(String exceptionMsg) { this.exceptionMsg = exceptionMsg; } }
2) 一个简单的控制器,其中用到了注解
@Controller public class StudentController { @RequestMapping(value = "/student", method = RequestMethod.GET) public ModelAndView student() { return new ModelAndView("student", "command", new Student()); } @RequestMapping(value = "/addStudent", method = RequestMethod.POST) @ExceptionHandler({SpringException.class}) public String addStudent( @ModelAttribute("HelloWeb")Student student, ModelMap model) { if(student.getName().length() < 5 ){ throw new SpringException("Given name is too short"); }else{ model.addAttribute("name", student.getName()); } } }
3 在传统的xxxx-servlet.xml中配置SimpleMappingExceptionResolver
<bean class="org.springframework.web.servlet.handler. SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="com.tutorialspoint.SpringException"> ExceptionPage </prop> </props> </property> <property name="defaultErrorView" value="error"/>
其中 ExceptionPage.jsp得定义出来,如下页面:
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <html> <head> <title>Spring MVC Exception Handling</title> </head> <body> <h2>Spring MVC Exception Handling</h2> <h3>${exception.exceptionMsg}</h3> </body> </html>
这样当有异常的话,就出现ExceptionPage.jsp的页面了;
注意一下,使用:
@ExceptionHandler(IOException.class)
public ModelAndView handleIOException(IOException ex) {
则凡是IOException的子类异常的话,也会用handleIOException方法去处理的喔';
可以看到,其实在spring mvc3中,如果使用
@ExceptionHandler(IOException.class) public ModelAndView handleIOException(IOException ex) {
这个方法,其弊端在于,一个controller只能搭配响应一类异常,也就是说,
只能处理同一个controller中出现的ioexception;在最新的spring mvc 3.2中,比如DEMO如下:
@Controller public class UserCreditCardController { private static final Logger logger = LoggerFactory.getLogger(UserCreditCardController.class); @RequestMapping(value = "userdetails", method = RequestMethod.GET) public String getCardDetails(Model model) throws IOException { logger.info("This will throw an IOException"); boolean throwException = true; if (throwException) { throw new IOException("This is my IOException"); } return "home"; } }
还有一个controller:
@Controller public class UserAddressController { private static final Logger logger = LoggerFactory.getLogger(UserAddressController.class); @RequestMapping(value = "useraddress", method = RequestMethod.GET) public String getUserAddress(Model model) throws IOException { logger.info("This will throw an IOException"); boolean throwException = true; if (throwException) { throw new IOException("This is my IOException"); } return "home"; } }
两个controller都抛出了IOException的异常,则统一处理的为:
@ControllerAdvice public class MyControllerAdviceDemo { private static final Logger logger = LoggerFactory.getLogger(MyControllerAdviceDemo.class); @Autowired private UserDao userDao; @ExceptionHandler(IOException.class) public ModelAndView handleIOException(IOException ex) { logger.info("handleIOException - Catching: " + ex.getClass().getSimpleName()); return errorModelAndView(ex); } private ModelAndView errorModelAndView(Exception ex) { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("error"); modelAndView.addObject("name", ex.getClass().getSimpleName()); modelAndView.addObject("user", userDao.readUserName()); return modelAndView; } }
这样一来,使用了@ControllerAdvice标签,则无论应用中有多少个controller,只要
其中一个抛出IOException,都会使用 MyControllerAdviceDemo 去处理了;
评论
1 楼
120183228
2013-04-08
呃 多此一举
spring 自定义异常处理器HandlerExceptionResolver 只要实现这个接口在上下文中注册一下就行了 异常类型httprequest和httpresponse都会传给你 想怎么返回都行
spring 自定义异常处理器HandlerExceptionResolver 只要实现这个接口在上下文中注册一下就行了 异常类型httprequest和httpresponse都会传给你 想怎么返回都行
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1594方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 2024前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3479info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2244import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 499https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 697public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 624https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 676https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 444https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 5531 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3113微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 626https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1849什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 973本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1379原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 870public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 679在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 946-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 777一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1915介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
22.2.3 WebAsyncTask和Callable类型异步请求的处理过程及用法301 22.2.4 DeferredResult类型异步请求的处理过程及用法303 22.2.5 ListenableFuture类型异步请求的处理过程及用法305 22.3 小结309
1.3 小结 18 第2章 开发第一个应用程序 19 2.1 运用Spring Boot 19 2.1.1 查看初始化的Spring Boot新项目 21 2.1.2 Spring Boot项目构建过程解析 24 2.2 使用起步依赖 27 2.2.1 指定基于功能的...
13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对控制器的支持: ControllerClassNameHandlerMapping 13.11.2. 对模型的支持:ModelMap (ModelAndView) 13.11.3. 对视图的支持: ...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
13.4 处理异常 13.5 小结 第14章 渲染Web视图 14.1 视图解析 14.1.1 使用模板视图 14.1.2 解析视图Bean 14.1.3 选择视图解析器 14.2 使用Spring模板 14.2.1 绑定表单数据 14.2.2 渲染被存储在外部的文本 ...
第3章 Spring中的Bean配置 3.1 在Spring IoC容器里配置Bean 3.1.1 问题描述 3.1.2 解决方案 3.1.3 实现方法 3.2 实例化Spring IoC容器 3.2.1 问题描述 3.2.2 解决方案...
13.4 处理异常 13.5 小结 第14章 渲染Web视图 14.1 视图解析 14.1.1 使用模板视图 14.1.2 解析视图Bean 14.1.3 选择视图解析器 14.2 使用Spring模板 14.2.1 绑定表单数据 14.2.2 渲染被存储在外部的文本 ...
第3章 Spring中的Bean配置 3.1 在Spring IoC容器里配置Bean 3.1.1 问题描述 3.1.2 解决方案 3.1.3 实现方法 3.2 实例化Spring IoC容器 3.2.1 问题描述 3.2.2 解决方案...
1.15 小结 56 第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决方案 57 2.1.3 工作原理 57 2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 ...
第3章 Spring中的Bean配置 3.1 在Spring IoC容器里配置Bean 3.1.1 问题描述 3.1.2 解决方案 3.1.3 实现方法 3.2 实例化Spring IoC容器 3.2.1 问题描述 3.2.2 解决方案 ...
13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对控制器的支持:ControllerClassNameHandlerMapping 13.11.2. 对模型的支持:ModelMap(ModelAndView) 13.11.3. 对视图的...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
1.15 小结 56 第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决方案 57 2.1.3 工作原理 57 2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 ...
1.3 小结 18 第2章 开发第一个应用程序 19 2.1 运用Spring Boot 19 2.1.1 查看初始化的Spring Boot新项目 21 2.1.2 Spring Boot项目构建过程解析 24 2.2 使用起步依赖 27 2.2.1 指定基于功能的依赖 28...
13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对控制器的支持:ControllerClassNameHandlerMapping 13.11.2. 对模型的支持:ModelMap(ModelAndView) 13.11.3. 对视图的...
13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对控制器的支持: ControllerClassNameHandlerMapping 13.11.2. 对模型的支持:ModelMap (ModelAndView) 13.11.3. 对视图的支持...
13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对控制器的支持: ControllerClassNameHandlerMapping 13.11.2. 对模型的支持:ModelMap (ModelAndView) 13.11.3. 对视图的支持...
### Spring 3.x 企业应用开发实战:关键知识点解析 #### 第1章 Spring概述 - **1.1 认识Spring** - **定义与作用**:Spring 是一个开源的轻量级 Java 开发框架,它主要的目标是解决企业级应用开发中的复杂性问题...
一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 ...15.13 小结