Spring Boot学习入门之表单验证

前言

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

总结

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

(0)

相关推荐

  • SpringMVC实现表单验证功能详解

    本章节内容很丰富,主要有基本的表单操作,数据的格式化,数据的校验,以及提示信息的国际化等实用技能. 首先看效果图 项目结构图 接下来用代码重点学习SpringMVC的表单操作,数据格式化,数据校验以及错误提示信息国际化.请读者将重点放在UserController.java,User.java,input.jsp三个文件中. maven 项目必不可少的pom.xml文件.里面有该功能需要的所有jar包. <?xml version="1.0" encoding="UTF

  • Spring Boot 表单验证篇

    一. spring-boot-starter-validation 依赖概述 上一篇 <Spring Boot Web 开发注解篇>,就可以快速地进行 Web 开发.那么在表单提交的时候,我们需要进行验证.前端验证可以挡住 99% 的小白用户,这里要实现服务端验证. Starters 机制告诉我们,只要加入 spring-boot-starter-validation 这个 Starter ,就可以使用其实现验证.那什么是 spring-boot-starter-validation? spr

  • Spring Boot学习入门之表单验证

    前言 所谓表单验证,即校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等.spring boot是如何帮我们实现表单验证的呢?下面话不多说了,来一起看看详细的介绍吧. 假设现在我们存在这么一个注册界面: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>hello spring boot</title>

  • Spring Boot 2 Thymeleaf服务器端表单验证实现详解

    这篇文章主要介绍了Spring Boot 2 Thymeleaf服务器端表单验证实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 表单验证分为前端验证和服务器端验证. 服务器端验证方面,Java提供了主要用于数据验证的JSR 303规范,而Hibernate Validator实现了JSR 303规范. 项目依赖加入spring-boot-starter-thymeleaf时,默认就会加入Hibernate Validator的依赖. 开

  • AngularJS学习笔记之表单验证功能实例详解

    本文实例讲述了AngularJS学习笔记之表单验证功能.分享给大家供大家参考,具体如下: 一.执行基本的表单验证 <!DOCTYPE html> <html ng-app='exampleApp'> <head> <meta charset="UTF-8"> <title>表单</title> <script src="../../js/angular.min.js" type="

  • 学习使用jQuery表单验证插件和日历插件

    首先学习使用jQuery表单验证插件: 1.Jquery表单验证插件-Validation的学习与使用 (1)Validation的验证有几种规则,一是在class属性中定义验证规则,如class="required",minlength="2".为了实现将验证规则完全编写到class属性中,另外一种是通过引入新的jquery插件-jquery.metadata.js来实现验证规则的定义,此时表单的验证调用的方法改为如下所示的代码: 将$("#form&q

  • 深入学习jQuery Validate表单验证

    本文实例介绍了jQuery Validate表单验证,主要是利用jquery.metadata.js将校验规则直接写在class属性里面并定义错误信息的提示,分享给大家供大家参考,具体内容如下 1.添加一个另外一个插件jquery.metadata.js 并把校验规则写在控件里面. 2.需要改写触发校验的方式. $("#commentForm").validate({meta: "validate"}); 3.详细代码如下: <html> <hea

  • 深入学习jQuery Validate表单验证(二)

    本文实例介绍了jQuery Validate表单验证,分享给大家供大家参考,具体内容如下 一.添加一个另外一个插件jquery.validate.messages_cn.js. 改变默认提示方式. /* * Translated default messages for the jQuery validation plugin. * Language: CN * Author: Fayland Lam <fayland at gmail dot com> */ jQuery.extend(jQ

  • Spring Boot学习入门之统一异常处理详解

    前言 关于之前的一篇所讲到的表单验证中提到,如果产生错误,可以得到错误的信息,但是返回值的问题却没有考虑. 其中所提到的Controller: @RequestMapping(value = "/doRegister", method = RequestMethod.POST) public @ResponseBody User doRegister(@Valid User user, BindingResult result, Model model) { if (result.ha

  • Spring Boot学习入门之AOP处理请求详解

    前言 面向切面(AOP)Aspect Oriented Programming是一种编程范式,与语言无关,是一种程序设计思想,它也是spring的两大核心之一. 在spring Boot中,如何用AOP实现拦截器呢? 首先加入依赖关系: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId>

  • jQuery Validate表单验证深入学习

    之前一篇文章介绍了jQuery Validate表单验证入门的基础知识,详细内容参见<jQuery Validate表单验证入门学习>,今天这篇文章深入学习jQuery Validate表单验证,以下就是文章的全部内容: 1.用其他方式替代默认的 SUBMIT $().ready(function() { $("#signupForm").validate({ submitHandler:function(form){ alert("submitted"

随机推荐