Spring Boot学习入门之表单验证

时间:2021-05-20

前言

所谓表单验证,即校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于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 验证邮箱

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章