SpringMVC 異常統一處理,返回json

兩步便可:java

一、    配置本身的 統一處理類,到xml中。web

<!-- 異常統一處理 -->
    <bean id="exceptionHandler" class="com.util.aop.MyExceptionHandler"/>

二、實現 統一處理 接口。ajax

package com.util.aop;

import java.io.IOException;

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

import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class MyExceptionHandler implements HandlerExceptionResolver {  
	
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,  
            Exception ex) {  
		ModelAndView mv = new ModelAndView();	        
        /*	使用response返回	*/
        response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value()); //設置狀態碼500
        response.setContentType(MediaType.APPLICATION_JSON_VALUE); //設置ContentType
        response.setCharacterEncoding("UTF-8"); //避免亂碼
        response.setHeader("Cache-Control", "no-cache, must-revalidate");
        
        JSONObject obj = new JSONObject();
        obj.put("DATA", new JSONArray());
        obj.put("CODE", "10001");
        obj.put("MSG", ex.getMessage());
        obj.put("EX", ex.toString());
        try {
            response.getWriter().write(obj.toJSONString());
        } catch (IOException e) {
           e.printStackTrace();
        }
        return mv;
    }  
}

這裏附帶講一下, 對應 前臺ajax統一異常處理。  請看下一篇文章。spring

相關文章
相關標籤/搜索