Spring Boot学习——表单验证

       我觉得表单验证主要是用来防范小白搞乱网站和一些低级的黑客技术。Spring Boot可以使用注解 @Valid 进行表单验证。下面是一个例子。

       例子说明:数据库增加一条Student记录,要求学生年龄限制在12——20岁之间。

       首先,定义一个Student类,代码如下:

package *; //自己定义

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;

@Entity
public class Student {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;
    @Min(value = 12,message = "学生年龄最小不能低于12岁")
    @Max(value = 20, message = "学生年龄最大不能高于20岁")
    private Integer age;

    public Student(){
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

       使用@Min和@Max注解,@Min表示最小值,@Max表示最大值,message是说明。

       其次,定义数据库操作接口StudentRepository,代码如下:

package *; //自己定义

import com.aston.reader.model.Student;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface StudentRepository extends JpaRepository<Student, Integer>{
}

       最后,使用注解 @Valid 表单验证

package *; //自己定义

        import *.StudentRepository;
        import *.Student;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.validation.BindingResult;
        import org.springframework.web.bind.annotation.*;

        import javax.validation.Valid;
        import java.util.List;

@RestController
public class StudentController {
    @Autowired
    private StudentRepository studentRepository;

    /**
     * 添加学生
     * @return
     */
    @PostMapping(value = "/addStudent")
    public Student addStudent(@Valid Student student, BindingResult bindingResult){
        if (bindingResult.hasErrors()){//表单验证,报错
            System.out.println(bindingResult.getFieldError().getDefaultMessage());
            return null;
        }
        student.setAge( student.getAge());
        student.setName( student.getName());

        return studentRepository.save( student);
    }
}

 

posted @ 2017-07-29 17:04  aston  阅读(2650)  评论(0编辑  收藏  举报