当前位置:首页 > Java技术 > springmvc(四) springmvc的数据校验的实现

springmvc(四) springmvc的数据校验的实现

      so easy~

              --WZY

一、什么是数据校验?

      这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验。

      数据校验分为客户端校验和服务端校验

        客户端校验:js校验

        服务端校验:springmvc使用validation校验,struts2使用validation校验。都有自己的一套校验规则。

      

      

二、springmvc的validation校验

      Springmvc本身没有校验功能,它使用hibernate的校验框架,hibernate的校验框架和orm没有关系

      2.1、添加jar包

          springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

      2.2、在springmvc.xml中配置validator校验器,基本上直接复制拿过去用即可

          配置以下这些,相当于有人帮我们写好了校验代码,我们拿过来直接用就行了,所以需要进行配置。

          springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

          将validator注册到适配器中

          方式一(推荐)

          springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记  

          方式二:如果配置文件中使用的是非注解方式编写的适配器,则这样配置

          springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记
    <!-- 校验器,配置validator -->
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
        <property name="validationMessageSource" ref="validationMessageSource"></property>
    </bean>
    
    <!-- 配置validationMessageSource -->
    <bean id="validationMessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <!-- 指定校验信息的资源文件的基本文件名称,不包括后缀,后缀默认是properties -->
        <property name="basenames">
            <list>
                <value>classpath:validationMessageSource</value>
            </list>
        </property>
        <!-- 指定文件的编码 -->
        <property name="fileEncodings" value="utf8"></property>
        <!-- 对资源文件内容缓存的时间,单位秒 -->
        <property name="cacheSeconds" value="120"></property>
    </bean>
springmvc.xml配置校验器

 

      2.3、validationMessageSource.properties

        该配置文件的作用就是存储校验失败时的提示文字信息的,也就是相当于将其提取出来放到配置文件中,

          springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

      

      2.4、在pojo中指定校验规则

        列举两个校验规则(使用的是注解校验),notnull和size

          springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

        1、items.name.size和items.createtime.notnull:就是读取validationMessageSource.properties中的配置信息。从这里就可以理解该配置文件的意义,防止硬编码。

        2、使用注解对需要进行校验的属性进行绑定,而能够使这些注解生效的前提就是配置此前的几个步骤,2.1、2.2、2.3都必不可少

          其他校验规则摘抄自网上

          springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

          springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

 

      2.5、controller中对其校验绑定进行使用

          springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

        1、@Validated作用就是将pojo内的注解数据校验规则(@NotNull等)生效,如果没有该注解的声明,pojo内有注解数据校验规则也不会生效

        2、BindingResult对象用来获取校验失败的信息(@NotNull中的message),与@Validated注解必须配对使用,一前一后

        3、代码中的逻辑应该很容易看懂,就是将result中所有的错误信息取出来,然后到原先的页面将错误信息进行显示,注意,要使用model对象,则需要在形参中声明Model model,然后菜能使用

 

      2.6、jsp页面

          springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

 

      2.7、总结

        其实非常简单,直接使用注解对其进行校验就完事了,校验代码都替我们写好了,只需要配置一下即可。傻瓜式操作。不会的看上面步骤,一步步来。

 

三、分组校验

      3.1、什么是分组校验?

        校验规则是在pojo 制定的,而同一个pojo可以被多个Controller使用,此时会有问题,即:不同的Controller方法对同一个pojo进行校验,此时这些校验信息是共享在这不同的Controller方法           中,但是实际上每个Controller方法可能需要不同的校验,在这种情况下,就需要使用分组校验来解决这种问题,

        通俗的讲,一个pojo中有很多属性,controller中的方法1可能只需要校验pojo中的属性1,controller中的方法2只需要校验pojo中的属性2,但是pojo中的校验注解有很多,怎样才能使方法1只校          验属性1,方法二只校验属性2呢?就需要用分组校验来解决了。

      3.2、定义分组

          springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

        就是定义空的接口,接口类只作为这个分组标识来使用,看下面的用法,就知道其意义何在了

 

      3.3、使用分组

        springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

      3.4、controller方法

         在这个方法中,那么就只会校验items这个pojo中有ValidationGroup1这个分组的校验注解,而不会在校验其他的

        springmvc(四) springmvc的数据校验的实现 _ JavaClub全栈架构师技术笔记

 

四、总结

      数据校验就这样讲完了,非常简单吧,拿过来就是一顿用即可。

 

作者:有梦想的老王
来源链接:https://www.cnblogs.com/whgk/p/7191152.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/68301.html

标签: SpringMVCSpring
分享给朋友: