Java 注解方式校验请求参数
1. 参数校验常用注解
| 注解 | 验证的数据类型 | 备注 |
| Null | 任意类型 | 参数值必须是 Null |
| NotNull | 任意类型 | 参数值必须不是 Null |
| NotBlank | 只能作用于字符串 |
字符串不能为 null,而且字符串长度必须大于0,至少包含一个非空字符串 |
| NotEmpty |
CharSequence Collection Map Array |
字符串:字符串长度必须大于0,空字符串(“ ”)可以通过校验; Collection:集合大小必须大于0; Map:map的大小必须大于0; Array:数组长度必须大于0; |
| Size |
CharSequence Collection Map Array |
同 NotEmpty |
| Range |
数字类型 字符串类型 |
数值或者字符串的值必须在 min 和 max 指定的范围内 |
| Length | 字符串类型 | 字符串的长度在min 和 max 之间 |
| Pattern | 字符串类型 | 验证字符串是否符合正则表达式 |
| Min | 整型类型 | 参数值必须大于等于 最小值 |
| Max | 整型类型 | 参数值必须小于等于 最大值 |
| DecimalMin | 整型类型 | 参数值必须大于等于 最小值 |
| DecimalMax | 整型类型 | 参数值必须小于等于 最大值 |
| AssertTrue | 布尔类型 | 参数值必须为 true |
| AssertFalse | 布尔类型 | 参数值必须为 false |
| Past | 时间类型 | 参数值必须小于 当前时间 |
| Future | 时间类型 | 参数值必须大于 当前时间 |
2. @Validated 和 @Valid
2.1 相同点
在检验参数符合规范的功能上基本一致;
2.2 不同点
2.2.1 提供者
validated 是Spring Validation验证框架对参数的验证机制;
valid是 javax 提供的参数验证机制
2.2.2 作用域
validated :类,方法,参数
valid:方法, 字段, 构造方法, 参数, TYPE_USE;
TYPE_USE:
在 Java 8 之前的版本中,只能允许在声明式前使用 Annotation。而在 Java 8 版本中,Annotation 可以被用在任何使用 Type 的地方,例如:初始化对象时 (new),对象类型转化时,使用 implements 表达式时,或者使用 throws 表达式时。
//初始化对象时
String myString = new @Valid String(); //对象类型转化时
myString = (@Valid String) str; //使用 implements 表达式时
class MyList<T> implements List<@Valid T> {
...
} //使用 throws 表达式时
public void validateValues() throws @Valid ValidationFailedException{
...
}
3. 嵌套检验
在被检验的字段上添加 @Valid 注解就可以实现嵌套检验
当对象 Man 的字段 houses 包含 House 对象类型时,在检验 houses 字段时可以检验 House 对象的属性字段时,就称为嵌套检验。
示例如下:
在检验 Man 对象的 houses 字段时,在houses 字段上添加 @Valid 注解后,就可以检验 list 中的 House 的属性是否符合要求;
否则只会检验 houses 的集合大小是否大于1,不会校验集合中的 House 对象,比如 House 对象的 name 长度是否符合要求。
class Man{
@Valid
@Size(min = 1)
private List<House> houses;
}
class House{
@Length(min = 1,max = 10)
private String name;
}
Java 注解方式校验请求参数的更多相关文章
- Java Spring Controller 获取请求参数的几种方法
技术交流群:233513714 1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"=& ...
- hibernate.validator.constraints.NotEmpty校验请求参数报错java.lang.NoClassDefFoundError: javax/el/PropertyNotFoundException
spring maven项目,使用hibernate validator 注解形式校验客户端的请求参数. hibernate-validator版本:5.0.2.Final validation-ap ...
- SpringMVC(二):RequestMapping修饰类、指定请求方式、请求参数或请求头、支持Ant路径
@RequestMapping用来映射请求:RequestMapping可以修饰方法外,还可以修饰类 1)SpringMVC使用@RequestMapping注解为控制指定可以处理哪些URL请求: 2 ...
- 限制action所接受的请求方式或请求参数
原文:http://www.cnblogs.com/liukemng/p/3726897.html 2.限制action所接受的请求方式(get或post): 之前我们在HelloWorldContr ...
- SpringMVC的controller方法中注解方式传List参数使用@RequestBody
在SpringMVC控制器方法中使用注解方式传List类型的参数时,要使用@RequestBody注解而不是@RequestParam注解: //创建文件夹 @RequestMapping(value ...
- spring的Java注解方式
以往我们在使用spring的时候都是用一堆<>这个玩意(尖括号)的xml文件来配置spring,在xml里都是"xxx"来配置需要的内容信息,在"" ...
- 注解@RequestParam——取请求参数
一.创建index.jsp 创建一个用来发送请求的测试jsp <a href="springMVC/testRequestParam?username=lzj&age=20&q ...
- Spring MVC的各种参数绑定方式(请求参数用基础类型和包装类型的区别)(转)
1.基本数据类型(以int为例,其他类似): Controller代码: @RequestMapping("saysth.do") public void test(int cou ...
- java工具类-接受请求参数,并利用反射调用方法
public String a(HttpServletRequest request,HttpServletResponse response) throws JSONException, IOExc ...
随机推荐
- DPI,像素,英寸的关系
DPI * 英寸 = 像素 eg:在150dpi打印 (2 x 4)英寸的照片 等到多少像素的图像 (150*2)x (150*4) =300 x 600像素 同理可得 已知像素.英寸大小 求DPI ...
- 转载Linux常用命令
转自:https://blog.csdn.net/deng_xj/article/details/88803148 Linux常用shell命令 [root@dengxj]#各项含义[用户名@计算机名 ...
- mysql一些语句
<!-- 报警量排行按创建时间每月来排行 --> <select id="alarmDaySort" resultType="alarm"&g ...
- SocketClient
import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.i ...
- 关于api接口以及页面数据通信域名,缓存cdn设置优化
以B站为例: 主域名:www.bilibili.com 账户登录注册相关域名,包括app登录:passport.bilibili.com 静态资源css,js,img等相关域名:static.bili ...
- 怎么处理Win7系统备份还原提示代码0x80042302的错误?
我们都知道Win7系统自带备份还原功能,可以在电脑遇到小问题时通过还原至之前备份的正常系统来解决,非常的方便.但是有些用户在使用备份还原功能时,系统会提示0x80042302错误,这该怎么办呢?下面好 ...
- 网络基础篇之HDLC、PPP(原理)
一.广域网传输 之前讲解的都是关于局域网的数据传输,这次讲解的是广域网的传输. 广域网简称WAN,是一种跨越超大的.地域性的计算机网络集合.通常跨省.市.甚至一个国家.广域网包括很多子网,子网可以是局 ...
- LNMP安装与配置之CentOS7的安装。
LNMP与LAMP是我们常见的两种网站服务器架构.LNMP代表的就是Linux系统下Nginx+MySQL+PHP/Python,LAMP代表的则是Linux系统下Apache+MySQL+PHP/P ...
- javac & java
# 没有 package, 没有 import 的情况 * 源文件 public class HelloWorld{ public static void main(String[] args){ S ...
- 使用IDA Pro逆向C++程序
使用IDA Pro逆向C++程序 附:中科院李_硕博 : IDA用来做二进制分析还是很强大的 .lib程序是不是很容易分析出源码? 这个得看编译选项是怎么设置的 如果没混淆 没太过优化 大体能恢复源码 ...