首页 > 编程 > Java > 正文

Spring Boot学习入门之表单验证

2019-11-26 11:30:58
字体:
来源:转载
供稿:网友

前言

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

总结

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表