查看: 1875|回复: 0

[Java语言] Spring Boot学习入门之表单验证

发表于 2017-9-29 08:00:01
句号论坛

前言

所谓表单验证,即校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等。spring boot是如何帮我们实现表单验证的呢?下面话不多说了,来一起看看详细的介绍吧。

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

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>hello spring boot</title>
  6. </head>
  7. <body>
  8. <form action="/doRegister" method="post">
  9. <p>姓名:<input type="text" name="username"/>
  10. </p>
  11. <p>密码:<input type="text" name="password"/>
  12. </p>
  13. <p><button>提交</button></p>
  14. </form>
  15. </body>
  16. </html>
复制代码

需要验证提交上去的用户名,密码。是否为空,以及其他的一些问题。我们需要怎么做呢?

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

  1. public class User {
  2. private int id;
  3. @NotEmpty(message="用户名不能为空")
  4. private String username;
  5. @NotEmpty(message="密码不能为空")
  6. @Length(min=6, message="密码长度不能少于6位")
  7. private String password;
  8. public int getId() {
  9. return id;
  10. }
  11. public void setId(int id) {
  12. this.id = id;
  13. }
  14. public String getUsername() {
  15. return username;
  16. }
  17. public void setUsername(String username) {
  18. this.username = username;
  19. }
  20. public String getPassword() {
  21. return password;
  22. }
  23. public void setPassword(String password) {
  24. this.password = password;
  25. }
  26. }
复制代码

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

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

  1. @Controller
  2. public class FormController {
  3. @RequestMapping(value="/register", method=RequestMethod.GET)
  4. public String register() {
  5. return "register";
  6. }
  7. @RequestMapping(value = "/doRegister", method = RequestMethod.POST)
  8. public @ResponseBody User doRegister(@Valid User user, BindingResult result, Model model) {
  9. if (result.hasErrors()) {
  10. List<ObjectError> list = result.getAllErrors();
  11. for (ObjectError error : list) {
  12. System.out.println(error.getDefaultMessage());
  13. }
  14. return null;
  15. }
  16. System.out.println("注册..");
  17. return user;
  18. }
  19. }
复制代码

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

而除了@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 验证邮箱

总结

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



太阳http代理AD
回复

使用道具 举报

关闭

站长推荐上一条 /1 下一条