在开发项目时,我们经常需要在前后端都校验用户提交的数据,判断提交的数据是否符合我们的标准,包括字符串长度,是否为数字,或者是否为手机号码等;这样做的目的主要是为了减少SQL注入攻击的风险以及脏数据的插入。提到数据校验我们通常还会提到异常处理,因为为了安全起见,后端出现的异常我们通常不希望直接抛到客户端,而是经过我们的处理之后再返回给客户端,这样做主要是提升系统安全性,另外就是给予用户友好的提示。
定义实体并加上校验注解
class StudentForm() {
@NotBank(message = '生日不能为空')
var birthday: String = ""
@NotBlank(message = "Id不能为空")
var id:String = ""
@NotBlank(message = "年龄不能为空")
var age:String = ""
@NotEmpty(message = "兴趣爱好不能为空")
var Interests:List<String> = Collections.emptyList()
@NotBlank(message = "学校不能为空")
var school: String = ""
override fun toString(): String {
return ObjectMapper().writeValueAsString(this)
}
}
这里首先使用的是基础校验注解,位于javax.validation.constraints
下,常见注解有@NotNull
、@NotEmpty
、@Max
、@Email
、@NotBank
、@Size
、@Pattern
,当然出了这些还有很多注解,这里就不在一一讲解,想了解更多的可以咨询查看jar包。
这里简单讲解一下注解的常见用法:
@NotNull
: 校验一个对象是否为Null
@NotBank
: 校验字符串是否为空串@