springboot参数格式怎么校验
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍"springboot参数格式怎么校验",在日常操作中,相信很多人在springboot参数格式怎么校验问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"s
千家信息网最后更新 2025年01月18日springboot参数格式怎么校验
这篇文章主要介绍"springboot参数格式怎么校验",在日常操作中,相信很多人在springboot参数格式怎么校验问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"springboot参数格式怎么校验"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
springboot 参数格式校验
@Validated
字面意思校验
@RequestBody
该注解不用多说,意思是接收为json格式的参数
@Validated
字面意思校验, 需要配合@NotBlank 或者 @NotNull 注解才能生效
进入到请求体参数中。
springboot 参数注解校验
1.添加依赖
org.springframework.boot spring-boot-starter-validation
package com.xl.annotation;import lombok.Data;import org.hibernate.validator.constraints.Length;import org.hibernate.validator.constraints.Range;import javax.validation.constraints.*;import java.math.BigDecimal;import java.util.Date;@Datapublic class User { @NotNull(message = "ID不能为空") @Range(min = 1, max = 100, message = "ID必须在1到100之间") private Integer id; @NotNull(message = "姓名不能为空") @Length(min = 2, max = 6, message = "姓名必须在2到6位之间") private String name; @NotNull(message = "余额不能为空") @DecimalMax(value = "30.50", message = "余额不能超过30.5") @DecimalMin(value = "1.50", message = "余额不能低于1.5") private BigDecimal amount; @NotNull(message = "生日不能为空") @Past(message = "生日必须是过去") private Date birthday; @NotBlank(message = "邮箱不能为空") @Email(message = "邮箱格式不正确") private String email; @NotBlank(message = "手机号不能为空") @Pattern(regexp = "^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))d{8})$", message = "手机号格式错误") private String phone;}
2.controller层
package com.xl.annotation;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import io.swagger.annotations.ApiParam;import org.springframework.validation.BindingResult;import org.springframework.validation.ObjectError;import org.springframework.validation.annotation.Validated;import org.springframework.web.bind.annotation.*;import javax.validation.ValidationException;import javax.validation.constraints.Max;import javax.validation.constraints.NotNull;@RestController@Validated@Api(value = "手机验证",description = "手机验证")public class MobileController {@ApiOperation("手机验证")@RequestMapping("/phone") public String mobilePattern( Phone phone){ return "chengg"; } @PostMapping("/getUser") @ApiOperation("手机验证12") public String getUserStr( @NotNull(message = "name 不能为空")@RequestParam String name, @Max(value = 99, message = "不能大于99岁")@RequestParam Integer age) { return "name: " + name + " ,age:" + age; } /* @PostMapping("/getUser1") @ApiOperation("手机验证c") public String getUser(@RequestBody @Validated User user, BindingResult bindingResult) { validData(bindingResult); return "name: " + user.getName() + " ,age:" + user.getAge(); }*/ private void validData(BindingResult bindingResult) { if (bindingResult.hasErrors()) { StringBuffer sb = new StringBuffer(); for (ObjectError error : bindingResult.getAllErrors()) { sb.append(error.getDefaultMessage()); } throw new ValidationException(sb.toString()); } } @PostMapping("/test") @ApiOperation(value = "测试", notes = "") public String test(@ApiParam(name = "test", value = "参数", required = true) @Validated @RequestBody User test, BindingResult bindingResult) { validData(bindingResult); if(bindingResult.hasErrors()){ String errorMsg = bindingResult.getFieldError().getDefaultMessage(); return errorMsg; } return "参数验证通过"; }}
3.自定义一个抛出异常类
package com.xl.annotation;import org.springframework.http.HttpStatus;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseStatus;import org.springframework.web.bind.annotation.RestControllerAdvice;import javax.validation.ConstraintViolation;import javax.validation.ConstraintViolationException;import javax.validation.ValidationException;import java.util.Set;/** * 自定义验证抛出异常 */@RestControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(ValidationException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public String handle(ValidationException exception) { if(exception instanceof ConstraintViolationException){ ConstraintViolationException exs = (ConstraintViolationException) exception; Set> violations = exs.getConstraintViolations(); for (ConstraintViolation> item : violations) { //打印验证不通过的信息 System.out.println(item.getMessage()); } } return exception.getMessage(); }}
4.加一个当检测第一个参数不合法时立即返回错误不会继续进行校验
package com.xl.annotation;import org.hibernate.validator.HibernateValidator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.validation.Validation;import javax.validation.Validator;import javax.validation.ValidatorFactory;@Configurationpublic class ValidatorConf { @Bean public Validator validator() { ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class ) .configure() .failFast( true ) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator(); return validator; }}
到此,关于"springboot参数格式怎么校验"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
参数
格式
验证
手机
学习
余额
意思
注解
之间
姓名
字面
手机号
更多
生日
邮箱
错误
帮助
实用
接下来
不用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库技术及应用b卷孟凡荣
直播软件开发都需要什么软件
判断无损分解 数据库
软件开发的营销思路怎么写
万方医学数据库如何插入论文
无线网络安全绘画软件
大型组网数据库
用友8管理服务器
期刊不收录数据库
dbms不同属于什么数据库
网络安全事件看法
输出数据库中的收货地址信息
下载数据库需要备份吗
陕西有个科技互联网公司
ssh框架连接数据库连接
pes2009捏脸数据库
中华人民共和国网络安全法绘画
手机版最火服务器号
洞见数据库
宁夏思杰网络技术有限公司网页
软件开发就业市场调研报告
服务器怎么挖矿
软件开发法律环境风险
qq云服务器可以挂机器人吗
网络技术基础通识课
企业物理网络安全方案
蜜芽无法与服务器建立安全连接
深圳市的金融软件开发公司
萌辉网络技术有限公司
防火墙保护数据库