springboot学习笔记3(全局错误页面)
2017-05-30 00:00
501 查看
在生产中,web程序后台处理异常报错,页面显示异常信息,这对用户来说非常不友好。springboot默认提供了对所有异常处理方法,针对服务客户端,以json格式返回异常信息,响应状态码;对浏览器客户端,响应一个单一的提示页面。springboot也提供了多个我们可选择可配置的异常处理解决方案。下面就简单的介绍一种方式。
1.自定义异常页面
不同的异常,客户端会返回不同的http响应状态码:(404,403,500等)。我们可以定义以这些状态码为名字的文件名:404.html.500.html。服务的响应异常时候,就会跳转到对应状态码的页面。这些页面必须在error目录下:
现在定义一个404.html页面,然后在浏览器随便输入一个地址:localhost:8080/test/test...(如上图)
2.对于restful风格,请求返回的都是json格式数据。我们可以在这样定义一个类
定义一个restful风格处理类,在浏览器中访问:
注意;并不是所有异常都会返回json格式信息,可能会返回配置的错误页面,这样看具体的异常类型。
1.自定义异常页面
不同的异常,客户端会返回不同的http响应状态码:(404,403,500等)。我们可以定义以这些状态码为名字的文件名:404.html.500.html。服务的响应异常时候,就会跳转到对应状态码的页面。这些页面必须在error目录下:
现在定义一个404.html页面,然后在浏览器随便输入一个地址:localhost:8080/test/test...(如上图)
2.对于restful风格,请求返回的都是json格式数据。我们可以在这样定义一个类
@ControllerAdvice(basePackages = "com.test") public class AdviceConfigurer extends ResponseEntityExceptionHandler { @ExceptionHandler({ Exception.class }) @ResponseBody ResponseEntity<?> handleControllerException(HttpServletRequest request, Throwable ex) { HttpStatus status = getStatus(request); Map<String, Object> map = new HashMap<String, Object>(); #状态码 map.put("status", status.value()); #标识失败 map.put("flag", "01"); #异常信息 map.put("message", ex.getMessage()); return new ResponseEntity<>(map, status); } private HttpStatus getStatus(HttpServletRequest request) { Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code"); if (statusCode == null) { return HttpStatus.INTERNAL_SERVER_ERROR; } return HttpStatus.valueOf(statusCode); } }
定义一个restful风格处理类,在浏览器中访问:
@RestController public class TestController { @Resource private PersonRepository personRepository; @GetMapping(value = "/test") public Person test(){ String s=null; Person p = personRepository.findOne(s); return p; }
注意;并不是所有异常都会返回json格式信息,可能会返回配置的错误页面,这样看具体的异常类型。
相关文章推荐
- spring boot框架学习9-spring boot的web开发(5)-错误解决及跳转页面
- SprintBoot学习笔记(2):SpringBoot跳转至页面
- Spring Boot学习笔记-错误处理及自定义
- 全局异常处理类的定义与错误页面实现(基于SpringBoot)
- spring boot框架学习9-spring boot的web开发(5)-错误解决及跳转页面
- Springboot学习笔记之读取全局配置文件参数
- spring-boot学习笔记(3)
- Spring Boot学习笔记-配置devtools实现热部署
- 2小时学会Spring Boot 学习笔记
- SpringBoot 学习笔记
- springboot学习(3)springboot使用jsp完成数据的页面展示
- SpringBoot学习笔记(4) Spring Boot 集成 Mybatis
- Spring boot 学习笔记(04)—— 多环境配置(dev,test,pro)
- SpringBoot学习笔记--HelloWorld
- SpringBoot页面表单请求失败,错误400的解决办法
- Spring Boot 学习笔记(三)
- Spring-Security笔记7 错误页面统一处理
- 2016书单总结--spring-boot-in-action学习笔记--源码简析
- 搭建SpringBoot、Jsp支持学习笔记
- spring+mybatis轻量级企业框架的学习之路之错误笔记day04