标签:default def and int 编写 分享 obj src 情况
? 1)、有模板引擎的情况下;error/状态码; 【将错误页面命名为 错误状态码.html 放在模板引擎文件夹里面的 error文件夹下】,发生此状态码的错误就会来到 对应的页面;
? 我们可以使用4xx和5xx作为错误页面的文件名来匹配这种类型的所有错误,精确优先(优先寻找精确的状态码.html);
? 页面能获取的信息;
? timestamp:时间戳
? status:状态码
? error:错误提示
? exception:异常对象
? message:异常消息
? errors:JSR303数据校验的错误都在这里
? 2)、没有模板引擎(模板引擎找不到这个错误页面),静态资源文件夹下找;
? 3)、以上都没有错误页面,就是默认来到SpringBoot默认的错误提示页面;
? 1)、自定义异常处理&返回定制json数据;
@ResponseBody @ExceptionHandler(UserNotExistException.class) public Map<String,Object> handleException(Exception e){ Map<String,Object> map = new HashMap<>(); map.put("code","user.notexist"); map.put("message",e.getMessage()); return map; }
2)、转发到/error进行自适应响应效果处理
@ControllerAdvice public class DemoExceptionHandler { @ExceptionHandler(DemoException.class) public String handleException(Exception e, HttpServletRequest request){ Map<String,Object> map = new HashMap<>(); //传入我们自己的错误状态码 4xx 5xx //Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code"); //设置成自己的状态码 request.setAttribute("javax.servlet.error.status_code",500); map.put("code","user.notexist"); map.put("message","用户出错啦"); request.setAttribute("ext",map); //转发到 /error由我们的BasicError 来处理返回JSON还是页面.. return "forward:/error"; } }
? 1、完全来编写一个ErrorController的实现类【或者是编写AbstractErrorController的子类】,放在容器中;
? 2、页面上能用的数据,或者是json返回能用的数据都是通过errorAttributes.getErrorAttributes得到;
? 容器中DefaultErrorAttributes.getErrorAttributes();默认进行数据处理的;
//定义自己的错误消息 @Component public class MyErrorAttributes extends DefaultErrorAttributes { @Override public Map<String, Object> getErrorAttributes(RequestAttributes requestAttributes, boolean includeStackTrace) { Map<String, Object> map = super.getErrorAttributes(requestAttributes, includeStackTrace); map.put("company", "hh");
//我们的异常处理器携带的数据 requestAttributes为请求域中取数据
Map<String,Object> ext = (Map<String, Object>) requestAttributes.getAttribute("ext", 0);
map.put("ext",ext);
return map; }
}
原因: 如下图,我们放入ErrorAttributes 就会加入数据并返回
最终的效果:响应是自适应的,可以通过定制ErrorAttributes改变需要返回的内容,
标签:default def and int 编写 分享 obj src 情况
原文地址:https://www.cnblogs.com/eason-d/p/9315207.html