1. 在applicationContext.xml中配置exceptionResolver
<bean id="exceptionResolver"
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView">
<value>error</value>
</property>
<property name="exceptionMappings">
<props>
<prop key="java.sql.SQLException">errorDB</prop>
<prop key="java.lang.RuntimeException">errorRT</prop>
</props>
</property>
</bean>
2. errorRT.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.lang.Exception" %>
<%@ page import="java.io.PrintWriter" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!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>Insert title here</title>
</head>
<body>
<%Exception ex=(Exception)request.getAttribute("exception");%>
<H2>Exception:</H2>
<%ex.printStackTrace(new PrintWriter(out));%>
<!--<c:out value="${exception}"></c:out>-->
</body>
</html>
自定义异常解析器:
- public class MyExceptionResolver implements HandlerExceptionResolver {
- @Override
- public ModelAndView resolveException(HttpServletRequest request,
- HttpServletResponse response, Object obj, Exception exception) {
- // TODO Auto-generated method stub
- ModelAndView result=new ModelAndView("showError");
- result.addObject("exception", exception);
- return result;
- }
- }
然后在spring-servlcet.xml中初始化:
- <bean id="exceptionResolver"
- class="com.zah.web.controller.MyExceptionHandler"/>
但是我们不能再在此bean中定义如下属性了:
- <property name="defaultErrorView">
- <value>failure</value>
- </property>
- <property name="exceptionMappings">
- <props>
- <prop key="java.sql.SQLException">showDBError</prop>
- <prop key="java.lang.RuntimeException">showError</prop>
- </props>
- </property>
- <property name="warnLogCategory" value="WARN"></property>
- <property name="defaultStatusCode" value="500"></property>
需要手动处理log:
- public class MyExceptionResolver implements HandlerExceptionResolver {
- @Override
- public ModelAndView resolveException(HttpServletRequest request,
- HttpServletResponse response, Object obj, Exception exception) {
- // TODO Auto-generated method stub
- ModelAndView result=new ModelAndView("showError");
- result.addObject("exception", exception);
- return result;
- }
- private Log warnLogger;
- public void setWarnLogCategory(String loggerName) {
- this.warnLogger = LogFactory.getLog(loggerName);
- }
- protected void logException(Exception ex, HttpServletRequest request) {
- if (this.warnLogger != null && this.warnLogger.isWarnEnabled()) {
- this.warnLogger.warn("Handler execution resulted in exception", ex);
- }
- }
- }
写的有点烂,算是记录吧,其实可以看看SimpleMappingExceptionResolver源码,可以再扩展SimpleMappingExceptionResolver类来满足自己的业务需求。
相关推荐
本文将深入探讨Spring MVC中的异常处理机制,帮助你更好地理解如何优雅地处理错误和异常。 1. **Spring MVC 异常处理概述** Spring MVC 提供了一种统一的方式来处理应用程序中抛出的异常。它通过`@...
在Spring MVC框架中,异常处理是一项关键任务,它确保了应用程序在遇到错误或异常时能够以优雅的方式响应,提供统一的错误信息,并保持代码的整洁和模块化。本篇文章将详细探讨Spring MVC处理异常的三种主要方法:...
Spring MVC异常处理机制示例详解 Spring MVC 异常处理机制是指在 Spring MVC 框架中,对异常的捕捉和处理的机制。该机制主要是通过 HandlerExceptionResolver 接口来实现的,该接口只有一个处理方法,即 ...
此外,我们还可以利用Spring的@ControllerAdvice注解来实现全局的异常处理。 ```java @ControllerAdvice public class CustomExceptionHandler { @ExceptionHandler(value = Exception.class) public ...
在Spring MVC框架中,全局异常处理是至关重要的,它确保了应用程序在遇到未捕获的异常时能够优雅地处理并返回合适的反馈给用户。`SimpleMappingExceptionResolver` 是Spring MVC提供的一种简单易用的异常处理器,它...
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <prop key="org.apache.shiro.authz.UnauthorizedException">error/403 ...
8. HandlerExceptionResolver接口:处理异常,如SimpleMappingExceptionResolver用于全局异常处理。 三、核心流程图 Spring_MVC的执行流程包括:接收到请求 -> DispatcherServlet -> HandlerMapping -> ...
- **HandlerExceptionResolver**:处理异常,`SimpleMappingExceptionResolver` 是一个常见的实现,它可以将不同类型的异常映射到特定的视图。 - **ModelAndView**:一个模型和视图的组合,包含了处理结果模型和...
- 第8-9章:详细讲解异常处理机制,包括自定义异常处理器和全局异常处理策略。 - 第10-11章:注解式控制器的全面解析,如何使用注解来声明路由、参数绑定和模型数据的管理。 - 第12-13章:可能涉及高级话题,如拦截...
- **SimpleMappingExceptionResolver**实现类:提供了一种基于配置文件的异常处理机制。 - **HandlerMapping**接口及其实现类:负责将请求映射到对应的处理器上。其中包括: - **SimpleUrlHandlerMapping**:通过...
9. **HandlerExceptionResolver**:异常处理器接口,如`SimpleMappingExceptionResolver`,当Controller处理过程中发生异常时,它负责将异常映射到特定的错误视图。 10. **ModelAndView**:一个组合模型数据和视图...
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" /> ``` **MyBatis** MyBatis是一个轻量级的持久层框架,它允许开发者用SQL语句编写动态查询。在整合MyBatis时,我们需要...
9. **`HandlerExceptionResolver` 接口及其实现类**:如 `SimpleMappingExceptionResolver`,用于处理异常。 10. **`ModelAndView` 类**:用于封装模型数据和视图信息。 #### 三、核心流程分析 Spring MVC 的...
3. **异常处理**:当上传的文件大小超过了配置的最大值时,Spring MVC会抛出`MaxUploadSizeExceededException`异常。可以通过配置异常处理器来处理这种情况,并跳转到特定的错误页面。 ```xml ...
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误情况时能够优雅地失败,而不是突然崩溃。异常分为两大类:检查异常(Checked Exceptions)和非检查异常(Unchecked Exceptions)。检查异常是那些在...
在Spring MVC框架中,统一异常处理是提高代码质量和可维护性的重要手段。本文将详细介绍三种在Spring MVC中实现统一异常处理的方法。 首先,Spring MVC提供了一个内置的异常处理器`SimpleMappingExceptionResolver`...