首页 > 编程语言 > 详细

springMVC对全局异常的统一处理

时间:2016-06-03 02:18:02      阅读:159      评论:0      收藏:0      [点我收藏+]

使用springMVC框架时,因为前台的请求有些是ajax,有些是请求一个页面.而如果这些请求执行过程中有异常没有catch,会向前台页面抛出.url响应为500,可能也会将异常信息抛到前台,这既不安全也不规范.

?

使用如下方式即可完美解决.既可以在后台记录错误的堆栈log.对前端的ajax请求或页面请求,都可以有比较好的响应处理.

<!-- 全局异常处理.-->
	<bean id="exceptionHandler" class="com.novelbio.web.handler.ExceptionHandler"/> 

?异常处理类

package com.novelbio.web.handler;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.shiro.web.util.WebUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;

/**
 * 全局异常处理类.对后台直接抛往前台页面的异常进行封装处理.
 * 
 * @author fans.fan
 *@date 2015年12月4日
 */
public class ExceptionHandler extends SimpleMappingExceptionResolver {

	private static final Logger logger = LoggerFactory.getLogger(ExceptionHandler.class);
	
	@Override
	protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
		ModelAndView modelAndView = super.doResolveException(request, response, handler, ex);
		String url = WebUtils.getPathWithinApplication(request);
		logger.error("controller error.url=" + url, ex);
		if (modelAndView == null) {
			modelAndView = new ModelAndView("/error/error");
			modelAndView.addObject("error.");
		}
		return modelAndView;
	}
	
}

?

springMVC对全局异常的统一处理

原文:http://sanyecao2314.iteye.com/blog/2301228

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!