一般校验

如果springboot2.3版本以上
引入依赖

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</dependency>
  1. 在实体类的属性上添加校验注解,如@NotNull @NotBlank @Email等,可通过赋值message属性设置校验异常信息。
@NotNull(message = "修改必须指定品牌id")
  1. 在controller方法参数前加上@Valid注解
@RequestMapping("/save")public R save(@Valid @RequestBody BrandEntity brand, BindingResult bindingResult){if(bindingResult.hasErrors()){Map<String,String> map=new HashMap<>();bindingResult.getFieldErrors().forEach((item)->{map.put(item.getField(),item.getDefaultMessage());});return R.error(400,"提交的数据不合法").put("data",map);}brandService.save(brand);return R.ok();}

调用后端接口如果参数不满足条件则会返回异常信息

分组校验

  1. 通过校验注解的groups属性设置分组,一个分组即一个空接口,一个校验规则可归属多个分组中间用逗号隔开
@NotBlank(message = "品牌名不能为空",groups = {AddGroups.class})


2.改用@Validated注解启用指定分组下的校验规则,可启用多个分组,也用逗号隔开

public R save(@Validated(AddGroups.class,UpdateGroups.class)@RequestBody BrandEntity brand, BindingResult bindingResult){

以上代表该controller方法启用AddGroups分组和UpdateGroups下的校验规则

集中处理异常

新建集中处理异常类,使用springmvc的ControllerAdvice

/*** 集中处理controller抛出的异常*/
@Slf4j
@RestControllerAdvice(basePackages = "com.atguigu.gulimall.product.controller")
public class GulimallExceptionControllerAdvice {@ExceptionHandler(value= MethodArgumentNotValidException.class)public R handleVaildException(MethodArgumentNotValidException e){log.error("数据校验出现异常{},异常类型:{}",e.getMessage(),e.getClass());BindingResult bindingResult=e.getBindingResult();Map<String,String> map=new HashMap<>();bindingResult.getFieldErrors().forEach((item)->{map.put(item.getField(),item.getDefaultMessage());});return R.error(BizCodeEnume.VALID_EXCEPTION.getCode(),BizCodeEnume.VALID_EXCEPTION.getMsg()).put("data",map);}@ExceptionHandler(value= Throwable.class)public R handleException(Throwable e){log.error("系统未知异常");return R.error(BizCodeEnume.UNKNOW_EXCEPTION.getCode(), BizCodeEnume.UNKNOW_EXCEPTION.getMsg());}
}

JSR303后端校验相关推荐

  1. JSR303后端校验详解

    前言 数据校验是用来判断输入的数据是否满足规定的要求的. 前端可用JS来校验,如用户名唯一性,生日格式,邮箱格式校验等. 前端做了数据校验,后端也做数据校验的原因是防止有人绕过前端界面,直接向后端发起 ...

  2. 【工具】JSR-303后端参数校验框架的使用方法及说明

    [工具]JSR-303后端参数校验框架的使用方法及说明 文章目录 [工具]JSR-303后端参数校验框架的使用方法及说明 1. 统一校验需求 2. 使用说明 2.1 引入依赖 2.2 规则说明 2.3 ...

  3. JSR303数据校验介绍和使用

    1.介绍: JSR全称Java Specification Requests,即Java 规范提案,有很多的JSR校验,JSR就是一种java标准,JSR 303是其中的一种 2.为什么要使用JSR3 ...

  4. JSR303分组校验

    JSR303分组校验属于后端校验的一种很方便的方式 步骤: 1.新建两个接口,用来代表哪两个组,比如,AddGroup,UpdateGroup代表添加分组和修改分组 //添加分组 package co ...

  5. ios 登录 java 后台,IOS苹果登录sign in with apple后端校验

    IOS苹果登录sign in with apple后端校验 最近新开发的app在IOS平台app store connent提审的时候,被拒了,原因是app上如果有接第三方登陆(比如微信,微博,fac ...

  6. 前端校验和后端校验区别

    前台验证数据格式 后台验证的是数据的正确性 当下流行的系统架构方案中,前端和后端都是分离开的. 目的:① 为了方便前端开发人员和后端开发人员可以同时开发:② 前后端分离也使得前后端的代码可以分开进行管 ...

  7. 【Java从0到架构师】项目实战 - 前后端分离、后端校验、Swagger、全局异常处理

    项目实战 - 前后端分离.后端校验.Swagger Layui 同源策略 SpringMVC 实现 CORS 后端校验 - hibernate-validator 方法的 Model 参数校验 方法的 ...

  8. 前端校验还是后端校验

    后端校验的 唯一性验证,验证码,敏感词,出错概率高的要做异步校验. 后端校验可以防止接口被私自调用导致破坏数据库结构:避免有人模拟浏览器行为直接给服务器发请求. 前端校验的 必填项.(邮箱.电话号.地 ...

  9. java学习笔记——springmvc 之 数据自定义转换器 数据格式化 JSR303数据校验返回与接收JSON(@RequestBody 和 @ResponseBody)

    九.数据绑定流程分析 1.提出问题 日期字符串格式的表单参数,提交后转换为Date类型 <!--    解决问题: 1.数据类型转换 2.数据格式 3.数据校验 --> BirthDay ...

最新文章

  1. 物联网在“最后一公里”投递中的应用
  2. PHPUnit实践三(构建模块化的测试单元)
  3. 说说报表工具的无编码定制能力
  4. 微信公众平台--3.普通消息交互(发送与接收)
  5. 爱创课堂每日一题第四十天- 说说你对语义化的理解?
  6. matlab组织的培训讲义,matlab培训讲义.doc
  7. RPC简介及框架选择
  8. 关于Tomcat5.5中EL表达式无效的解决办法
  9. 从包中构建瓦片服务器
  10. Selenium+requests出现窗口不能跳转的情况
  11. 当前时间时间戳以及10分钟后的时间戳
  12. 用打比方的方法,10分钟给小白讲清楚Kubernetes
  13. 最优化问题的Matlab优化工具箱求解总结
  14. Java实现牛牛的水杯
  15. FMG首席执行官被控误导股市
  16. ORB_SLAM2及其他SLAM精度测评
  17. C语言中的循环语句(while、dowhile、for)
  18. 隼鸟2号着陆“龙宫”并采集样品
  19. 域适应(DA)---域泛化(DG)
  20. AJAX 和 JSON学习笔记

热门文章

  1. 从底层到算法 — 2020年最全的大厂面试题
  2. 浅浅谈一谈B树和B+树
  3. PHP处理 EXCEL 日期格式
  4. 阿里人脸识别安全技术获专利 可防范3D人脸面具攻击
  5. 【推荐】加快Win7系统运行速度的12个小技巧
  6. BZOJ 3680 吊打XXX 模拟退火
  7. 2020年中国锂电池精密结构件行业发展现状分析,市场前景广阔「图」
  8. 系统架构设计师论文范文-论基于DSSA的软件架构设计与应用
  9. Compose Text + Canvas 写个验证码
  10. CHM win7系统打开时提示“已取消到该网页的导航”的解决方法