今天晚上继续复习springmvc
*
springmnvc的参数检验:
1.参数校验
<!-- 参数校验-->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.5.Final</version>
</dependency>
2.加校验注解
package com.woniuxy.framework.springmvc1.controller.form;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.*;
import java.util.Date;
@Data
public class RegForm {
@NotBlank//非空
@Length(min = 6,max = 128,message = "用户名长度必须在{min}-{max}之间")//长度
private String username;
@NotBlank
@Length(min = 6,max = 128,message = "密码长度必须在{min}-{max}之间")
private String password;
@NotBlank
@Pattern(regexp = "^\\d{11}$")//正则
private String mobile;
@Email
private String email;
@NotBlank
@Pattern(regexp = "^\\d{18}$")
private String idNo;
@NotNull
@Past//过去的日期
private Date birthday;
}
3.方法参数加@Valid
@RequestMapping("reg")
@ResponseBody
public Result reg(@Valid RegForm form, BindingResult result){
System.out.println(form);
System.out.println(result);
return extractError(result);
}
4.解析校验错误信息 ControllerBase
package com.woniuxy.framework.springmvc1.controller;
import com.woniuxy.framework.springmvc1.common.Result;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import java.util.List;
public abstract class ControllerBase {
@InitBinder
public void init(WebDataBinder binder) {
binder.addCustomFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss"));
}
public Result extractError(BindingResult result) {
if(result.hasErrors()) {
List<FieldError> fieldErrors = result.getFieldErrors();
StringBuilder msgBuilder = new StringBuilder();
for (FieldError fieldError : fieldErrors) {
msgBuilder.append(fieldError.getField() + ":" + fieldError.getDefaultMessage() + ";");
}
return Result.fail(msgBuilder.toString());
}
return null;
}
}
还有一张图:
注解:
@Valid
被注释的元素是一个对象,需要检查此对象的所有字段值
@Null
被注释的元素必须为 null
@NotNull
被注释的元素必须不为 null
@AssertTrue
被注释的元素必须为 true
@AssertFalse
被注释的元素必须为 false
@Min(value)
被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)
被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)
被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)
被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min)
被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction)
被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past
被注释的元素必须是一个过去的日期
@Future
被注释的元素必须是一个将来的日期
@Pattern(value)
被注释的元素必须符合指定的正则表达式
注解
作用
@Email
被注释的元素必须是电子邮箱地址
@Length(min=, max=)
被注释的字符串的大小必须在指定的范围内
@NotEmpty
被注释的字符串的必须非空
@Range(min=, max=)
被注释的元素必须在合适的范围内
@NotBlank
被注释的字符串的必须非空
@URL(protocol=,
host=, port=,
regexp=, flags=)
被注释的字符串必须是一个有效的url
@CreditCardNumber
被注释的字符串必须通过Luhn校验算法,
银行卡,信用卡等号码一般都用Luhn
计算合法性
@ScriptAssert
(lang=, script=, alias=)
要有Java Scripting API 即JSR 223
("Scripting for the JavaTM Platform")的实现
@SafeHtml
(whitelistType=,
additionalTags=)
classpath中要有jsoup包