springMVC全局異常處理


在springmvc作控制層的應用中,我們在接收客戶端的ajax請求時候,正常是返回json數據,當service層拋出異常時候,我們希望給前台返回的是格式統一的json,這時候就可以用到全局異常處理器,規范controller層的編寫。

配置起來也特別簡單
一 、 在springmvc 掃描包里配置下面的類

import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

public class DefaultExceptionHandler implements HandlerExceptionResolver {

private static Logger log = LoggerFactory.getLogger(DefaultExceptionHandler.class);

public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
ModelAndView mv = new ModelAndView();
response.setStatus(500);
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
response.setCharacterEncoding("UTF-8");
response.setHeader("Cache-Control", "no-cache, must-revalidate");
try {
response.getWriter().write("{\"success\":-1,\"msg\":\"" + ex.getMessage() + "\"}");
} catch (IOException e) {
log.error("與客戶端通訊異常:"+ e.getMessage(), e);
}

log.debug("異常:" + ex.getMessage(), ex);
return mv;
}
}

二 、 在springmvc的配置文件中配置

<bean id="exceptionHandler" class="cn.ssm.core.controller.DefaultExceptionHandler" />

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: