在项目中如何处理出现的异常,在每个可能出现异常的地方都写代码捕捉异常?这显然是不合理的,当项目越来越大是也是不可维护的。那么如何保证我们处理异常的代码精简且便于维护呢?这就是本篇要讲的内容—>异常处理。
在Spring MVC中我们可以通过以下2中途径来对异常进行集中处理:
一.继承HandlerExceptionResolver接口实现自己的处理方法,如:
public class MyHandlerExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { //添加自己的异常处理逻辑,如日志记录等 // TODO Auto-generated method stub return new ModelAndView("exception"); } }
然后在项目的配置文件中添加:
<bean id="exceptionResolver" class="所在包名.MyHandlerExceptionResolver"/>
这样就完成了异常的捕捉和处理。
二.我们介绍了第一种捕捉处理异常方式,但是第一种方式需要在配置文件中进行配置,有的时候我们会觉得配置文件内容太多太乱,那么我们就可以借助@ExceptionHandler注解来实现零配置的异常捕捉和处理。
首先,在我们项目的包com.demo.web.controllers中为controller建立一个父类BaseController,内容如下:
package com.demo.web.controllers; import java.sql.SQLException; import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.ExceptionHandler; public abstract class BaseController { @ExceptionHandler public String exception(HttpServletRequest request, Exception e) { //添加自己的异常处理逻辑,如日志记录 request.setAttribute("exceptionMessage", e.getMessage()); // 根据不同的异常类型进行不同处理 if(e instanceof SQLException) return "testerror"; else return "error"; } }
其次,修改项目中HelloWorldController让它继承于BaseController以便进行测试:
public class HelloWorldController extends BaseController{ //...内容省略 }
然后,修改HelloWorldController 中的index方法,使其抛出异常,看能不能正常捕捉:
//@AuthPassport @RequestMapping(value={"/index","/hello"}) public ModelAndView index() throws SQLException{ throw new SQLException("数据库异常。"); /*ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("message", "Hello World!"); modelAndView.setViewName("index"); return modelAndView;*/ }
最后,在views文件夹中添加testerror.jsp视图来显示错误信息:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>error!</title> </head> <body> ${exceptionMessage} </body> </html>
运行项目:
可以看到异常已经被捕捉并显示,这样只要把我们的其它的Controller全部继承于BaseController就能实现异常的集中捕捉和处理了。
代码下载:http://pan.baidu.com/s/1c0eTseG
相关推荐
在这些文件中,我们需要定义视图解析器、拦截器、数据绑定、异常处理等关键设置。 4. **请求处理流程** 一个典型的SpringMVC请求处理流程包括:用户发送HTTP请求 -> DispatcherServlet拦截 -> HandlerMapping找到...
5. AOP(面向切面编程):结合Spring的AOP功能,实现全局异常处理、事务管理等。 6. 国际化:通过LocaleResolver和MessageSource实现多语言支持。 五、实战应用 1. 创建MVC项目:搭建SpringMVC环境,编写Controller...
综上所述,SpringMVC的学习路线涵盖了从基础到高级的多个方面,包括框架使用、代码实践、架构理解、组件整合、参数绑定、注解使用、异常处理、数据交互、Restful实现以及拦截器开发等多个知识点,为Java后台开发者...
7. **异常处理**:通过`@ExceptionHandler`注解,可以在控制器类中定义全局异常处理方法,统一处理运行时异常。 8. **拦截器**:SpringMVC允许自定义拦截器,通过`@InterceptorRegistry`和`HandlerInterceptor`接口...
总的来说,"SpringMVC学习编程代码"提供的资源包括了SpringMVC的核心概念和实际应用,如配置文件、Controller、视图解析、数据绑定、异常处理以及拦截器的使用。通过这个项目,开发者可以深入理解SpringMVC的工作...
SpringMVC 学习指南 SpringMVC 是 Spring 框架中的一个 web 组件,它提供了丰富的功能来构建稳健的 web 应用。 SpringMVC 的核心思想是基于每个逻辑和功能是高可配置的架构和设计的。下面是 SpringMVC 的学习指南:...
springMVC3学习(八)--全局的异常处理(源码) 文章地址:http://blog.csdn.net/itmyhome1990/article/details/26286435
14. **异常处理**:可以通过 @ExceptionHandler 注解处理特定的异常,或者全局异常处理器来统一处理所有未捕获的异常。 15. **异步处理**:Spring MVC 提供了异步请求处理功能,可以返回 Callable 或 ...
**SpringMVC学习文档概述** SpringMVC是Spring框架的一个模块,主要负责处理Web应用程序的请求和响应。它是一个基于模型-视图-控制器(MVC)架构模式的轻量级Java Web开发框架,旨在简化Web应用开发并提高可测试性...
通过研究SpringMVC-Study项目,你可以深入理解如何配置和使用SpringMVC,包括注解驱动的编程、RESTful API设计、异常处理、视图解析、国际化支持以及使用Spring Data JPA等高级特性。此外,还可以学习如何结合Spring...
在“SpringMVC学习(一)——SpringMVC入门小程序”中,我们首先会接触到SpringMVC的基本概念。这通常包括以下几个核心组件: 1. **DispatcherServlet**:这是SpringMVC的前端控制器,负责接收HTTP请求,并根据配置...
在实际应用中,SpringMVC 还支持拦截器、异常处理、本地化和主题等功能,可以提供更强大的功能和灵活性。此外,SpringMVC 可以与其他 Spring 模块(如 Spring AOP、Spring Data 等)集成,构建更复杂的业务应用。
通过"SpringMVC学习版源码",初学者可以详细查看这些组件的实现,理解它们如何协同工作,从而加深对SpringMVC的理解。MySpringMVC可能是该项目的主模块,包含了整个SpringMVC应用的配置、控制器、模型、视图等组件。...
SpringMVC是Spring框架的一个重要模块,用于构建Web应用程序的后端控制器。它是一个轻量级的MVC..."SpringMVC学习指南"这个压缩包中的PDF文档,很可能会涵盖这些内容的详细讲解,是学习和提升SpringMVC技能的好资源。
SpringMVC是Java web开发中一个非常重要的框架,它基于模型-视图-控制器(Model-View-Controller)设计模式...这份“SpringMVC学习笔记”包括了从基础到进阶的全面内容,旨在帮助读者从零开始掌握SpringMVC的各个方面。
JavaWeb框架——SpringMVC学习过程前端控制器、视图解析器@Controller@RequestMapping(value、method、params)获取请求参数域对象共享数据视图前缀RESTFul文件上传下载拦截器Interceptor异常处理Excepton
- **全局异常处理**:设置 `@ExceptionHandler` 处理特定异常,或者配置 `@ControllerAdvice` 进行全局异常捕获。 - **错误页面**:配置错误页面,提供友好的错误信息展示。 6. **RESTful API** - **REST 原则**...
内容概要:超详细SpringMVC笔记,包含初始SpringMVC,请求与响应,REST风格,SSM整合,表现层数据封装,异常处理器,项目异常处理方案,前后台联调,拦截器等知识点适合人群:学习过Spring课程的人群,初步理解框架...
在“springMVC学习--基本的几个例子”这个主题中,我们将深入探讨SpringMVC的基础配置以及几个关键示例。 1. **SpringMVC基本配置**: - **web.xml配置**:这是SpringMVC应用的入口点,我们需要配置...
1.2.3 借助`@ControllerAdvice`实现全局异常处理 1.3 参数绑定与处理 SpringMVC的强大之处在于其参数绑定能力,可以从HTTP请求中自动解析参数到控制器方法的参数上: 1.3.1 简单数据类型如int、String等可以直接...