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

课堂课题:

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

关联任务:

任务五

直播时间:

2018-10-17 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参数校验

大家好,我是IT修真院北京分院第35期的学员赵君钊,一枚正直纯洁善良的Java程序员,今天给大家分享一下,修真院官网Java(职业)任务二,深度思考中的知识点——Validation参数校验


1. 背景介绍

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

JSR-303

JSR-303是Java为Bean数据合法性校验所提供的标准框架,它已经包含在JavaEE 6.0中。JSR-303通过在Bean属性上标注类似于 @NotNull、@Max等标准的注解指定校验规则,并通过标准的验证接口对Bean进行验证          

2. 知识剖析

JSR-303定义了一套可标注在成员变量、属性方法上的校验注解,

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

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

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

@Max(value) 必须为数字,其值必须大于指定的最大值

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

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

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

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

Hibernate Validator是JSR-303的一个参考实现,它除了支持所有标准的校验注解外,还支持一些扩展注解

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

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

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

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


Spring校验框架

Spring拥有自己独立的数据校验框架,同时支持JSR-303标准的校验框架。

Spring的org.springframework.validation是校验框架所在的包。LocalValidatorFactoryBean既实现了 Spring的Validator接口,又实现了JSR-303的Validator接口。只要在Spring容器中定义一个LocalValidatorFactoryBean 即可将其注入需要数据校验的Bean中。

Spring MVC数据校验

<mvc:annotation-driven/> 会默认装配一个LocalValidatorFactoryBean,通过在处理方法的入参上 标注@Valid注解,即可让Spring MVC在完成数据绑定后执行数据校验工作

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

通过国际化资源显示错误信息,Spring中定义了一个MessageSource接口,以用于支持信息的国际化和包含参数的信息的替换。ApplicationContext接口继承了MessageSource接口,所以我们所有的ApplicationContext实现类都实现了MessageSource接口,也就是我们我们可以通过ApplicationContext来调用MessageSource接口方法以实现信息的国际化和替换信息中包含的参数。

7.参考文献

参考资料:https://blog.csdn.net/u013815546/article/details/77248003

————使用spring validation完成数据后端校验

8.更多讨论


@Valid和@Validated的区别?

@Valid是javax.validation里的提供的,@Validated是@Valid 的一次封装,是Spring提供的校验机制使用。@Validated 提供分组功能,一般来说用@Valid就够用了。


如果要进行校验的实体类有多个属性校验错误怎么办?

BindingResult的getFieldErrors()方法可以获得全部的属性校验错误,返回值是一个List,里面的元素是FieldError类型的,还是需要toString()来获得字符串形式的错误信息。

error.getFieldErrors()


传入的参数不是实体类而是单个参数,如何进行校验?

可以在Controller类上加上 @Validated 注解,表示该类中的处理方法允许单个参数校验。在需要校验的参数前直接标注规则注解,像在实体类属性上标注一样,但是这种方法如果校验不通过的话,会直接抛出一个异常,可能需要一个ControllerAdvice全局异常处理来进行捕获。

9.鸣谢

感谢观看,如有出错,恳请指正

10.结束语

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

评论

[修真长老]JAVA-错遇 发表于 2018-10-25 19:34:17 #1

这个参数校验其实在真实项目中用的不错。 我用的时候就是因为没办法记录日志。 不知道你有没有找到解决方案

回复

请您登录 后进行评论