博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
16、SpringBoot-CRUD错误处理机制(3)
阅读量:7226 次
发布时间:2019-06-29

本文共 2577 字,大约阅读时间需要 8 分钟。

 3)、将自己指定的数据携带出去

出现错误以后,会来到/error请求,会被
BasicErrorController 进行处理
响应出去的数据是由 getErrorAttributes 得到的( AbstractErrorController的方法)
protected Map
getErrorAttributes(HttpServletRequest request,      boolean includeStackTrace) { WebRequest webRequest = new ServletWebRequest(request); return this.errorAttributes.getErrorAttributes(webRequest, includeStackTrace);}

 

 

3.1、完全来编写一个ErrorController的实现类【或者是编写AbstractErrorController的子类】,放在容器中
 
3.2、页面上能用的数据,或者是json返回能用的数据都是通过errorAttributes.getErrorAttributes得到
        容器中DefaultErrorAttributes.getErrorAttributes();默认进行数据处理的;
public abstract class AbstractErrorController implements ErrorController {    private final ErrorAttributes errorAttributes;...}

 

 此时自定义的错误代码中的字段并没有显示

//给容器中加入@Componentpublic class MyErrorAttributes extends DefaultErrorAttributes {    @Override    public Map
getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) { Map
map =super.getErrorAttributes(webRequest,includeStackTrace); map.put("user","user..."); return map; }}

 

 

错误页面:

 

 自定义异常的字段

@ControllerAdvicepublic class MyException  {    @ExceptionHandler(UserException.class)    public String userExc(Exception e, HttpServletRequest request){        Map
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.not.exist"); map.put("message","mymessage"); request.setAttribute("exc",map); return "forward:/error"; }}
//给容器中加入@Componentpublic class MyErrorAttributes extends DefaultErrorAttributes {    //返回的值map就是页面和json能获取的所有字段    @Override    public Map
getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) { Map
map =super.getErrorAttributes(webRequest,includeStackTrace); map.put("user","user..."); //自己的异常处理器携带的数据 //0 是request中 //1 是session中 Map
exc = (Map
) webRequest.getAttribute("exc", 0); map.put("exc",exc); return map; }}

 

 错误的页面:

status:[[${status}]]

timestamp:[[${timestamp}]]

error:[[${error}]]

message:[[${message}]]

user:[[${user}]]

exc.code:[[${exc.code}]]

exc.message:[[${exc.message}]]

 

 

 

转载于:https://www.cnblogs.com/Mrchengs/p/10357013.html

你可能感兴趣的文章
TCP/IP协议及首部初了解
查看>>
防火墙iptables
查看>>
CUDA搭建
查看>>
memcached与PostgreSQL缓存命中机制
查看>>
百度地图路线检索(3)
查看>>
linux netstat 命令详解
查看>>
对前几篇blog的环境等的补充说明
查看>>
Curl命令使用解析大全
查看>>
MySQL日期函数
查看>>
【00】Effective Java
查看>>
.NET重构—单元测试重构
查看>>
SMB简介sabma服务(一)
查看>>
ANT简明教程
查看>>
Eclipse Luna WTP 与 Tomcat 8 的整合存在一个很头疼的 Bug
查看>>
小数在计算机里面的存放
查看>>
数据结构中的各种树简单解释
查看>>
我的朗科运维第七课
查看>>
CentOS的进程管理二
查看>>
https客户端证书导入
查看>>
用 PreparedStatement 向 SqlServer 中一次性插入多条记录
查看>>