springboot如何进行接入参数验证
发表于:2025-01-29 作者:千家信息网编辑
千家信息网最后更新 2025年01月29日,本篇文章为大家展示了springboot如何进行接入参数验证,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。使用环境 jdk1.8 spring 4及以上1、添
千家信息网最后更新 2025年01月29日springboot如何进行接入参数验证
本篇文章为大家展示了springboot如何进行接入参数验证,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
使用环境 jdk1.8 spring 4及以上
1、添加jar 包
com.github.fashionbrot mars-validated 1.0.2
2、开启使用 valid 2种方式
@SpringBootApplication@EnableValidatedConfig(fileName = "test") // fileName 默认中文jar包自带 如需要批量自定义请自己创建 test.properties 放在自己项目中的resources 下public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}
@Component@Configuration@EnableValidatedConfig(fileName = "valid_zh_CN") //默认读取 mars-validated resources 下的 valid_zh_CN,所以不写默认读取中文public class ValidConfig {}
3、自定义实现全局异常处理
拦截 ValidatedException异常类
@RestControllerAdvice@Slf4jpublic class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseStatus(HttpStatus.OK) public RespVo exception(Exception e) { log.error("exception error:",e); return RespVo.fail(RespCode.FAIL.getMsg()); } /** * 参数验证全局处理 * @param e * @return */ @ExceptionHandler(ValidatedException.class) @ResponseStatus(HttpStatus.OK) public RespVo ValidationException(ValidatedException e){ if (log.isDebugEnabled()){ log.debug("filedName:{} errorMsg:{}",e.getFieldName(),e.getMsg()); } return RespVo.fail(e.getMsg(),RespCode.PARAMETER_ERROR.getCode()); }}
4、开始使用 @Validated //接口开启验证
@Controllerpublic class TestController { @Autowired private ValidService validService; @RequestMapping("/test") @ResponseBody @Validated //接口开启验证 public String test( String abc,@Custom(min = 1,msg="请求参数失败") String abc1){ return abc+":"+abc1; } //group 验证参数 @RequestMapping("/test1") @ResponseBody @Validated(groups = {EditGroup.class}) public String test1( @Custom(min = 1,groups = {EditGroup.class,AddGroup.class}) String abc1){ return abc1; } //group 验证 bean @RequestMapping("/test2") @ResponseBody @Validated(groups = AddGroup.class) public String test2(GroupModel groupModel){ return groupModel.getAbc(); }}
5、注解
Annotation | Supported data types | 作用 |
---|---|---|
NotBlank | String | 验证String 字符串是否为空 |
NotNull | String,Object,Integer,Long,Double,Short,Float,BigDecimal, BigInteger | 验证对象是否为空 |
NotEmpty | String | 验证字符串不能为空 |
AssertFalse | Boolean,boolean,String | 只能为false |
AssertTrue | Boolean,boolean,String | 只能为true |
BankCard | String | 验证银行卡 |
CreditCard | String | 验证信用卡 |
Default | Integer,Double,Long,Short,Float,BigDecimal,String | 设置默认值 |
Digits | String | 验证是否是数字 |
String | 验证是否是邮箱 | |
IdCard | String | 验证是否是身份证,验证18岁 |
Length | int,long,short,double,Integer,Long,Float,Double,Short,String | 验证长度 |
Pattern | String | 正则表达式验证 |
Phone | String | 验证手机号是否正确 |
Size | int,long,short,Integer,Long,Short | 验证大小值 |
NotEqualSize | String | 验证长度 |
6、自定义注解
(1)定义注解
@Documented@Target({ElementType.FIELD, ElementType.PARAMETER})@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy = {CustomConstraintValidator.class,CustomConstraintValidator2.class})//可对应多个或一个实现类//CustomConstraintValidator 实现类1//CustomConstraintValidator2 实现类2public @interface Custom {//com.sgr.valid.Custom.msg jar包下的 valid_zh_CN.properties 下对应的msg String msg() default "com.sgr.valid.Custom.msg"; int min(); Class>[] groups() default {};}
(2)实现类 CustomConstraintValidator 如同 CustomConstraintValidator2
public class CustomConstraintValidator implements ConstraintValidator{ @Override public boolean isValid(Custom custom, Object var1) { /** * 自定义方法 */ int min=custom.min(); /** * valud */ System.out.println(var1); var1="567"; /** * return true 则验证成功 false 验证失败 */ return false; } //可实现对参数的修改 @Override public Object modify(Custom annotation, Object var) { System.out.println("CustomConstraintValidator:"+var); return var+"1"; }}
上述内容就是springboot如何进行接入参数验证,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
验证
参数
注解
接入
全局
内容
字符
字符串
技能
接口
知识
长度
中文
处理
简明
成功
简明扼要
作用
信用
信用卡
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
成都众游网络技术有限公司上市
WPS文字此服务器暂时不可用
打服务器ip
苏州网络技术培训机构
玄武区网络技术服务经验丰富
江西服务器防火墙供应
怎么获取图书馆数据库资源
谈谈对数据库的认识理解收获
自动转账软件开发
计算机网络技术必备知识网页
局域网查看服务器ip
网络安全三级难吗
微软云服务器加内存
1万人游戏服务器多少钱
计算机网络技术要学几年
在关系数据库中 sql
公安部网络安全保局马处长
stratus 服务器
minidao数据库
内江进销存软件开发多少钱
医鹿服务器拥挤
主要的网络安全技术包括
数据库课件
国研网数据库-镜像版
济南刚刚好网络技术公司
湖南质量软件开发近期价格
世界上最大的服务器是什么
数据库用户授权权限不足
浙江鲸腾网络技术有限公司
即时通讯软件开发文档