转载

springmvc使用@Valid和@ControllerAdvise实现请求参数校验统一异常处理

springmvc使用@Valid和@ControllerAdvise实现请求参数校验统一异常处理

最开始我使用的是jsp+servlet。后台接口使用 request.getParameter(key) 方法接收参数,特别麻烦。接收之后,我们还得进行一连串的参数校验。现在使用springboot的mvc。使用@ReuestBody接收参数,自动将前端参数解析封装成实体类。很方便,但是还是需要校验参数。下面我介绍一个简单的方式,通过@Valid和@ControllerAdvice注解实现参数校验和统一异常处理。

统一异常处理

首先介绍统一异常处理,创建类GlobalExceptionHandler

springmvc使用@Valid和@ControllerAdvise实现请求参数校验统一异常处理

通过ControllerAdvice和@ExceptionHandler注解,在Controller中发生的异常错误就到指定异常处理方法进行处理。

查看一下MethodArgumentNotValidException这个类的源码

springmvc使用@Valid和@ControllerAdvise实现请求参数校验统一异常处理

它继承了Exception,包含参数和错误。BindError参数实现了error。

统一异常处理类实现完成。

请求参数校验

我们在@RequestBody或者其它注解前面加上@Valid,就可以对实体类参数进行校验

springmvc使用@Valid和@ControllerAdvise实现请求参数校验统一异常处理

通过@Valid注解我们就对请求的参数进行验证

springmvc使用@Valid和@ControllerAdvise实现请求参数校验统一异常处理

通过javax的@NotNUll等注解可以进行校验。

如果参数是一个实体类,这个实体类的参数也需校验,需要在参数上加上@Valid注解

ok,现在参数不对的话,自动跳到GlobalExceptionHandler类的指定方法进行处理。

未完待续,有问题请留言!

个人博客地址: https://blog.ailijie.top/arch...

原文  https://segmentfault.com/a/1190000019730510
正文到此结束
Loading...