JSR303介绍

JSR303-Bean Validation描述:This JSR will define a meta-data model and API for JavaBeanTM validation based on annotations, with overrides and extended meta-data through the
use of XML validation descriptors. 为实体验证定义了元数据模型和API.默认的元数据模型是通过Annotations来描述的,也可以使用XML来重载或扩展。

Bean Validation API并不局限于应用程序的某一层或者哪种编程模型。Bean Validation可以被用在任何一层。

Spring3.x已提供对JSR303的支持。

JSR303常用注解说明:

@NotNull/@Null

验证字段:引用数据类型

注解说明:注解元素必须是非空或空

@Digits

验证字段:byte、short、int、long及各自的包装类型以及BigDecimal、BigInteger、String

注解说明:验证数字构成是否合法

属性说明:integer:指定整数部分数字位数,fraction:指定小数部分数字位数

@Future/Past

验证字段:java.util.Date,java.util.Calendar

注解说明:验证是否在当前系统时间之后/之前

@Max/@Min

验证字段:byte、short、int、long及对应的包装类型以及BigDecimal、BigInteger

注解说明:验证值是否小于等于最大指定整数值或大于等于最小指定整数值

@Pattern

验证字段:String

注解说明:验证字符串是否匹配指定的正则表达式

属性说明:regexp:匹配的正则表达式,flags:指定Pattern.Flag的数值,表示正则表达式的选项

@Size

验证字段:String、Collection、Map和数组

注解说明:验证元素大小是否在指定范围内

属性说明:max:最大长度,min:最小长度,message:提示信息,默认:{constraint.size}

@DecimalMax/@DecimalMin

验证字段:byte、short、int、long及对应的包装类型以及BigDecimal、BigInteger、String

属性说明:验证值是否小于等于最大指定小数值或大于等于最小指定小数值

@Valid

属性说明:验证值是否需要递归调用

例子:

下面的例子在Spring3.1中测试通过

需要导入jar:javax.validation-1.0.0.jar 和hibernate-validation-4.3.0.jar

User类:

  1. /**
  2. * 用户
  3. *
  4. * @author Administrator
  5. */
  6. public class User implements Serializable {
  7. private static final long serialVersionUID = 5383162329852182189L;
  8. @NotEmpty(message = "用户名不能为空") // hibernate的验证注解,因为Spring页面中文本传过来的都是空字符串而不是空内容
  9. @Id
  10. private String userName; // 用户名
  11. @Size(min = 5, max = 32, message = "密码长度应在5-32位之间")
  12. private String password; // 密码
  13. private String role; // 对应角色
  14. private String loginIP; // 登录Ip
  15. /**
  16. * 得到用户名
  17. *
  18. * @return 用户名
  19. */
  20. public String getUserName() {
  21. return userName;
  22. }
  23. /**
  24. * 设置用户名
  25. *
  26. * @param userName
  27. *            用户名
  28. */
  29. public void setUserName(String userName) {
  30. this.userName = userName;
  31. }
  32. /**
  33. * 得到登陆密码
  34. *
  35. * @return 登陆密码
  36. */
  37. public String getPassword() {
  38. return password;
  39. }
  40. /**
  41. * 设置登陆密码
  42. *
  43. * @param password
  44. *            登陆密码
  45. */
  46. public void setPassword(String password) {
  47. this.password = password;
  48. }
  49. /**
  50. * 得到用户角色
  51. *
  52. * @return 用户角色
  53. */
  54. public String getRole() {
  55. return role;
  56. }
  57. /**
  58. * 设置用户角色
  59. *
  60. * @param role
  61. *            用户角色
  62. */
  63. public void setRole(String role) {
  64. this.role = role;
  65. }
  66. /**
  67. * 得到登录IP
  68. *
  69. * @return 登录IP
  70. */
  71. public String getLoginIP() {
  72. return loginIP;
  73. }
  74. /**
  75. * 设置登录IP
  76. *
  77. * @param loginIP
  78. *            登录IP
  79. */
  80. public void setLoginIP(String loginIP) {
  81. this.loginIP = loginIP;
  82. }
  83. }

页面请求的方法:

  1. public String login(@Valid User user, BindingResult result,
  2. HttpServletRequest request, Model model) {
  3. if (result.hasErrors()) {
  4. return "login";
  5. }
  6. return "success"
  7. }

在配置文件中需要对验证对象所在包进行扫描

<property name="packagesToScan" value="package.path" />

Spring3.x JSR-303的更多相关文章

  1. JSR 303标准

    JSR 303是Java为bean数据合法性校验提供的标准框架,JSR 303通过在Bean属性上标注类似于@NotNull.@Max等标准的注解指定校验规则,并通过标准的校验接口对bean进行验证. ...

  2. JSR 303 - Bean Validation 介绍及最佳实践

    JSR 303 - Bean Validation 介绍及最佳实践 JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案.2009 年 12 月 ...

  3. Springboot 使用 JSR 303 对 Controller 控制层校验及 Service 服务层 AOP 校验,使用消息资源文件对消息国际化

    导包和配置 导入 JSR 303 的包.hibernate valid 的包 <dependency> <groupId>org.hibernate.validator< ...

  4. JSR教程1——JSR 303 - Bean Validation介绍

    1.Bean Validation 在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情.应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的.在通常的情况下, ...

  5. SpringMVC中的 JSR 303 数据校验框架说明

    JSR 303 是java为Bean数据合法性校验提供的标准框架,它已经包含在JavaEE 6.0中. JSR 303 通过在Bean属性上标注类似于@NotNull.@Max等标准的注解指定校验规则 ...

  6. JSR 303 - Bean Validation 介绍及最佳实践(转)

    JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案.2009 年 12 月 Java EE 6 发布,Bean Validation 作为一个 ...

  7. JSR 303 - Bean Validation 是什么?

    关于 Bean Validation JSR 303 - Bean Validation 是jree6 中的一项子规范,JSR 303 - Bean Validation着重解决以下实际问题: 在任何 ...

  8. JSR 303 - Bean Validation 模型验证

    类是转载的,不知道转的哪里的. 此类依赖 JSR 303 – Bean Validation, Hibernate Validator. 代码不能直接运行.意会一下.自己改改. import com. ...

  9. JSR 303 - Bean Validation 简单介绍及用法

    一.JSR-303简单介绍 JSR-303 是 JAVA EE 6 中的一项子规范.叫做 Bean Validation,官方參考实现是Hibernate Validator. 此实现与 Hibern ...

  10. SpringMVC中实现Bean Validation(JSR 303 JSR 349 JSR 380)

    JSR 303是针对bean数据校验提出的一个规范.使用注解方式实现数据校验. 每个注解的用法这里就不多介绍,请移步JSR 303 - Bean Validation 介绍及最佳实践 笔者上面提到的J ...

随机推荐

  1. Asp.Net Web API 2 官网菜鸟学习系列导航

    链接地址: http://www.cnblogs.com/aehyok/p/3446289.html

  2. filter方法解析

    filter一般用于将数组中的某些元素过滤掉,并生成一个新的数组 基本语法如下: var newArray= arrayObj.filter(functionObj); newArray 根据过滤条件 ...

  3. 最简单的CI框架入门示例--数据库取数据

    前提: 安装好MySQL,Apache,PHP. 1.下载CI框架 下载地址  http://www.codeigniter.com/ 2.配置 database.php配置:    为数据库服务器设 ...

  4. 多线程之wait,notify,volatile,synchronized,sleep

    最近在学习多线程,现在进行总结一下吧.首先要了解一下以下几个名词. (1)wait:当线程调用wait()方法时,当前该线程会进入阻塞状态,且释放锁,使用wait方法的时候,必须配合synchroni ...

  5. 常见linux系统中RPM包的通用命名规则

    本文重点说一下在常见的linux系统中,RPM包通用的命名规则. RPM包的一般格式为:name-version-arch.rpmname-version-arch.src.rpm 例:httpd-2 ...

  6. angularjs分页组件

    这是我第一次写博客,激动,首先,我也是个菜鸟,分享一下自己写的服务器端分页的代码,自己一步一步写的,其中也有参考别人的代码.技术比较渣,先这样了. // ====== 2019-1-3 ======/ ...

  7. Selenium with Python 008 - WebDriver 元素等待

    如今大多数Web应用程序使用Ajax技术,当浏览器在加载页面时,页面上的元素可能并不是同时被加载完成的,这给元素的定位增加了困难.如果因为在加载某个元素时延迟而造成ElementNotVisibleE ...

  8. python 爬虫003-正则表达式简单介绍

    正则表达式,简单的说就是用一个“字符串”来描述一个特征,然后去验证另外一个“字符串”是否符合这个特征. 正则表达式在线测试工具 http://tool.chinaz.com/regex 实例一,判断字 ...

  9. 四十五 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询

    bool查询说明 filter:[],字段的过滤,不参与打分must:[],如果有多个查询,都必须满足[并且]should:[],如果有多个查询,满足一个或者多个都匹配[或者]must_not:[], ...

  10. 前端之CSS续集

    CSS:语法形式上由选择器+以及一条或多条声明组成:选择器查找到指定的html标签后,使用css属性设置html标签的样式: 一.css 语法形式: 二.使用步骤   1.引入css规则 2.使用cs ...