Spring Boot學習入門之表單驗證
前言
所謂表單驗證,即校驗用戶提交的數(shù)據(jù)的合理性的,比如是否為空了,密碼長度是否大于6位,是否是純數(shù)字的,等等。spring boot是如何幫我們實現(xiàn)表單驗證的呢?下面話不多說了,來一起看看詳細的介紹吧。
假設現(xiàn)在我們存在這么一個注冊界面:
<!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類,存儲表單提交上來的數(shù)據(jù):
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注解驗證數(shù)據(jù),并且使用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 對象是否大等于指定的值,小數(shù)存在精度
- @decimalmax 驗證 number 和 string 對象是否小等于指定的值,小數(shù)存在精度
- @size 驗證對象(array,collection,map,string)長度是否在給定的范圍之內(nèi)
- @digits 驗證 number 和 string 的構成是否合法
- @past 驗證 date 和 calendar 對象是否在當前時間之前
- @future 驗證 date 和 calendar 對象是否在當前時間之后
- @pattern 驗證 string 對象是否符合正則表達式的規(guī)則
- @Email 驗證郵箱
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
初識Spring Boot框架之Spring Boot的自動配置
本篇文章主要介紹了初識Spring Boot框架之Spring Boot的自動配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-04-04
MyBatis 中 ${}和 #{}的正確使用方法(千萬不要亂用)
這篇文章主要介紹了MyBatis 中 ${}和 #{}的正確使用方法,本文給大家提到了MyBatis 中 ${}和 #{}的區(qū)別,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
SpringBoot開發(fā)技巧之如何處理跨域請求CORS
CORS(Cross-Origin Resource Sharing)"跨域資源共享",是一個W3C標準,它允許瀏覽器向跨域服務器發(fā)送Ajax請求,打破了Ajax只能訪問本站內(nèi)的資源限制2021-10-10
Java求字符串中出現(xiàn)次數(shù)最多的字符串以及出現(xiàn)次數(shù)
這篇文章主要為大家詳細介紹了Java統(tǒng)計字符串中出現(xiàn)次數(shù)最多的字符串以及出現(xiàn)次數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04
Spring需要三個級別緩存解決循環(huán)依賴原理解析
這篇文章主要為大家介紹了Spring需要三個級別緩存解決循環(huán)依賴原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02

