Spring MVC 之校验器

数据验证

一个典型的 Spring MVC 应用会同时应用到 formatters/converters 和 validators。

在调用 controller 期间,将会有一个或多个 formatter,将字符串转化为 domain 对象的 field 值。格式化成功后,验证器就会介入,判断字段值是否为有效值或是否符合规则。

Converter和Formatter作用于字段级。而验证器作用于对象级。

JSR 303

JSR(Java Specification Requests):Java 规范提案,是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。

JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是 Hibernate Validator,其他实现有 Apache BVal。

Hibernate Validator

属性 描述
@AssertFalse boolean 值必须为 false
@AssertTrue boolean 值必须为 true
@CreditCardNumber String 符合信用卡规范(不检验有效性)
@DecimalMax() BigDicimal,BigInteger,String,基本数值数据类型及包装器,小于等于指定小数
@DecimalMin() BigDicimal,BigInteger,String,基本数值数据类型及包装器,大于等于指定小数
@Digits(integer, fraction) integer 定义最大整数部分 fraction 定义最大小数部分
@Email String 符合email地址
@Future Date,Calendar,是未来的日期
@Length(min, max) String 长度符合范围
@Max() BigDicimal,BigInteger,String,基本数值数据类型及包装器,小于等于指定整数
@Min() BigDicimal,BigInteger,String,基本数值数据类型及包装器,大于等于指定整数
@NotBlank String非null且非空(忽略首尾空白字符)
@NotEmpty String,Collection,Map,Array非null且非空
@NotNull 不能为空
@Null 必须为空
@Past Date,Calendar,是过去的日期
@Pattern(regex, flag) String 与正则表达式匹配
@Range(min, max) BigDicimal,BigInteger,String,基本数值数据类型及包装器,在范围内
@Size(min, max) String,Collection,Map,Array长度在范围内
@ScriptAssert(lang, script, alias) 使用脚本验证
@URL(protocal, host, port) String 为有效URL
@Valid 递归校验

实例

@RequestMapping(value = "/valid")
@ResponseBody
public String userValidator (@Valid User user, Errors errors) {
if (errors.hasErrors()) {
return "error";
}
return user.toString();
}
public class User {
@NotNull
@Size(min = 1)
private String name; @NotNull
@Range(min = 18, max = 150)
private Integer age; // getters and setters
// toString
}

Java Web 学习(6) —— Spring MVC 之校验器的更多相关文章

  1. Java Web 学习(4) —— Spring MVC 概览

    Spring MVC 概览 一. Spring MVC Spring MVC 是一个包含了 Dispatcher Servlet 的 MVC 框架. Dispatcher Servlet 实现了 : ...

  2. Java Web 学习(7) —— Spring MVC 之国际化

    Spring MVC 之国际化 i18n 与 l10n internationalization:国际化,以 i 开头,以 n 结尾,中间 18 个字母,简称 i18n. localization:本 ...

  3. Java Web 学习(8) —— Spring MVC 之文件上传与下载

    Spring MVC 之文件上传与下载 上传文件 表单: <form action="upload" enctype="multipart/form-data&qu ...

  4. Java Web 学习(5) —— Spring MVC 之数据绑定

    Spring MVC 之数据绑定 数据绑定是将用户输入绑定到领域模型的一种特性. Http 请求传递的数据为 String 类型,通过数据绑定,可以将数据填充为不同类型的对象属性. 基本类型绑定 @R ...

  5. Java Web系列:Spring MVC基础

    1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层 ...

  6. Rhythmk 一步一步学 JAVA(4):Spring MVC -之拦截器

    1.实现拦截器类(myInterceptor): package com.rhythmk.Interceptor; import javax.servlet.http.HttpServletReque ...

  7. 【Java Web开发学习】Spring MVC 使用HTTP信息转换器

    [Java Web开发学习]Spring MVC 使用HTTP信息转换器 转载:https://www.cnblogs.com/yangchongxing/p/10186429.html @Respo ...

  8. 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener

    [Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...

  9. 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor

    [Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...

随机推荐

  1. C#中try catch中throw ex和throw方式抛出异常有何不同_异常捕获堆栈丢失问题

    前言,最近遇到一个使用try-catch异常捕获后记录一下日志,然后再抛出该异常后,异常堆栈里无法显示准确的堆栈地址的问题?   其实以前也遇到过类似问题,没有重视,这次好好研究了下,并上度娘上找了找 ...

  2. js-函数的三种创建方式

    1.声明式 function fn() { //do something } 2.函数表达式 let fn = function () { //do something } 3.构造函数 functi ...

  3. Python读字节某一位的值,设置某一位的值,二进制位操作

    Python读字节某一位的值,设置某一位的值,二进制位操作   在物联网实际应用项目开发中,为了提升性能,与设备端配合,往往最终使用的是二进制字节串方式进行的通信协议封装,更会把0和1.True和Fa ...

  4. Fiddler常用设置

    1.设置抓取HTTPS请求 勾选后弹窗添加证书确认框 点击yes后,弹出警告 点击是,成功添加证书 点击OK确认,设置成功了 成功抓取到HTTPS请求 2.自定义会话框,展示GET和POST请求 3. ...

  5. InfluxDB(一)初探时序数据库

    初探时序数据库-InfluxDB 最近公司有个需求需要借助InfluxDB实现(或者更准确的说,使用该数据库可以更容易的实现),因此稍微看了下这个数据库,把比较重要的一些东西先简单记录一下,日后如果踩 ...

  6. SpringMVC自学笔记

    1.<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 通过ser ...

  7. 2.28秒创建一个k8s集群(非理论篇,理论自行 -- )

    准备3台centos 7+ (建议7以上,不然要会很麻烦,要升级内核等等,扯淡的东西) 安装docker 和k8s集群(均以最新版为例)基于官网 设置静态ip(可选) 查看本机的网关ip cd /Li ...

  8. PDF软件

    推荐的PDF阅读软件:文电通

  9. Latex学习与使用

    Table of Contents Latex学习与使用 简介 文档结构 排版 表格 图片 公式 索引 简介 Latex(发音lay-tek)是一个用来产生专业文档的系统,但它并不是一个单词处理器.它 ...

  10. Java大数类 BigInteger

    package bigint; /** * This class encapsulates a BigInteger, i.e. a positive or negative integer * wi ...