SpringMVC项目 Exception统一管理

web.xml:

<error-page>
        <error-code>404</error-code>  
        <location>/WEB-INF/view/exception/404.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/WEB-INF/view/exception/500.jsp</location>
    </error-page>

BaseController.java

protected final Logger logger = LoggerFactory.getLogger(BaseController.class);
	/** 基于@ExceptionHandler异常处理 */  
    @ExceptionHandler  
    public ModelAndView exp(HttpServletRequest request, HttpServletResponse response,Exception exception) {  
        request.setAttribute("ex", exception);  
        exception.printStackTrace();
     		if (!(request.getHeader("accept").indexOf("application/json") > -1 || (request
     				.getHeader("X-Requested-With") != null && request.getHeader( 
     				"X-Requested-With").indexOf("XMLHttpRequest") > -1))) {  // 判断是否ajax请求
     			Map<String, Object> map = new HashMap<String, Object>();
     			map.put("error",exception.getMessage());
     			exception.printStackTrace();
     			return new ModelAndView("exception/error", map);
     		} else {
     			try {
     				response.setContentType("application/json;charset=UTF-8");
     				PrintWriter writer = response.getWriter();
     				JSONObject jsonObject = new JSONObject();
     				jsonObject.put("error",exception.getMessage());
     				writer.write(jsonObject.toString());
     				writer.flush();
     				writer.close();
     				exception.printStackTrace();
     			} catch (IOException e) {
     				e.printStackTrace();
     			}
     		}
     		return null;
    }  

ajax请求:

$.ajax({
			url : url + "?r=" + (new Date().getTime()),
			dataType : dataType,
			data : data,
			method : "post",
			success : function(ret) {
				if (dataType == 'json') {
					if(ret.error=="" || ret.error==null || ret.error=='undefined'){
						callback.call(this, ret);
					}else{
						layer.open({//layer 弹出框插件 
							  icon: 5,
							  title: '错误提示',
							  content:"糟糕,网页访问出错啦!"
					    })
					}
				} else {
					ret = eval("(" + ret + ")");
					if (ret.success == 'undefined'|| ret.success == undefined) {
							callback.call(this, ret);
					} else {
						if (ret.success == true) {
							callback.call(this, ret);
						} else {
							alert(ret.error);
						}
					}
				}
				unMask(domId);
			},
			error : function(ret, textStatus, errorThrown) {
				unMask(domId);
				alert(ret.responseText);
			}
	})

转载于:https://my.oschina.net/maoguangdong/blog/761082

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值