java后端传参数据校验
前端传数据到后端,后端需要对数据进行必要的数据校验,本人使用SpringBoot的validation
pom文件引入包
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>
再类上增加校验规则
public class TicketVspRequestBean extends BaseRequestBean{/*** 编号。*/@NotEmpty(groups ={AskAgainVspTicket.class,ChangeVspTicket.class},message = "唯一编号不能为空")@Length(groups =CreateVspTicket.class,max= 36)private String code;/*** 类型。*/@NotEmpty(groups = CreateVspTicket.class,message = "类型不能为空")@Size(groups =CreateVspTicket.class,max = 50)private String type;public interface CreateVspTicket{}public interface AskAgainVspTicket{}public interface ChangeVspTicket{}
}
groups 表示分组在使用的时候可以标识用那个分组的校验规则
使用
@PostMapping("/create")public void findByConditionAndPage(@Validated(TicketVspRequestBean.CreateVspTicket.class) @RequestBody final TicketVspRequestBean requestBean) {}
以上即完成对入参的校验,根据标识来校验不同类型的数据。
@Validated与@Valid的不同点
@Valid注解与@Validated注解功能大部分类似;两者的不同主要在于:@Valid属于javax下的,而@Validated属于spring下;@Valid支持嵌套校验、而@Validated不支持,@Validated支持分组,而@Valid不支持。笔者这里只简单介绍@Validated的使用时机
对校验失败的响应处理
@ControllerAdvice
@Slf4j
public class ExceptionHandlerConfig {/*** 校验错误拦截处理** @param exception 错误信息集合* @return 错误信息*/@ExceptionHandler(MethodArgumentNotValidException.class)@ResponseBodypublic HttpResult<String> validationBodyException(MethodArgumentNotValidException exception) {//对校验错误信息进行封装,并输出到日志BindingResult result = exception.getBindingResult();StringBuilder errorMessage = new StringBuilder();if (result.hasErrors()) {List<ObjectError> errors = result.getAllErrors();errors.forEach(p -> {FieldError fieldError = (FieldError) p;log.error("数据校验错误 : object{" + fieldError.getObjectName() + "},field{" + fieldError.getField() +"},errorMessage{" + fieldError.getDefaultMessage() + "}");errorMessage.append(fieldError.getDefaultMessage());});}log.info("验证字段{}",errorMessage.toString());return DefaultHttpResultFactory.fail(errorMessage.toString(),null);}
}
总结常用的有
java后端传参数据校验相关推荐
- Java中传参数--值传递和引用传递
** Java中传参数–值传递和引用传递 ** 在Java中,传参数分为值传递和引用传递. 在Java中的数据类型分为两大类:一类是引用类型,也叫类类型(除了String以外的所有复合数据类型,包括数 ...
- spring多参java注解_spring参数注解校验
在写一些controller协议的时候,有些时候从前端传过来的参数较多,好的办法是定义一个实体类来封装请求参数,但是用实体类封装参数后,无法对参数值进行校验,可以使用spring的@Validated ...
- java后端传object给js_【JSON】JSON在前端和后端传递
前后台最最传统的交互方式就是表单交互,然后用request.setAttribute方法设置结果,渲染jsp,然而随着前台界面的复杂程度的提高,或者是使用了某些前端框架(sigmagrid)越来越多的 ...
- java httpget 传参数_Java 发送http请求(get、post)
1.情景展示 java发送get请求.post请求(form表单.json数据)至另一服务器: 可设置HTTP请求头部信息,可以接收服务器返回cookie信息,可以上传文件等: 2.代码实现 所需ja ...
- shell脚本触发java程序传参数
eods.sh nohup java -cp "./xxx.war/WEB-INF/lib/*:./xxx.war/WEB-INF/classes" com.gblfy.datat ...
- Java后端传图片字节流到Vue前端显示
Java将本地图片转字节流byte[]数组 service @Overridepublic byte[] image2bytes(String imgSrc) throws Exception {Fi ...
- kettle java交互_java程序中给Kettle传参数,其实很简单
前段时间让同事研究下kettle如何通过java方法传参数,回答说资料太少搞不定,心理不爽,今天上网搜了搜果然文章鱼龙混杂,最终发现,其实步骤很简单,标红的地方就是要注意的地方.代码例子是调用job的 ...
- 解决“微信小程序http请求参数为空时,传到java后端变成了undefined”问题
遇到问题: 最近在对接微信小程序和java后端springboot框架的接口,然后发现一个问题,当微信小程序发起http请求时,如果请求参数的值为空,传到java后端时就变成了undefined,这样 ...
- 实现Java后端数据校验
每次我们在搭建一个开源项目的首要任务包括:项目的统一异常处理.统一结果封装以及做项目的数据校验,在前后端分离的情况下,不仅前端需要做数据校验,同样后端也要实现,前端主要使用一些类似与jQuery Va ...
最新文章
- eclipse.ini内存设置(转)
- 十款让 Web 前端开发人员更轻松的实用工具
- 计算机网络原理和应用,计算机网络原理与应用
- Docker(2):使用Dockerfile创建支持SSH服务的镜像
- Java黑皮书课后题第2章:2.11(人口统计)重写编程练习题1.11,提示用户输入年数,然后显示这个年数之后的人口值,将1.11中的提示用于这个程序
- 前端学习(2354):image组件的基本使用
- 解决mysql表被crash的一次维护始末
- java 格式化 布尔型_这么久才知道Java中的format很强大!
- 《LoadRunner 没有告诉你的》之四——理解性能
- [转]Bootstrap table后端分页(ssm版)
- collection集合 网_房地产信托业务(集合)2020年1-9月分析报告
- JavaScript学习(五十八)—作用域链
- 寒假作业3(传说中的写软件)
- CentOS7 安装Redis 单机版
- 【UML】——为什么要使用UML
- c# oracle 中文列名,sql中中文列名
- 机器学习的数学基础(3):正交性原理(orthogonality principle)
- mysql 查询距离某天最近的一条记录
- brctl配置linux bridge及虚拟bridge实现
- 摄影师用AI预测MJ、李小龙活到现在长什么样,网友看后泪目
热门文章
- 大唐杯 5G工程实践 (35:00-45:00)任务三 任务五(15%)
- Qt用户自定义布局的数据看板实现
- 「企业管理」精诚CRM+——一体化管理企业业务流程
- Android build.prop详细优化
- 计算机初中教师资格教案,教师资格初中信息技术《设置超链接》教案
- catf1ag web题目 WriteUp(wp)
- windows_server2016中安装主板驱动,蓝屏重启
- 数据仓库灵魂30问之数仓有哪几种建模思想?
- 维基解秘的兄弟网站Cryptome.org
- 智能客服系列3 seq2seq+attention【Python十分钟写出聊天机器人】基于Keras实现seq2seq模型