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

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

     1.自定义异常页面

          不同的异常,客户端会返回不同的http响应状态码:(404,403,500等)。我们可以定义以这些状态码为名字的文件名:404.html.500.html。服务的响应异常时候,就会跳转到对应状态码的页面。这些页面必须在error目录下:

160225_KGYF_3511639.png  160447_GD3N_3511639.png

 现在定义一个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;
	}

174159_0ZGA_3511639.png

注意;并不是所有异常都会返回json格式信息,可能会返回配置的错误页面,这样看具体的异常类型。

 

 

 

转载于:https://my.oschina.net/u/3511639/blog/911359

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值