springmvc(四) springmvc的数据校验的实现
so easy~
--WZY
一、什么是数据校验?
这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验。
数据校验分为客户端校验和服务端校验
客户端校验:js校验
服务端校验:springmvc使用validation校验,struts2使用validation校验。都有自己的一套校验规则。
二、springmvc的validation校验
Springmvc本身没有校验功能,它使用hibernate的校验框架,hibernate的校验框架和orm没有关系
2.1、添加jar包

2.2、在springmvc.xml中配置validator校验器,基本上直接复制拿过去用即可。
配置以下这些,相当于有人帮我们写好了校验代码,我们拿过来直接用就行了,所以需要进行配置。

将validator注册到适配器中
方式一(推荐)
方式二:如果配置文件中使用的是非注解方式编写的适配器,则这样配置

<!-- 校验器,配置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
该配置文件的作用就是存储校验失败时的提示文字信息的,也就是相当于将其提取出来放到配置文件中,

2.4、在pojo中指定校验规则
列举两个校验规则(使用的是注解校验),notnull和size

1、items.name.size和items.createtime.notnull:就是读取validationMessageSource.properties中的配置信息。从这里就可以理解该配置文件的意义,防止硬编码。
2、使用注解对需要进行校验的属性进行绑定,而能够使这些注解生效的前提就是配置此前的几个步骤,2.1、2.2、2.3都必不可少
其他校验规则摘抄自网上


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

1、@Validated作用就是将pojo内的注解数据校验规则(@NotNull等)生效,如果没有该注解的声明,pojo内有注解数据校验规则也不会生效
2、BindingResult对象用来获取校验失败的信息(@NotNull中的message),与@Validated注解必须配对使用,一前一后
3、代码中的逻辑应该很容易看懂,就是将result中所有的错误信息取出来,然后到原先的页面将错误信息进行显示,注意,要使用model对象,则需要在形参中声明Model model,然后菜能使用
2.6、jsp页面

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、定义分组


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

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

四、总结
数据校验就这样讲完了,非常简单吧,拿过来就是一顿用即可。
springmvc(四) springmvc的数据校验的实现的更多相关文章
- SpringMVC拦截器和数据校验
1.什么是拦截器 Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以进行权限验证.记录请求 ...
- SpringMvc中的数据校验
SpringMvc中的数据校验 Hibernate校验框架中提供了很多注解的校验,如下: 注解 运行时检查 @AssertFalse 被注解的元素必须为false @AssertTrue 被注解的元素 ...
- springmvc的数据校验
springmvc的数据校验 在Web应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对数据进行验证,输入验证分为客户端验证与服务器端验证. 客户端验证主要通过javaScript脚本 ...
- SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显
在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1. ...
- SpringMVC——类型转换和格式化、数据校验、客户端显示错误消息
在介绍类型转换和格式化之前,我首先来介绍 <mvc:annotation-driven />. 需要导入的 schema: xmlns:mvc="http://www.sprin ...
- 《Java从入门到放弃》入门篇:springMVC数据校验
昨天我们扯完了数据传递,今天我们来聊聊数据校验的问题.来,跟着我一起读:计一噢叫,一按艳. 在springMVC中校验数据也非常简单,spring3.0拥有自己独立的数据校验框架,同时支持JSR303 ...
- 《SpringMVC从入门到放肆》十三、SpringMVC数据校验
上一章,我们学习了SpringMVC的自定义类型转换器,但是如果转换后的数据传递到Controller的方法中,忽然发现有某些属性为Null了,这怎么办?我们需要一种有效的数据校验机制,来对数据进行有 ...
- SpringMVC学习(三)———— springmvc的数据校验的实现
一.什么是数据校验? 这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验. 数据校验分为客户端校验和服务端校验 客户端校验 ...
- SpringMVC——数据转换 & 数据格式化 & 数据校验
一.数据绑定流程 1. Spring MVC 主框架将 ServletRequest 对象及目标方 法的入参实例传递给 WebDataBinderFactory 实例,以创 建 DataBinder ...
随机推荐
- 那些年我遇到的ERP顾问
当我写下这篇随笔的时候,算起来在我从业9年的时间里,也差不多遇到了4-5拨的ERP咨询顾问,严格来说是4家ERP顾问公司.分别是:IBM.汉得.鼎捷以及盈通金服.从实施水准.技术力量.沟通技巧.做事态 ...
- 容器扩展属性 IExtenderProvider 实现WinForm通用数据验证组件
大家对如下的Tip组件使用应该不陌生,要想让窗体上的控件使用ToolTip功能,只需要拖动一个ToolTip组件到窗口,所有的控件就可以使用该功能,做信息提示. 本博文要记录的,就是通过容器扩展属性 ...
- HashMap集合
HashMap集合特点(用法与特点类似于HashSet集合): 1.无序,不允许重复(无序指元素顺序与添加顺序不一致): 2.底层数据结构是哈希表 3.HashMap内部对"键"用 ...
- python之matplotlib绘图基础
Python之matplotlib基础 matplotlib是Python优秀的数据可视化第三方库 matplotlib库的效果可参考 http://matplotlib.org/gallery.ht ...
- axis调用webservice的简单方法
package com.service; import org.apache.axis.client.Call; import org.apache.axis.client.Service; publ ...
- Context源码分析
我们做安卓开发,时时都在和Context打交道,那么Context到底是什么?有什么作用?如何与Application,Activity,Service等实例发生联系的?等等 Context是什么? ...
- [原]vue实现全选,反选
用vue写业务代码时候,后端大神丢给我一堆数据,要求是做全选,反选功能,然后把用户更改的数据全部返回给他 基本思路 如果父级选中了,那么父级下面的子集全部选中checked=true; 如果子集中选中 ...
- PHP编译
编译php-5.3.6的时候需要先打一个内存泄露的补丁,具体的操作如下 tar vzxf suhosin-0.9.32.1.tar.gz tar vjxf php-5.3.6.tar.bz2 cd p ...
- RMAN备份与恢复(一)--认识RMAN
RMAN(Recovery Manager)是Oracle恢复管理器的简称,是集数据库备份(backup).修复(restore)和恢复(recover)于一体的工具.接下来了解一下RMAN中的几个重 ...
- Spring事务管理—aop:pointcut expression解析
先来看看这个spring的配置文件的配置: <!-- 事务管理器 --> <bean id="transactionManager" class="o ...