springboot学习笔记3(全局错误页面配置)

前言     

     在生产中,web程序后台处理异常报错,页面显示异常信息,这对用户来说非常不友好。springboot默认提供了对所有异常处理方法,针对服务客户端,以json格式返回异常信息,响应状态码;对浏览器客户端,响应一个单一的提示页面。springboot也提供了多个我们可选择可配置的异常处理解决方案。下面就简单的介绍一种方式。

   

  定义异常页面


          不同的异常,客户端会返回不同的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);
	}
}


测试

定义一个Controller类

@RestController public class TestController {
   @Resource
    private PersonRepository  personRepository;  

	@GetMapping(value = "/test")
	public Person test(){
		String s=null;
		Person p = personRepository.findOne(s);
		return p;
	}

浏览器中访问

 
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值