前言
所謂表單驗(yàn)證,即校驗(yàn)用戶提交的數(shù)據(jù)的合理性的,比如是否為空了,密碼長度是否大于6位,是否是純數(shù)字的,等等。spring boot是如何幫我們實(shí)現(xiàn)表單驗(yàn)證的呢?下面話不多說了,來一起看看詳細(xì)的介紹吧。
假設(shè)現(xiàn)在我們存在這么一個注冊界面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<!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 > |
需要驗(yàn)證提交上去的用戶名,密碼。是否為空,以及其他的一些問題。我們需要怎么做呢?
首先我們需要一個實(shí)體類:User類,存儲表單提交上來的數(shù)據(jù):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
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注解驗(yàn)證數(shù)據(jù),并且使用BindingResult獲取結(jié)果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
@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; } } |
這樣就完成了一個簡單的表單驗(yàn)證。
而除了@NotEmpty,@Length之外,還有很多其他的注解:
- @null 驗(yàn)證對象是否為空
- @notnull 驗(yàn)證對象是否為非空
- @asserttrue 驗(yàn)證 boolean 對象是否為 true
- @assertfalse
- 驗(yàn)證 boolean 對象是否為 false
- @min 驗(yàn)證 number 和 string 對象是否大等于指定的值
- @max 驗(yàn)證 number 和 string 對象是否小等于指定的值
- @decimalmin 驗(yàn)證 number 和 string 對象是否大等于指定的值,小數(shù)存在精度
- @decimalmax 驗(yàn)證 number 和 string 對象是否小等于指定的值,小數(shù)存在精度
- @size 驗(yàn)證對象(array,collection,map,string)長度是否在給定的范圍之內(nèi)
- @digits 驗(yàn)證 number 和 string 的構(gòu)成是否合法
- @past 驗(yàn)證 date 和 calendar 對象是否在當(dāng)前時間之前
- @future 驗(yàn)證 date 和 calendar 對象是否在當(dāng)前時間之后
- @pattern 驗(yàn)證 string 對象是否符合正則表達(dá)式的規(guī)則
- @Email 驗(yàn)證郵箱
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務(wù)器之家的支持。
原文鏈接:http://blog.csdn.net/a60782885/article/details/68488411