Spring Boot入门2——表单验证

10 篇文章 0 订阅
9 篇文章 0 订阅

表单验证,即校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等。Spring boot是如何帮我们实现表单验证的呢?


假设现在我们存在这么一个注册界面:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>hello spring boot</title>
</head>
<body>
    <form action="/doRegister" method="post">
       <p>姓名:<input type="text" name="username"/>
       </p>
       <p>密码:<input type="text" name="password"/>
       </p>
       <p><button>提交</button></p>
    </form>
</body>
</html>
需要验证提交上去的用户名,密码。是否为空,以及其他的一些问题。我们需要怎么做呢?


首先我们需要一个实体类:User类,存储表单提交上来的数据:

public class User {
	
	private int id;
	
	@NotEmpty(message="用户名不能为空")
	private String username;
	
	@NotEmpty(message="密码不能为空")
	@Length(min=6, message="密码长度不能少于6位")
	private String password;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}
使用@NotEmpty,@Length等注解,添加message的值,指示如果不符合的话,会得到什么message。


接下来编写Controller类:使用@Valid注解验证数据,并且使用BindingResult获取结果。

@Controller
public class FormController {

	@RequestMapping(value="/register", method=RequestMethod.GET)
	public String register() {
		return "register";
	}
	
	
	@RequestMapping(value = "/doRegister", method = RequestMethod.POST)
	public @ResponseBody User doRegister(@Valid User user, BindingResult result, Model model) {
		if (result.hasErrors()) {
			List<ObjectError> list = result.getAllErrors();
			for (ObjectError error : list) {
				System.out.println(error.getDefaultMessage());
			}
			return null;
		}
		System.out.println("注册..");
		return user;
	}

}



这样就完成了一个简单的表单验证。

而除了@NotEmpty,@Length之外,还有很多其他的注解:

@null           验证对象是否为空
@notnull     验证对象是否为非空
@asserttrue       验证 boolean 对象是否为 true
@assertfalse       验证 boolean 对象是否为 false
@min           验证 number 和 string 对象是否大等于指定的值
@max           验证 number 和 string 对象是否小等于指定的值
@decimalmin     验证 number 和 string 对象是否大等于指定的值,小数存在精度
@decimalmax     验证 number 和 string 对象是否小等于指定的值,小数存在精度
@size           验证对象(array,collection,map,string)长度是否在给定的范围之内
@digits       验证 number 和 string 的构成是否合法
@past           验证 date 和 calendar 对象是否在当前时间之前
@future       验证 date 和 calendar 对象是否在当前时间之后
@pattern     验证 string 对象是否符合正则表达式的规则
@Email     验证邮箱

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值