IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

什么是参数校验,前端和后端需要分别做校验吗?Validation的好处和坏处分别是什么,在真实项目中需要使用Validation吗?

关联任务:

任务五

直播时间:

2019-08-25 15:30:00


课堂内容:

视频链接:

PPT链接:

提交按钮:

小课堂内容格式


标题:

【修真院xx(职业)小课堂】课题名称

开场语:

大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX

(1)背景介绍:

背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。

(2)知识剖析:

讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。

(3)常见问题:

最少列出1个常见问题。

(4)解决方案:

写清楚常见问题的解决方案。

(5)编码实战:

尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。

(6)拓展思考:

知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。

(7)参考文献:

引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。

(8)更多讨论:

Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答

(9)鸣谢:

感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。

(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

什么是参数校验,前端和后端需要分别做校验吗?Validation的好处和坏处分别是什么,在真实项目中需要使用Validation吗?    

辅导师兄 [真传弟子]JAVA-徐铭培


【修真院java小课堂】什么是参数校验,前端和后端需要分别做校验吗?Validation的好处和坏处分别是什么,在真实项目中需要使用Validation吗?

 

 

大家好,我是IT修真院郑州分院第15期的学员曹非凡,一枚正直纯洁善良的java程序员,今天给大家分享一下,修真院官网java(职业)任务二,深度思考中的知识点——

 

什么是参数校验,前端和后端需要分别做校验吗?Validation的好处和坏处分别是什么,在真实项目中需要使用Validation吗?

 

 

一、背景介绍

 

校验(ECC),是一个数学术语,读音为jiào yàn,是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种。

 

参数验证是一个常见的问题,无论是前端还是后台,都需对用户输入进行验证,以此来保证系统数据的正确性。

    对于web来说,有些人可能理所当然的想在前端验证就行了,但这样是非常错误的做法,前端代码对于用户来说是透明的,

    稍微有点技术的人就可以绕过这个验证,直接提交数据到后台。参数验证随处可见,也是必不可少的。

前端做验证只是为了用户体验,后端才是最终的保障。

数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验。但是为了避免用户绕过浏览器,使用http工具直接向后端请求一些违法数据,服务端的数据校验也是必要的,可以防止脏数据落到数据库中.

二、知识剖析:


参数校验的方式

a、 在数据库对字段的设置

b、  通过 if-if :

c、  JSR-303

d、  自定义ValidationUtils:

 


三、常见问题

 


JSR303定义的校验类型



四、解决方案:

Spring Validation验证框架对参数的验证机制提供了@Validated(Spring’s JSR-303规范,是标准JSR-303的一个变种),

javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。

 

 

JSR提供的校验注解:

 

 

@Null 被注释的元素必须为 null

 

@NotNull 被注释的元素必须不为 null

 

@AssertTrue 被注释的元素必须为 true

 

@AssertFalse 被注释的元素必须为 false

 

@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值

 

@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值

 

@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值

 

@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值

 

@Size(max=, min=) 被注释的元素的大小必须在指定的范围内

 

@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内

 

@Past 被注释的元素必须是一个过去的日期

 

@Future 被注释的元素必须是一个将来的日期

 

@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式

 

Hibernate Validator提供的校验注解:

 

@NotBlank(message =) 验证字符串非null,且长度必须大于0

 

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

 

@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内

 

@NotEmpty 被注释的字符串的必须非空

 

@Range(min=,max=,message=) 被注释的元素必须在合适的范围内

 

五、编码实战

 

六、拓展思考

@NotNull@NotEmpty@NotBlank区别

@NotNull://CharSequence, Collection, Map Array 对象不能是 null, 但可以是空集(size = 0)。 主要用于基本类型

@NotEmpty://CharSequence, Collection, Map Array 对象不能是 null 并且相关对象的 size 大于 0 主要用于集合对象

@NotBlank://String 不是 null 且去除两端空白字符后的长度(trimmed length)大于 0。主要用于string类型


七、参考文献

知乎

师兄们的小课堂


八、更多讨论

@Validated和@Valid区别

Spring Validation验证框架对参数的验证机制提供了@Validated(Spring’s JSR-303规范,是标准JSR-303的一个变种),

javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。


Validation的好处和坏处分别是什么


好处是更为安全高效


坏处是降低了用户体验


评论

请您登录 后进行评论