课堂课题:
什么是参数校验,前端和后端需要分别做校验吗?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)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
【修真院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
这个参数校验其实在真实项目中用的不错。 我用的时候就是因为没办法记录日志。 不知道你有没有找到解决方案
回复