SpringMVC统一异常处理三种方法详解_mssql2008

来源:脚本之家  责任编辑:小易  

ajax访问不会返回你配置的错误页面,需要你自定义实现异常类(基于ajax请求),并且将异常通过response输出www.zgxue.com防采集请勿采集本网。

这篇文章主要介绍了SpringMVC-统一异常处理三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Spring MVC 3.2 M1 将引入对异步请求处理的支持,基于 Servlet 3.0 规范。尽管该版本还没发布,你可以在这里看到包含的改进。简单预览一下: 一个控制器方法可通过返回 Callable 来完成异步处理

在 Spring MVC 应用的开发中,不管是对底层数据库操作,还是业务层或控制层操作,都会不可避免地遇到各种可预知的、不可预知的异常需要处理。

应该是sql语句没写对,你先拿select语句到数据库里执行看是否报错。

如果每个过程都单独处理异常,那么系统的代码耦合度高,工作量大且不好统一,以后维护的工作量也很大。

看一下accept头,是不是有些请求没有带Accept:\"application/json\",导致SpringMVC无法路由到处理json的逻辑,你试一下把正常的和异常的请求头都打印出来。

如果能将所有类型的异常处理从各层中解耦出来,这样既保证了相关处理过程的功能单一,又实现了异常信息的统一处理和维护。

这个异常在网上搜到两个答案,一个是说缺少jsonjack包,这个我肯定是包含了,这个错误是偶尔出现的,一般都能正常返回json数据,另一个是说返 回的对象里没有get方法,这个也应该不是,返回的都

幸运的是,Spring MVC 框架支持这样的实现。Spring MVC 统一异常处理有以下 3 种方式: 使用 Spring MVC 提供的简单异常处理器 SimpleMappingExceptionResolver。 实现 Spring 的异常处理接口 HandlerExceptionResolver 自定义自己的异常处理器。 使用 @ExceptionHandler 注解实现异常处理

一个是说缺少jsonjack包,这个我肯定是包含了,这个错误是偶尔出现的,一般都能正常返回json数据

本节主要根据这 3 种处理方式讲解 Spring MVC 应用的异常统一处理。

Spring MVC使用SimpleMappingExceptionResolver类异常处理

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring一beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 使用扫描机制扫描包 --> <context:component-scan base-package="controller" /> <context:component-scan base-package="service" /> <context:component-scan base-package="dao" /> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!--前缀 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 后缀 --> <property name="suffix" value=".jsp" /> </bean> <!--SimpleMappingExceptionResolver(异常类与 View 的对应关系) --> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!-- 定义默认的异常处理页面,当该异常类型注册时使用 --> <property name="defaultErrorView" value="error"></property> <!-- 定义异常处理页面用来获取异常信息的变量名,默认名为exception --> <property name="exceptionAttribute" value="ex"></property> <!-- 定义需要特殊处理的异常,用类名或完全路径名作为key,异常页名作为值 --> <property name="exceptionMappings"> <props> <prop key="exception.MyException">my-error</prop> <prop key="java.sql.SQLException">sql-error</prop> <!-- 在这里还可以继续扩展对不同异常类型的处理 --> </props> </property> </bean></beans>

Spring MVC使用HandlerExceptionResolver接口异常处理

package exception;import java.sql.SQLException;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerExceptionResolver;import org.springframework.web.servlet.ModelAndView;public class MyExceptionHandler implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) { Map<String, Object> model = new HashMap<String, Object>(); model.put("ex", arg3); // 根据不同错误转向不同页面(统一处理),即异常与View的对应关系 if (arg3 instanceof MyException) { return new ModelAndView("my-error", model); } else if (arg3 instanceof SQLException) { return new ModelAndView("sql-error", model); } else { return new ModelAndView("error", model); } }}

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring一beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 使用扫描机制扫描包 --> <context:component-scan base-package="controller" /> <context:component-scan base-package="service" /> <context:component-scan base-package="dao" /> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!--前缀 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 后缀 --> <property name="suffix" value=".jsp" /> </bean> <!--托管MyExceptionHandler--> <bean class="exception.MyExceptionHandler"/></beans>

Spring MVC使用@ExceptionHandler注解异常处理

package controller;import java.sql.SQLException;import javax.servlet.http.HttpServletRequest;import org.springframework.web.bind.annotation.ExceptionHandler;import exception.MyException;public class BaseController { /** 基于@ExceptionHandler异常处理 */ @ExceptionHandler public String exception(HttpServletRequest request, Exception ex) { request.setAttribute("ex", ex); // 根据不同错误转向不同页面,即异常与view的对应关系 if (ex instanceof SQLException) { return "sql-error"; } else if (ex instanceof MyException) { return "my-error"; } else { return "error"; } }}

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring一beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 使用扫描机制扫描包 --> <context:component-scan base-package="controller" /> <context:component-scan base-package="service" /> <context:component-scan base-package="dao" /> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!--前缀 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 后缀 --> <property name="suffix" value=".jsp" /> </bean></beans>

通过Spring mvc框架提供的SimpleMappingExceptionResolver来集中处理,该类可以捕获所有控制器抛出的异常,并将它映射到配置的视图中。用法配置如下:class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">failureshowDBErrorshowError内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • springmvc级联属性处理无法转换异常问题解决
  • springmvc统一异常处理实例代码
  • spring mvc异常处理机制示例详解
  • spring mvc controller返回值及异常的统一处理方法
  • springmvc异常处理知识点总结
  • springmvc如何进行异常处理
  • spring mvc中异常处理的三种方式
  • 基于springmvc的全局异常处理器介绍
  • 详解使用spring mvc统一异常处理实战
  • sql server 2008安装失败的解决办法 彻底卸载老版本!
  • sql server 2008 数据库优化常用脚本
  • 通过sqlserver 2008 操作 mysql的方法
  • sql server 2008中的apply运算符使用方法
  • sql server2008中删除重复记录的方法分享
  • sqlserver 2008 :error 40出现连接错误的解决方法
  • sql server 2008存储结构之gam、sgam介绍
  • 利用java实现des加密算法
  • sql server 2008 r2数据库镜像部署图文教程
  • sql server 2008 r2——查找最小nindex,nindex存在而nindex+1不存
  • spring mvc 异常如何处理
  • SpringMVC统一异常处理,报异常后不跳转至设置的错误页面
  • spring mvc 的这个异常是什么原因导致的
  • spring mvc 异常如何处理
  • spring 异常统一处理,能处理异步请求吗
  • spring mvc的一个问题 有异常 有方法截图 求解?
  • spring mvc 的这个异常是什么原因导致的
  • spring mvc 的这个异常是什么原因导致的
  • spring mvc 的这个异常是什么原因导致的
  • 关于spring的一个异常,怎么解决
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mssql2008springmvc级联属性处理无法转换异常问题解决springmvc统一异常处理实例代码spring mvc异常处理机制示例详解spring mvc controller返回值及异常的统一处理方法springmvc异常处理知识点总结springmvc如何进行异常处理spring mvc中异常处理的三种方式基于springmvc的全局异常处理器介绍详解使用spring mvc统一异常处理实战sql server 2008安装失败的解决办法 彻底卸载老版本!sql server 2008 数据库优化常用脚本通过sqlserver 2008 操作 mysql的方法sql server 2008中的apply运算符使用方法sql server2008中删除重复记录的方法分享sqlserver 2008 :error 40出现连接错误的解决方法sql server 2008存储结构之gam、sgam介绍利用java实现des加密算法sql server 2008 r2数据库镜像部署图文教程sql server 2008完全卸载方法(其sql server 2008 安装和配置图解在与 sql server 建立连接时出现sql server 2008 r2 超详细安装图安装sql server 2008时的4个常见sql server 2008登录错误:无法连sql server 2008 阻止保存要求重sqlserver 2008将数据导出到sql脚sql server 2008 清空删除日志文图文详解sql server 2008r2使用教sql server 2008 数据库镜像部署实例之一sql2008中sql应用之- 死锁(deadlocking)sql server 2008用""sa""登录失败,启用"sqlserver 2008中的代码安全(一) 存储过sql server 2008 用户 nt authority\iusr关于sql server 2008忘记sa密码修改sa密码如何把excel数据导入到sql2008数据库的实sql server2008数据库迁移的两种方法设置sql server 2008 r2的身份验证模式的sql server 2008数据库引擎详细介绍
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved