博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot使用validator校验
阅读量:7042 次
发布时间:2019-06-28

本文共 4323 字,大约阅读时间需要 14 分钟。

在前台表单验证的时候,通常会校验一些数据的可行性,比如是否为空,长度,身份证,邮箱等等,那么这样是否是安全的呢,答案是否定的。因为也可以通过模拟前台请求等工具来直接提交到后台,比如postman这样的工具,那么遇到这样的问题怎么办呢,我们可以在后台也做相应的校验。

新建项目,因为本文会使用postman模拟前端请求,所以本文需要加入web依赖,pom文件如下:

4.0.0
com.dalaoyang
springboot_validator
0.0.1-SNAPSHOT
jar
springboot_validator
springboot_validator
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin

创建一个demo类,说一下本文使用demo中校验使用的注解:

@NotEmpty:非空
@Length:长度,最长或者最短
@Email:校验email
@Pattern:使用正则校验,本文使用的是身份证的正则
,代码如下:

package com.dalaoyang.entity;import org.hibernate.validator.constraints.Email;import org.hibernate.validator.constraints.Length;import org.hibernate.validator.constraints.NotEmpty;import javax.validation.constraints.Pattern;import java.io.Serializable;/** * @author dalaoyang * @Description * @project springboot_learn * @package com.dalaoyang.entity * @email yangyang@dalaoyang.cn * @date 2018/5/1 */public class Demo implements Serializable {    @NotEmpty(message="用户名不能为空")    @Length(min=6,max = 12,message="用户名长度必须位于6到12之间")    private String userName;    @NotEmpty(message="密码不能为空")    @Length(min=6,message="密码长度不能小于6位")    private String passWord;    @Email(message="请输入正确的邮箱")    private String email;    @Pattern(regexp = "^(\\d{18,18}|\\d{15,15}|(\\d{17,17}[x|X]))$", message = "身份证格式错误")    private String idCard;    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getPassWord() {        return passWord;    }    public void setPassWord(String passWord) {        this.passWord = passWord;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    public String getIdCard() {        return idCard;    }    public void setIdCard(String idCard) {        this.idCard = idCard;    }}

创建一个TestDemoController,来测试本文的校验,代码如下:

package com.dalaoyang.controller;import com.dalaoyang.entity.Demo;import org.springframework.validation.BindingResult;import org.springframework.validation.ObjectError;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid;import java.util.List;/** * @author dalaoyang * @Description * @project springboot_learn * @package com.dalaoyang.controller * @email yangyang@dalaoyang.cn * @date 2018/5/1 */@RestControllerpublic class TestDemoController {    @PostMapping("/")    public String testDemo(@Valid Demo demo,BindingResult bindingResult){        StringBuffer stringBuffer = new StringBuffer();        if(bindingResult.hasErrors()){            List
list =bindingResult.getAllErrors(); for (ObjectError objectError:list) { stringBuffer.append(objectError.getDefaultMessage()); stringBuffer.append("---"); } } return stringBuffer!=null?stringBuffer.toString():""; }}

启动项目使用postman分别做了三次请求,第一次所有属性都是随便填写的,如图

9953332-6b3b9cbd9d5d2c13
image

第二次输入正确的身份证和邮箱,用户名和密码为空,如图

9953332-b1c469a6dd24f5e3
image

第三次全部输入正确,如图

9953332-c46f8b0c4bcf8341
image

本文只是使用的简单的几种校验,Hibernate-validator还有很多种校验的方法,大家可以参考这篇文章

源码下载 :

个人网站:

转载地址:http://lrhal.baihongyu.com/

你可能感兴趣的文章
Introducing mcrouter: A memcached protocol router for scaling memcached deployments
查看>>
码栈开发手册(四)---编码方式开发(其他功能函数)
查看>>
android动画之interpolator和typeEvaluator用法详解
查看>>
排序算法之Bogo排序
查看>>
Speed up your Internet browsing on Linux with a DNS Cache server
查看>>
我的失败与伟大 —— 合作伙伴的甄别
查看>>
APP运营中必须关注的7大数据指标
查看>>
kettle数据同步的五种方案
查看>>
如何用IE的开发人员工具选择Iframe里面的元素
查看>>
linux 常用命令(1) grep
查看>>
第三方开发的网贷系统安全如何保障
查看>>
Java千百问_05面向对象(006)_is-a,has-a,like-a是什么
查看>>
Android SDK r20.x更新时,没有Android API的问题
查看>>
PHPWind发布新产品架构图
查看>>
GitHub学习笔记
查看>>
Javascript 学习 笔记六
查看>>
RecyclerView+Cardview学习探索
查看>>
【Android】Android自定义带board的圆角控件
查看>>
struts 设置默认 action
查看>>
private成员函数竟然可以在类的外部调用
查看>>