SpringMVC(六)数据校验
来源:互联网 发布:仿windows桌面 html5 编辑:程序博客网 时间:2024/05/29 17:22
数据校验是 Web 应用必须处理的内容,Spring MVC 提供了两种方法来对用户的输入数据进行校验,一种是 Spring 自带的 Validation 校验框架,另一种是利用 JRS-303 验证框架进行验证。
接下用我们使用SpringMVC来完成数据校验:
1、新建动态页面:Deposit.jsp
页面展示:
2、创建javaBean:DepositBean,并添加注解:
SpringMVC是基于正则表达式验证,通过添加注解来规定规则(正则表达式只针对于字符串)
public class Deposit { /** * @NotEmpty:不为空 * regexp:正则表达式判定规则 * message:错误提示信息 * @DateTimeFormat:日期格式 */ @NotEmpty(message="账号不能为空") private String account; @Pattern(regexp="\\w{4,25}",message="用户名为4到25个字母、数字或下划线") private String name; @Pattern(regexp="\\S{6,25}",message="密码为6到25个非空白字符") private String password; @Pattern(regexp="\\d{18}",message="身份证为18位数字") private String id; @NotEmpty(message="金额不能为空白") private String amount; @Pattern(regexp="1|2|3|4|5",message="存款年限为1-5年") private String duration; @DateTimeFormat(pattern="yyyy-mm-dd") private Date date; @PhoneNo private String phone; public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getAmount() { return amount; } public void setAmount(String amount) { this.amount = amount; } public String getDuration() { return duration; } public void setDuration(String duration) { this.duration = duration; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } }
3、创建页面控制器类:DepositController.java
@Controller //指明页面控制器public class DepositController { /** * 初步校验 */@RequestMapping("deposit") //BindingResult bindingResult 用户获取校验结果public String saveMoney( @Valid Deposit deposit,BindingResult bindingResult) { //@Valid 用于校验绑定数据,放置数据前面 //判读数据校验结果 if(bindingResult.hasErrors()) { //获取校验信息 List<FieldError> fieldErrors=bindingResult.getFieldErrors(); System.out.println("校验错误数量:"+bindingResult.getFieldErrorCount()); System.out.println("校验错误信息:"); for(FieldError error:fieldErrors) { System.out.println("校验错误属性名:"+error.getField()); System.out.println("校验错误提示信息:"+error.getDefaultMessage()); } return "Deposit"; } return "DepositSuccess"; }
运行服务器,点击存款,控制台显示:
由于我们现在没有输如数据,所以控制台显示的全是错误信息,接下来我们就要把错误信息返回给页面,但是,如果验证成功,我们就在输入框保存输入的值,页面不显示错误信息。
思路:现在我们已经获取到错误属性名和提示信息,通过模型数据把信息传给页面,页面通过EL表达式取出值放在正确的位置即可!
4、二级校验,contronller修改
页面修改:
解释:value={###} 用于提交验证输入的值
${###}用于显示提示信息
刷新页面显示提示信息
输入数据并点击存款按钮
如果有数据,并书写正确,提示信息消失!
简单验证完成!
最后,再加一些注解说明
@AssertFalse
验证的数据类型 :Boolean,boolean
说明 :验证注解的元素值是false
@AssertTrue
验证的数据类型 :Boolean,boolean
说明 :验证注解的元素值是true
@NotNull
验证的数据类型 :任意类型
说明 :验证注解的元素值不是null
@Null
验证的数据类型 :任意类型
说明 :验证注解的元素值是null
@Min(value=值)
验证的数据类型 :BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存储的是数字)子类型
说明 :验证注解的元素值大于等于@Min指定的value值
@Max(value=值)
验证的数据类型 :和@Min要求一样
说明 :验证注解的元素值小于等于@Max指定的value值
@DecimalMin(value=值)
验证的数据类型 :和@Min要求一样
说明 :验证注解的元素值大于等于@ DecimalMin指定的value值
@DecimalMax(value=值)
验证的数据类型 :和@Min要求一样
说明 :验证注解的元素值小于等于@ DecimalMax指定的value值
@Digits(integer=整数位数, fraction=小数位数)
验证的数据类型 :和@Min要求一样
说明 :验证注解的元素值的整数位数和小数位数上限
@Size(min=下限, max=上限)
验证的数据类型 :字符串、Collection、Map、数组等
说明 :验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小
@Past
验证的数据类型 :java.util.Date,java.util.Calendar,Joda Time类库的日期类型
说明 :验证注解的元素值(日期类型)比当前时间早
@Future
验证的数据类型 :与@Past要求一样
说明 :验证注解的元素值(日期类型)比当前时间晚
@NotBlank
验证的数据类型 :CharSequence子类型
说明 :验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的首位空格
@Length(min=下限, max=上限)
验证的数据类型 : CharSequence子类型
说明 :验证注解的元素值长度在min和max区间内
@NotEmpty
验证的数据类型 :CharSequence子类型、Collection、Map、数组
说明 :验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@Range(min=最小值, max=最大值)
验证的数据类型 :BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子类型和包装类型
说明 :验证注解的元素值在最小值和最大值之间
@Email(regexp=正则表达式,flag=标志的模式)
验证的数据类型 :CharSequence子类型(如String)
说明 :验证注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式
@Pattern(regexp=正则表达式,flag=标志的模式)
验证的数据类型 :String,任何CharSequence的子类型
说明 :验证注解的元素值与指定的正则表达式匹配
@Valid
验证的数据类型 :任何非原子类型
说明 :指定递归验证关联的对象;如用户对象中有个地址对象属性,如果想在验证用户对象时一起验证地址对象的话,在地址对象上加@Valid注解即可级联验证
注意:此处只列出Hibernate Validator提供的大部分验证约束注解,请参考hibernate validator官方文档了解其他验证约束注解和进行自定义的验证约束注解定义
- SpringMVC(六)数据校验
- SpringMVC 学习笔记(六) 数据绑定和JSR校验
- springmvc的数据校验
- SpringMVC 数据校验
- SpringMVC 数据校验
- SpringMVC的数据校验
- SpringMVC数据校验
- SpringMVC数据校验
- springmvc中的数据校验
- SpringMVC数据校验
- SpringMVC的数据校验
- SpringMVC数据校验
- SpringMVC数据校验(三)
- springmvc数据校验
- 三.SpringMVC 数据校验
- SpringMVC中的数据校验
- SpringMVC中的数据校验
- SpringMvc之数据校验
- Java 正则表达式
- zynq zc706 Linux系统移植笔记
- 算法的学习-基础篇
- postman发送post请求
- Zigbee中的组播实验
- SpringMVC(六)数据校验
- Hadoop
- java2
- eclipse无法启动也不报错
- Cocos中锚点与位置的关系
- 再谈Python多线程--避免GIL对性能的影响
- 色彩表示与编码
- 学习python最好的IDE---VScode
- Linux多线程编程讲解之系列四