JSR303后端校验
一般校验
如果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>
- 在实体类的属性上添加校验注解,如@NotNull @NotBlank @Email等,可通过赋值message属性设置校验异常信息。
@NotNull(message = "修改必须指定品牌id")
- 在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();}
调用后端接口如果参数不满足条件则会返回异常信息
分组校验
- 通过校验注解的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后端校验相关推荐
- JSR303后端校验详解
前言 数据校验是用来判断输入的数据是否满足规定的要求的. 前端可用JS来校验,如用户名唯一性,生日格式,邮箱格式校验等. 前端做了数据校验,后端也做数据校验的原因是防止有人绕过前端界面,直接向后端发起 ...
- 【工具】JSR-303后端参数校验框架的使用方法及说明
[工具]JSR-303后端参数校验框架的使用方法及说明 文章目录 [工具]JSR-303后端参数校验框架的使用方法及说明 1. 统一校验需求 2. 使用说明 2.1 引入依赖 2.2 规则说明 2.3 ...
- JSR303数据校验介绍和使用
1.介绍: JSR全称Java Specification Requests,即Java 规范提案,有很多的JSR校验,JSR就是一种java标准,JSR 303是其中的一种 2.为什么要使用JSR3 ...
- JSR303分组校验
JSR303分组校验属于后端校验的一种很方便的方式 步骤: 1.新建两个接口,用来代表哪两个组,比如,AddGroup,UpdateGroup代表添加分组和修改分组 //添加分组 package co ...
- ios 登录 java 后台,IOS苹果登录sign in with apple后端校验
IOS苹果登录sign in with apple后端校验 最近新开发的app在IOS平台app store connent提审的时候,被拒了,原因是app上如果有接第三方登陆(比如微信,微博,fac ...
- 前端校验和后端校验区别
前台验证数据格式 后台验证的是数据的正确性 当下流行的系统架构方案中,前端和后端都是分离开的. 目的:① 为了方便前端开发人员和后端开发人员可以同时开发:② 前后端分离也使得前后端的代码可以分开进行管 ...
- 【Java从0到架构师】项目实战 - 前后端分离、后端校验、Swagger、全局异常处理
项目实战 - 前后端分离.后端校验.Swagger Layui 同源策略 SpringMVC 实现 CORS 后端校验 - hibernate-validator 方法的 Model 参数校验 方法的 ...
- 前端校验还是后端校验
后端校验的 唯一性验证,验证码,敏感词,出错概率高的要做异步校验. 后端校验可以防止接口被私自调用导致破坏数据库结构:避免有人模拟浏览器行为直接给服务器发请求. 前端校验的 必填项.(邮箱.电话号.地 ...
- java学习笔记——springmvc 之 数据自定义转换器 数据格式化 JSR303数据校验返回与接收JSON(@RequestBody 和 @ResponseBody)
九.数据绑定流程分析 1.提出问题 日期字符串格式的表单参数,提交后转换为Date类型 <!-- 解决问题: 1.数据类型转换 2.数据格式 3.数据校验 --> BirthDay ...
最新文章
- 物联网在“最后一公里”投递中的应用
- PHPUnit实践三(构建模块化的测试单元)
- 说说报表工具的无编码定制能力
- 微信公众平台--3.普通消息交互(发送与接收)
- 爱创课堂每日一题第四十天- 说说你对语义化的理解?
- matlab组织的培训讲义,matlab培训讲义.doc
- RPC简介及框架选择
- 关于Tomcat5.5中EL表达式无效的解决办法
- 从包中构建瓦片服务器
- Selenium+requests出现窗口不能跳转的情况
- 当前时间时间戳以及10分钟后的时间戳
- 用打比方的方法,10分钟给小白讲清楚Kubernetes
- 最优化问题的Matlab优化工具箱求解总结
- Java实现牛牛的水杯
- FMG首席执行官被控误导股市
- ORB_SLAM2及其他SLAM精度测评
- C语言中的循环语句(while、dowhile、for)
- 隼鸟2号着陆“龙宫”并采集样品
- 域适应(DA)---域泛化(DG)
- AJAX 和 JSON学习笔记