我覺得表單驗證主要是用來防范小白搞亂網站和一些低級的黑客技術。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); } }
