GlobalHandlerExceptionResolver.java 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package com.yihu.jw.config.mvc;
  2. import com.yihu.jw.restmodel.exception.SecurityException;
  3. import com.yihu.jw.restmodel.exception.SystemException;
  4. import com.yihu.jw.restmodel.exception.business.ManageException;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.stereotype.Component;
  8. import org.springframework.web.servlet.HandlerExceptionResolver;
  9. import org.springframework.web.servlet.ModelAndView;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import java.io.PrintWriter;
  13. /**
  14. * Created by chenweida on 20170317.
  15. * 全局异常处理
  16. */
  17. @Component
  18. public class GlobalHandlerExceptionResolver implements HandlerExceptionResolver {
  19. private Logger logger = LoggerFactory.getLogger(GlobalHandlerExceptionResolver.class);
  20. private static Integer status_500 = 500;//后台异常
  21. private static Integer status_510 = 510;//后台管理系统异常
  22. private static Integer status_403 = 403;//没权限 未登录 等权限异常
  23. /**
  24. * 在这里处理所有得异常信息
  25. */
  26. @Override
  27. public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse resp, Object o, Exception ex) {
  28. String error = ex.getMessage();
  29. logger.error(error);
  30. if (ex instanceof ManageException) {
  31. //后台管理系统异常
  32. printWrite(status_510, error, resp);
  33. } else if (ex instanceof SecurityException) {
  34. //权限异常
  35. printWrite(status_403, error, resp);
  36. } else {
  37. //系统异常
  38. printWrite(status_500, error, resp);
  39. }
  40. return new ModelAndView();
  41. }
  42. /**
  43. * 将错误信息添加到response中
  44. */
  45. public static void printWrite(int status, String msg, HttpServletResponse response) {
  46. try {
  47. response.setStatus(status);
  48. response.setCharacterEncoding("UTF-8");//设置编码
  49. response.setHeader("Cache-Control", "no-store");
  50. response.setHeader("Pragma", "no-cache");
  51. response.setHeader("Content-Type", "Content-Type: text/html; charset=utf-8");
  52. response.setHeader("Accept Encoding", "utf-8");
  53. PrintWriter pw = response.getWriter();
  54. pw.write(msg);
  55. pw.flush();
  56. pw.close();
  57. } catch (Exception e) {
  58. e.printStackTrace();
  59. }
  60. }
  61. }