1.什么是JSR303?

JSR303是java为bean数据合法性校验所提供的一个标准规范,叫做Bean Validation.

Bean Validation是一个运行时的数据校验框架,在验证之后验证的错误信息会被马上返回。

2.实现方式:Hibernate Validator

3.JSR303定义了一套可以标注在成员变量、属性方法上的校验注解。

@Null        验证对象是否为空
@NotNull 验证对象是否不为空 @AssertTrue 验证Boolean对象是否为true
@AssertFalse 验证Boolean对象是否为false @Min 验证 Number 和 String 对象是否大等于指定的值
@Max 验证 Number 和 String 对象是否小等于指定的值 @DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符 串表示.小数存在精度
@DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符 串表示.小数存在精度 @Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。 @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内 @Past 验证 Date 和 Calendar 对象是否在当前时间之前
@Future 验证 Date 和 Calendar 对象是否在当前时间之后 @Pattern 验证 String 对象是否符合正则表达式的规则

4.Hibernate Validator是JSR303的一个参考实现,除了支持所有标准的校验注解之外,它还拓展了如下注解:

@NotBlank    检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格

@URL        验证是否是合法的url

@Email        验证是否是合法的邮件地址

@CreditCardNumber    验证是否是合法的信用卡好吗

@Length(min=, max=)     验证字符串的长度必须在指定的范围内

@NotEmpty         检查约束元素是否为NULL或者是EMPTY.用于array、collection、map、string

@Range(min,max,message)    验证属性值必须在合适的范围内

5.接下来做一个JSR303的测试

5.1新建一个项目,导入springmvc所需的jar包,编写web.xml和springmvc-config.xml

  <!-- 配置前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
	<!-- spring可以自动去扫描base-package下面的包或者子包下面的java类 如果扫描到有spring相关注解的类,则吧这个类注册为spring的bean -->
<context:component-scan base-package="com.dj.controller" />
<!-- 默认装配 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix">
<value>/</value>
</property>
<!-- 后缀 -->
<property name="suffix">
<value>.jsp</value>
</property>
</bean>

5.2因为使用的是hibernate validator的实现,所以要导入所需的jar包,版本是5.4.1如图所示。

5.3编写一个用户注册的实体类

	@NotBlank(message="登录名不能为空")
private String username;
@NotBlank(message="密码不能为空")
@Length(min=6,max=18,message="密码长度必须在6~18位之间")
private String password;
@Email(message="邮箱格式不正确")
private String email;
@Pattern(regexp="[1][3|4|5|7|8][0-9]{9}",message="手机号码格式不正确")
private String phone//省略get、set方法

5.4编写一个controller

@RequestMapping(value="/{pagename}")
public String page(@PathVariable String pagename,Model model){
User user = new User();
model.addAttribute("user",user);
return pagename;
}
//数据校验使用@valid,后面跟着errors对象保存校验信息
@RequestMapping(value="/test")
public String regist(@Valid @ModelAttribute User user,Errors errors,Model model){
if(errors.hasErrors()){
return "regist";
}
model.addAttribute("user",user);
return "success"; }

5.5编写注册页面

	<form:form modelAttribute="user" action="test" method="post">
用户名:<form:input path="username"/><span><form:errors path="username" cssStyle="color:red"/></span><br>
密码:<form:input path="password"/><span><form:errors path="password" cssStyle="color:red"/></span><br>
邮箱:<form:input path="email"/><span><form:errors path="email" cssStyle="color:red"/></span><br>
手机号:<form:input path="phone"/><span><form:errors path="phone" cssStyle="color:red"/></span><br>
<input type="submit" value="注册">
</form:form>

5.6编写注册成功页面显示注册信息

用户名:${user.username }<br>
密码:${user.password }<br>
邮箱:${user.email }<br>
手机号:${user.phone }<br>

5.7测试结果

源码下载地址 https://files.cnblogs.com/files/dj-blog/JSR03Test.zip

JSR303的数据校验-Hibernate Validator方式实现的更多相关文章

  1. 使用jsr303实现数据校验

    除了前端的js验证,服务端也可加入数据验证,springmvc中有两种方式可以验证输入 利用spring自带的验证框架 利用jsr303实现 jsr303实现数据校验 jsr303是java为bean ...

  2. Struts2第十篇【数据校验、代码方式、XML配置方式、错误信息返回样式】

    回顾以前的数据校验 使用一个FormBean对象来封装着web端来过来的数据 维护一个Map集合保存着错误信息-对各个字段进行逻辑判断 //表单提交过来的数据全都是String类型的,birthday ...

  3. 二十一 Struts的数据校验两种方式:手动编码和xml校验

    数据的校验: 一.前台校验:JS校验 JS的校验不是必须的,JS可以被绕行,可以提升用户体验 二.后台校验:编码校验 必须的校验 三.校验的方式: 手动编码(不建议使用) 配置文件(支持) 手动编码的 ...

  4. java后台校验 hibernate validator

    链接 : https://www.cnblogs.com/softidea/p/6044123.html

  5. .net 使用validator做数据校验

    概述 在把用户输入的数据存储到数据库之前一般都要对数据做服务端校验,于是想到了.net自带的数据校验框架validator.本文对validator的使用方法进行介绍,并分析下校验的的原理. 使用va ...

  6. JSR教程2——Spring MVC数据校验与国际化

    SpringMVC数据校验采用JSR-303校验. • Spring4.0拥有自己独立的数据校验框架,同时支持JSR303标准的校验框架. • Spring在进行数据绑定时,可同时调用校验框架完成数据 ...

  7. SpringMvc中的数据校验

    SpringMvc中的数据校验 Hibernate校验框架中提供了很多注解的校验,如下: 注解 运行时检查 @AssertFalse 被注解的元素必须为false @AssertTrue 被注解的元素 ...

  8. Java笔记 #07# Hibernate Validator

    Hibernate Validator是Spring Boot默认附带的标准校验API(javax.validation)实现. 应用实例(配合切面) 采用注解定义切面.java @Aspect @C ...

  9. SpringMVC--使用hibernate validator数据校验

    JSR 303 Spring3开始支持JSR 303 验证框架,JSR303是Java为Bean数据合法性校验所提供的标准框架.JSR 303 支持XML和注解风格的验证,通过在Bean属性上标注类似 ...

随机推荐

  1. RSA简介(四)——求逆算法

    此处所谓求逆运算,是指在模乘群里求逆. 第一节里提到互质的两个定义: (1)p,q两整数互质指p,q的最大公约数为1. (2)p.q两整数互质指存在整数a,b,使得ap+bq=1. 只要明白了欧几里得 ...

  2. 利用pyinotify监控文件内容,像tailf命令但比它更强

    Linux的tail/tailf命令使用了内核提供的inotify功能,下面的Python例子也使用inotify实现比tail/tailf更强的监控文件功能. watchfile.py #!/usr ...

  3. BotVS趋势交易策略-MA均线

    1. 均线策略1号 思路:使用MA小时线,入市线金叉买入,出市线死叉时卖出.代码如下 import types def main(): STATE_IDLE = -1 state = STATE_ID ...

  4. 50行Python代码构建小型区块链

    本文介绍了如何使用python构建一个小型的区块链技术,使用Python2实现,代码不到50行. Although some think blockchain is a solution waitin ...

  5. go web 第二天 学习笔记

    package main import ( "crypto/md5" "fmt" "html/template" "io" ...

  6. 虚拟机下安装VMware Tools

    使用虚拟机安装第二操作系统,是我们经常使用到的一种方法,但是为了能够在虚拟机与本地操作系统间进行文件共享,我们可以借助一款非常实用的工具VMware Tools.下面我们就来说一下怎样安装VMware ...

  7. linux下权限问题思考

    今天遇到一些关于linux的权限问题,文件的所有者,文件的所属组等问题,文件对于所有者所属组是非常敏感的,同一个脚本所属者所属组不同,得到执行的结果也是差很多的.

  8. multisim&proteus&protel比较

    Multisim有超强板级的模拟/数字电路板的设计工作.它包含了电路原理图的图形输入.电路硬件描述语言输入方式,具有丰富的仿真分析能力.高版本可 以进行单片机等MCU的仿真.Multisim有实际元器 ...

  9. hdu4746 Mophues

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4746 题意:给出n, m, p,求有多少对a, b满足gcd(a, b)的素因子个数<=p,(其 ...

  10. [知了堂学习笔记]_JSON数据操作第2讲(JSON的封装与解析)

    上一讲为大家讲了什么是JSON,那么这一讲为大家带来了在WEB项目中JSON的用法,也就是JSON的封装与解析. 此图是数据库中的部分内容 一.JSON封装 所谓的JSON封装,指的是在Servlet ...