|
@ -0,0 +1,67 @@
|
|
|
package com.yihu.jw.config.mvc;
|
|
|
|
|
|
import com.yihu.jw.restmodel.exception.SecurityException;
|
|
|
import com.yihu.jw.restmodel.exception.SystemException;
|
|
|
import com.yihu.jw.restmodel.exception.business.ManageException;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.web.servlet.HandlerExceptionResolver;
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.PrintWriter;
|
|
|
|
|
|
/**
|
|
|
* Created by chenweida on 20170317.
|
|
|
* 全局异常处理
|
|
|
*/
|
|
|
@Component
|
|
|
public class GlobalHandlerExceptionResolver implements HandlerExceptionResolver {
|
|
|
private Logger logger = LoggerFactory.getLogger(GlobalHandlerExceptionResolver.class);
|
|
|
private static Integer status_500 = 500;//后台异常
|
|
|
private static Integer status_510 = 510;//后台管理系统异常
|
|
|
private static Integer status_403 = 403;//没权限 未登录 等权限异常
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 在这里处理所有得异常信息
|
|
|
*/
|
|
|
@Override
|
|
|
public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse resp, Object o, Exception ex) {
|
|
|
String error = ex.getMessage();
|
|
|
logger.error(error);
|
|
|
if (ex instanceof ManageException) {
|
|
|
//后台管理系统异常
|
|
|
printWrite(status_510, error, resp);
|
|
|
} else if (ex instanceof SecurityException) {
|
|
|
//权限异常
|
|
|
printWrite(status_403, error, resp);
|
|
|
} else {
|
|
|
//系统异常
|
|
|
printWrite(status_500, error, resp);
|
|
|
}
|
|
|
return new ModelAndView();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 将错误信息添加到response中
|
|
|
*/
|
|
|
public static void printWrite(int status, String msg, HttpServletResponse response) {
|
|
|
try {
|
|
|
response.setStatus(status);
|
|
|
response.setCharacterEncoding("UTF-8");//设置编码
|
|
|
response.setHeader("Cache-Control", "no-store");
|
|
|
response.setHeader("Pragma", "no-cache");
|
|
|
response.setHeader("Content-Type", "Content-Type: text/html; charset=utf-8");
|
|
|
response.setHeader("Accept Encoding", "utf-8");
|
|
|
PrintWriter pw = response.getWriter();
|
|
|
pw.write(msg);
|
|
|
pw.flush();
|
|
|
pw.close();
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|