SPRING MVC 异常处理 可以全局进行定义,也可以单独在SPRING controller中定义;同时SPRING MVC将异常处理的代码和业务逻辑进行分离,将异常的处理放到一个单独的带有@ExceptionHandler方法中;
@Controller public class ExceptionController { @RequestMapping("/exception") public @ResponseBody String exception() { throw new IllegalStateException("Sorry!"); } // 处理异常的代码,这样就实现了业务逻辑和异常处理的分离 @ExceptionHandler public @ResponseBody String handle(IllegalStateException e) { return "IllegalStateException handled!"; } @RequestMapping("/global-exception") public @ResponseBody String businessException() throws BusinessException { throw new BusinessException(); } }
SPRING 处理异常的流程:
1.WEB启动时ExceptionHandlerExceptionResolver 扫描到通用的异常处理方法:
DEBUG ExceptionHandlerExceptionResolver Looking for exception mappings: WebApplicationContext for namespace 'appServlet-servlet': startup date [Sat Jun 08 08:40:41 GMT 2013]; parent: Root WebApplicationContext
INFO ExceptionHandlerExceptionResolver Detected @ExceptionHandler methods in globalExceptionHandler
2.当请求出现异常时,首先看当前类中是否含有@ExceptionHandler的处理方法
DEBUG ExceptionHandlerExceptionResolver Resolving exception from handler [public java.lang.String org.springframework.samples.mvc.exceptions.ExceptionController.exception()]: java.lang.IllegalStateException: Sorry!
DEBUG ExceptionHandlerExceptionResolver Invoking @ExceptionHandler method: public java.lang.String org.springframework.samples.mvc.exceptions.ExceptionController.handle(java.lang.IllegalStateException)
DEBUG RequestResponseBodyMethodProcessor Written [IllegalStateException handled!] as "text/plain;charset=ISO-8859-1" using [org.springframework.http.converter.StringHttpMessageConverter@163e9a1]
3.然后看有没有含有@ExceptionHandler method 的类,另外该类必须@ControllerAdvice
DEBUG ExceptionHandlerExceptionResolver Resolving exception from handler [public java.lang.String org.springframework.samples.mvc.exceptions.ExceptionController.businessException() throws org.springframework.samples.mvc.exceptions.BusinessException]: org.springframework.samples.mvc.exceptions.BusinessException
DEBUG ExceptionHandlerExceptionResolver Invoking @ExceptionHandler method: public java.lang.String org.springframework.samples.mvc.exceptions.GlobalExceptionHandler.handleBusinessException(org.springframework.samples.mvc.exceptions.BusinessException)
相关推荐
**Spring MVC 3.2 案例讲解——配置** Spring MVC 是 Spring 框架的一个模块,专门用于处理Web应用程序的请求-响应模式。在3.2版本中,Spring MVC引入了一些重要的改进和增强,使得开发更加高效和灵活。本篇文章将...
通过上述讲解,我们已经对Spring 3.2中的异步处理有了深入理解。正确地使用异步处理可以显著提高应用的性能,特别是在处理大量并发请求时。然而,它也需要合理的配置和管理,以确保系统的稳定性和可维护性。
《Spring 2.0 技术手册》是继 Spring 1.0 之后的重要著作,作者林信良针对 Spring 框架在 2.0 版本中的新特性进行了深入剖析与讲解。本书不仅适合于已经有一定 Java 开发基础的学习者,也适用于想要深入了解 Spring ...
### Spring 3.x 企业应用开发实战:关键知识点解析 ...这些知识点覆盖了 Spring 框架的基础概念、新功能、项目搭建、快速入门案例、IoC 容器的使用以及 Bean 的配置等方面,为读者提供了全面而深入的理解。
“3.1 Spring框架.pptx”和“3.2 Spring应用 .pptx”则可能详细讲解了Spring框架的核心组件和实际应用场景,比如AOP在事务管理中的应用,以及Spring与其他技术(如JDBC、Hibernate)的集成。 总体来说,这个资源包...
- **SpringMVC与传统MVC的区别**:SpringMVC在传统MVC的基础上进行了优化,例如使用了前端控制器(DispatcherServlet)来集中处理请求,以及使用了基于注解的方式来进行配置等。 ##### 2.2 SpringMVC入门案例 - **...
- **3.3 集成Spring MVC**:介绍如何将Shiro与Spring MVC框架进行整合,实现基于注解的权限控制。 - **3.4 整合MyBatis**:通过示例演示如何在MyBatis中实现用户数据的增删改查操作,并与Shiro进行集成。 #### 四、...
- 适当使用拦截器,实现通用的功能,如异常处理、登录验证等。 - 注意安全问题,如XSS、CSRF等,Struts2有一些内置的安全措施,但还需要开发者进行额外的防护。 通过以上这些学习资料,开发者可以从基础到高级,...
2. "附录3.2 MyBatis的映射器与动态SQL.ppt":这份PPT可能深入讲解了MyBatis框架中映射器的概念以及如何使用动态SQL进行灵活的数据查询。映射器是MyBatis的核心部分,它负责将Java方法与SQL语句关联起来,而动态SQL...
- **3.2 Struts2配置文件**:主要讲解`struts.xml`文件的作用、格式及配置项。 - **3.3 Action配置**:Action类的设计原则、生命周期以及配置方法。 #### 五、表单验证 - **4.1 手动完成输入校验**:通过编写代码...
### JSF基于EJB Hibernate Spring整合开发与项目 #### 一、JSF基础知识 ##### 1.1 了解JSF JavaServer Faces (JSF) 是一个用于构建基于Web的应用程序的标准Java EE技术。它提供了丰富的组件库以及一套声明式的...
- **Spring MVC简介及基本使用**:了解Spring MVC框架的基本概念和使用方法。 - **Spring MVC注解开发**:学习基于注解的控制器开发方式。 - **处理器映射和处理器适配器**:掌握处理器映射和适配器的工作原理。 - *...
- **特点**:SpringMVC是Spring框架的一部分,用于构建MVC架构的Web应用程序。 - **获取方式**:通过B站链接观看。链接为:https://www.bilibili.com/video/BV1yt411h7nZ/ - **6.2.3 Mybatis框架** - **特点**:...
《Java高手真经》之应用框架卷不仅深入浅出地讲解了Java Web领域内的几种核心框架,而且还提供了丰富的实战案例和完整的代码示例。这对于想要提升自己在Java Web开发方面技能的读者来说,是一份非常宝贵的学习资料。...
2.2 异常处理:理解异常的概念,学会try-catch-finally语句的使用。 2.3 文件与流:文件操作,输入输出流,对象序列化和反序列化。 2.4 多线程:线程的创建与管理,同步机制(synchronized关键字、wait/notify)。 ...
文档旨在通过具体案例深入讲解OSGi框架的应用技巧,帮助读者掌握如何利用OSGi构建高效、可扩展的Java应用系统,并提供最佳实践和设计模式指导。 ##### 1.3 导读 文档分为以下几个主要部分: 1. **基于OSGi的留言板...