Java Web 学习(6) —— Spring MVC 之校验器
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 定义最大小数部分 |
| 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 之校验器的更多相关文章
- Java Web 学习(4) —— Spring MVC 概览
Spring MVC 概览 一. Spring MVC Spring MVC 是一个包含了 Dispatcher Servlet 的 MVC 框架. Dispatcher Servlet 实现了 : ...
- Java Web 学习(7) —— Spring MVC 之国际化
Spring MVC 之国际化 i18n 与 l10n internationalization:国际化,以 i 开头,以 n 结尾,中间 18 个字母,简称 i18n. localization:本 ...
- Java Web 学习(8) —— Spring MVC 之文件上传与下载
Spring MVC 之文件上传与下载 上传文件 表单: <form action="upload" enctype="multipart/form-data&qu ...
- Java Web 学习(5) —— Spring MVC 之数据绑定
Spring MVC 之数据绑定 数据绑定是将用户输入绑定到领域模型的一种特性. Http 请求传递的数据为 String 类型,通过数据绑定,可以将数据填充为不同类型的对象属性. 基本类型绑定 @R ...
- Java Web系列:Spring MVC基础
1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层 ...
- Rhythmk 一步一步学 JAVA(4):Spring MVC -之拦截器
1.实现拦截器类(myInterceptor): package com.rhythmk.Interceptor; import javax.servlet.http.HttpServletReque ...
- 【Java Web开发学习】Spring MVC 使用HTTP信息转换器
[Java Web开发学习]Spring MVC 使用HTTP信息转换器 转载:https://www.cnblogs.com/yangchongxing/p/10186429.html @Respo ...
- 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener
[Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...
- 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor
[Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...
随机推荐
- vs2017 输出 ling to sql 转为执行的sql语句
在项目视图中,找到->输出 窗口,在窗口中选择ASP.NET Core Web服务器,调试项目即可看到执行的sql语句
- 关于vue里的$refs属性
vuejs的极大程度的帮助减少了对dom的操作,他主要通过添加ref属性,但是当获取this.$refs属性时,稍有不注意就会输出undefined导致我们对dom节点的操作报错. this.$ref ...
- [转]UiPath State Machines
本文转自:https://docs.uipath.com/studio/docs/state-machines A state machine is a type of automation that ...
- 26.异常检测---孤立森林 | one-class SVM
novelty detection:当训练数据中没有离群点,我们的目标是用训练好的模型去检测另外发现的新样本 outlier dection:当训练数据中包含离群点,模型训练时要匹配训练数据的中心样 ...
- 如何用node.js中的ejs写入页面_以6.19京东秒杀的商品为例
用erpress搭建好基本框架后,在自己新建的express文件夹下将会生成;bin,public,routes,views,app.js,package.json,node_modules目录哟!, ...
- Vue.js学习笔记--菜鸟搭建一个企业级vue的项目
vue.js新手搭建一个企业项目,从0开始 前置条件: node.npm请先安装配置好 下面开始: npm 下载vue-cli脚手架工具 确认安装成功看到版本号: 初始化项目,选用webpack(p ...
- SpringBoot源码学习系列之Locale自动配置
目录 1.spring.messages.cache-duration 2.LocaleResolver 的方法名必须为localeResolver 3.默认LocaleResolver 4.指定默认 ...
- kubernetes部署高可用redis
本文redis通过helm搭建,提供redis高可用完整的编排,关于Helm的搭建和使用请查看文章<helm的搭建及使用>,其中前一章介绍了Helm搭建,并提供了Helm搭建Harbor的 ...
- SSM实现mysql数据库账号密码加密连接
引言 咱们公司从事的是信息安全涉密应用的一些项目研发一共有分为三步,相比较于一般公司和一般的项目,对于信息安全要求更加严格,领导要求数据量和用户的用户名及密码信息都必需是要密文配置和存储的,这就涉及到 ...
- PHP 将某个http地址的远程图片下载到本地的某个目录
代码: function getImage($url,$save_dir='',$filename='',$type=0){ if(trim($url)==''){ return array('fil ...