springmvc controller 统一异常处理
2017-05-25 15:04
387 查看
针对springmvc controller层面有多种统一异常处理方法,包括默认的,自定义的,以及注解配置的。这里我推荐一种自定义异常处理方式,它能够处理ajax调用的异常和普通视图调用的异常(比如jsp)。具体的代码如下:
使用说明在spring配置文件中,配置改异常处理bean,代码如下:
ajax调用处理,异常信息在error中处理,通过response.responseText将异常信息进行提示。
普通的视图处理,即返回了一个error/error.jsp页面,里面可以使用errorInfo变量进行错误提示。
public class GlobalHandlerExceptionResolver implements HandlerExceptionResolver { private static final Logger logger = LoggerFactory.getLogger(GlobalHandlerExceptionResolver.class); /** * 没有区分是哪种情况的异常 */ @Override public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse resp, Object o, Exception ex) { logger.error(ex.getMessage(), ex); HandlerMethod method = (HandlerMethod) o; // ResponseBody.class注解说明是ajax调用,否则返回视图 if (method.getMethod().isAnnotationPresent(ResponseBody.class)) { try { resp.getWriter().write(ex.getMessage()); resp.getWriter().flush(); resp.getWriter().close(); //这里很重要,否则ajax的readystatus为0 } catch (Exception e) { logger.error(e.getMessage()); } return null; } else { Map<String, String> map = new HashMap<String, String>(); map.put("errorInfo", "服务器异常,异常提示:" + ex.getMessage()); return new ModelAndView("error/error", map); } } }
使用说明在spring配置文件中,配置改异常处理bean,代码如下:
<!-- 控制器异常处理 --> <bean id="exceptionResolver" class="com.***.exceptionhandler.GlobalHandlerExceptionResolver" />
ajax调用处理,异常信息在error中处理,通过response.responseText将异常信息进行提示。
$.ajax({ type: "POST", url: serverContext + "/checkLogin", dataType : "json", data: { "teamName" : $("#teamName").val(), "password" : hex_md5($("#password").val()), }, success: function(response){ var errorInfo = response.errorInfo; if (errorInfo != "ok"){ $("#warn").text(errorInfo).show(); return; }else{ window.location.href = serverContext + "/index"; } }, error: function(response){ $("#warn").text("服务器异常,异常信息:" + response.responseText).show(); return; } })
普通的视图处理,即返回了一个error/error.jsp页面,里面可以使用errorInfo变量进行错误提示。
相关文章推荐
- @controllerAdvice 统一处理异常(spring-mvc)
- 项目异常统一处理-spring+springmvc
- springMVC+shiro的权限管理和异常统一处理
- Spring中@ControllerAdvice注解配合@ExceptionHandler实现统一异常处理
- spring/springmvc中的统一处理异常方式
- SpringBoot 统一异常处理--- @ControllerAdvice 使用
- MVC 使用HandleErrorAttribute统一处理异常
- 使用Spring MVC HandlerExceptionResolver处理异常
- 使用Spring实现异常统一处理【二】
- Apache CXF Rest与Spring 3.0 mvc 的异常处理框架总结
- Spring aop 异常统一处理
- 【Spring学习笔记-MVC-15】Spring MVC之异常处理
- Spring MVC Controller与jquery ajax请求处理json
- Spring MVC的Controller统一异常处理:HandlerExceptionResolver
- Spring3 MVC 异常处理
- Spring.Net学习系列一: 统一异常处理
- Spring MVC的Controller统一异常处理:HandlerExceptionResolver
- 使用Spring实现异常统一处理【四】--error-page中对异常进行log
- 利用Spring进行统一异常处理的两种方式
- MVC 增加统一异常处理机制