前言

每次我们在搭建一个开源项目的首要任务包括:项目的统一异常处理、统一结果封装以及做项目的数据校验,在前后端分离的情况下,不仅前端需要做数据校验,同样后端也要实现,前端主要使用一些类似与jQuery Validate等js/css插件实现通过数据校验,比如:bootstrap-validator,而后端主要使用的是Hibernate Validator检验框架,通过数据校验,我们能避免用户借助一些HTTP请求工具直接向后端发送一些不合法的数据请求,本文将入如何在Spring/Spring Boot下实现后端的数据校验。

Hibernate Validator

常见注解

注解

用途

Valid

递归的对关联的对象进行校验

AssertFalse

用于boolean字段,该字段的值只能为false

AssertTrue

用于boolean字段,该字段只能为true

DecimalMax(value)

被注释的元素必须是一个数字,只能大于或等于该值

DecimalMin(value)

被注释的元素必须是一个数字,只能小于或等于该值

Digits(integer,fraction)

检查是否是一种数字的(整数,小数)的位数

Future

检查该字段的日期是否是属于将来的日期

FutureOrPresent

判断日期是否是将来或现在日期

Past

检查该字段的日期是在过去

PastOrPresent

判断日期是否是过去或现在日期

Max(value)

该字段的值只能小于或等于该值

Min(value)

该字段的值只能大于或等于该值

Negative

判断负数

NegativeOrZero

判断负数或0

Positive

判断正数

PositiveOrZero

判断正数或0

NotNull

不能为null

Null

必须为 null

Pattern(value)

被注释的元素必须符合指定的正则表达式

Size(max, min)

检查该字段的size是否在min和max之间,可以是字符串、数组、集合、Map等

Length(max, min)

判断字符串长度

CreditCardNumber

被注释的字符串必须通过Luhn校验算法,银行卡,信用卡等号码一般都用Luhn计算合法性

Email

被注释的元素必须是电子邮箱地址

Length(min=, max=)

被注释的字符串的大小必须在指定的范围内

NotBlank

只能用于字符串不为null,并且字符串trim()以后length要大于0

NotEmpty

集合对象的元素不为0,即集合不为空,也可以用于字符串不为null

Range(min=, max=)

被注释的元素必须在合适的范围内

SafeHtml

classpath中要有jsoup包

ScriptAssert

要有Java Scripting API 即JSR 223("Scripting for the JavaTMPlatform")的实现

URL(protocol=,host=,port=,regexp=,flags=)

被注释的字符串必须是一个有效的url

Maven依赖

org.hibernate.validator

hibernate-validator

6.1.0.Final

org.hibernate.validator

hibernate-validator

6.1.0.Final

org.springframework.boot

spring-boot-starter-web

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

java 后端校验_如何实现Java后端数据校验?看这篇就足够!相关推荐

  1. Java 动静分离_如何做前后端动静分离

    我们的 ERP 系统就是前后端完全分离,毫无关联. 后端用的是改造的 Laravel 框架,将业务拆分.路由拆分,来分离后端复杂的权限验证,同时对外依旧是简单明确的 RESTful API. 前端采用 ...

  2. springboot jwt token前后端分离_为什么要 前后端分离 ?

    作 者:互扯程序 来 源:互扯程序 广而告之:由于此订阅号换了个皮肤,系统自动取消了读者的公众号置顶.导致用户接受文章不及时.您可以打开订阅号,选择置顶(星标)公众号,重磅干货,第一时间送达! 本文知 ...

  3. linux java远程调试_[转]JPDA:Java平台调试架构(常用的远程调试方法)

    原文出处:http://www.javaeye.com/topic/75128 最近使用WTP的Server功能很不爽,连tomcat服务器时java类中的任何改动都要重启服务器,一怒之下就改用JPD ...

  4. java 异常机制_深入理解Java异常处理机制

    一.引子 try-catch-finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的"教训"告诉我,这个东西可不是想象中 ...

  5. 马士兵 java 学习笔记_马士兵java教程笔记1

    ---恢复内容开始--- 前记 虽然已经是个研究生了,但是会的东西还是特别的少 甚至连java都不能说是很会 所以准备从现在开始能好好的学习java 变成java master 标识符 标识符是由字母 ...

  6. java 防止反射_如何防止JAVA反射对单例类的攻击?

    在我的上篇随笔中,我们知道了创建单例类有以下几种方式: (1).饿汉式; (2).懒汉式(.加同步锁的懒汉式.加双重校验锁的懒汉式.防止指令重排优化的懒汉式); (3).登记式单例模式; (4).静态 ...

  7. java 02-cf_cf活动如何设置java环境变量_如何设置java环境变量

    cf助手怎么连接wifi_连接无线网设置 对于刚刚学习java的win7用户来说,首先要学会安装jdk和配置java环境变量,这是学习java的唯一途径,否则编写的代码运行时会出现bug.关于这一点, ...

  8. java switch 表达式_尝鲜Java 12新特性:switch表达式

    Java 12将在两个月后(2019/3/19)发布,现已进入RDP1阶段,确定加入8个JEP.其中对Java语法的改进是JEP 325: switch表达式.于是我迫不及待,提前感受一下更先进的语言 ...

  9. java 字符串乱码_这份Java面试题含答案解析竟然真的让你不用在面试上“如履薄冰”...

    面试题集共分为以下十部分: 一.Core Java: 1 - 95 题1 - 24 页 基础及语法: 1 - 61 题1 - 13 页 异常: 62 - 69 题13 - 15 页 集合: 70 - ...

最新文章

  1. 大数据流通存隐忧 产业信任体系亟待建立
  2. 乐玩插件和大漠插件哪个好_用好这5款Chrome插件,大幅提升你的生产力
  3. vue 全局函数的 定义与任意调用 (代码篇)
  4. Git笔记(25) 选择修订版本
  5. Xen Documentation - Hypercall Interfaces
  6. oracle数据库plsqldev导出表、表结构的方法
  7. 你真的懂智慧园区数字平台?快来看看吧
  8. 给惠普735g5 装Win10+Ubuntu 16.04双系统
  9. C# winform国际版,中英文转换
  10. jmp指令流程图怎么写_NS流程图是什么?规范实用的流程图工具
  11. [转]禅修程序员十诫
  12. 智能车辆纵向速度跟踪与控制方法研究
  13. 微信内分享域名防红方案-微信域名防封跳转技术的方案解析_微信域名防封推广源码
  14. [Eclipse手册]设置pom.xml打开方式
  15. BI神器Power Query(16)-- PQ制作时间维度表(5)
  16. 深度学习:隐马尔科夫模型
  17. LeetCode——223. 矩形面积(Rectangle Area)[中等]——分析及代码(C++)
  18. 网站权重怎么批量查?怎么批量查询网站的360权重
  19. EigenGame:将主成份分析(PCA)作为一个博弈游戏
  20. Linux文件目录层级结构

热门文章

  1. Nginx核心模块——HTTP中的配置指令location和rewrite介绍
  2. python哪个关键字可以导入模块_关于python导入模块import与常见的模块详解
  3. 跨站请求伪造攻击(CSRF)
  4. 1768: 回文平方数(进制转换)
  5. 独家下载!2021前端热门技术解读
  6. Kubernetes 集群 DNS 服务发现原理
  7. 从计算机知识到落地能力,你欠缺了什么?
  8. 如何用AR升级星巴克体验?阿里工程师祭出了“三板斧”
  9. 来自Riot 的一份游戏美术教程(二):概念图
  10. 也分享自己做的JS扫雷小游戏