Spring Boot學(xué)習(xí)入門(mén)之表單驗(yàn)證
前言
所謂表單驗(yàn)證,即校驗(yàn)用戶(hù)提交的數(shù)據(jù)的合理性的,比如是否為空了,密碼長(zhǎng)度是否大于6位,是否是純數(shù)字的,等等。spring boot是如何幫我們實(shí)現(xiàn)表單驗(yàn)證的呢?下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
假設(shè)現(xiàn)在我們存在這么一個(gè)注冊(cè)界面:
<!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)證提交上去的用戶(hù)名,密碼。是否為空,以及其他的一些問(wèn)題。我們需要怎么做呢?
首先我們需要一個(gè)實(shí)體類(lèi):User類(lèi),存儲(chǔ)表單提交上來(lái)的數(shù)據(jù):
public class User { private int id; @NotEmpty(message="用戶(hù)名不能為空") private String username; @NotEmpty(message="密碼不能為空") @Length(min=6, message="密碼長(zhǎng)度不能少于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的值,指示如果不符合的話(huà),會(huì)得到什么message。
接下來(lái)編寫(xiě)Controller類(lèi):使用@Valid注解驗(yàn)證數(shù)據(jù),并且使用BindingResult獲取結(jié)果。
@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("注冊(cè).."); return user; } }
這樣就完成了一個(gè)簡(jiǎn)單的表單驗(yàn)證。
而除了@NotEmpty,@Length之外,還有很多其他的注解:
- @null 驗(yàn)證對(duì)象是否為空
- @notnull 驗(yàn)證對(duì)象是否為非空
- @asserttrue 驗(yàn)證 boolean 對(duì)象是否為 true
- @assertfalse
- 驗(yàn)證 boolean 對(duì)象是否為 false
- @min 驗(yàn)證 number 和 string 對(duì)象是否大等于指定的值
- @max 驗(yàn)證 number 和 string 對(duì)象是否小等于指定的值
- @decimalmin 驗(yàn)證 number 和 string 對(duì)象是否大等于指定的值,小數(shù)存在精度
- @decimalmax 驗(yàn)證 number 和 string 對(duì)象是否小等于指定的值,小數(shù)存在精度
- @size 驗(yàn)證對(duì)象(array,collection,map,string)長(zhǎng)度是否在給定的范圍之內(nèi)
- @digits 驗(yàn)證 number 和 string 的構(gòu)成是否合法
- @past 驗(yàn)證 date 和 calendar 對(duì)象是否在當(dāng)前時(shí)間之前
- @future 驗(yàn)證 date 和 calendar 對(duì)象是否在當(dāng)前時(shí)間之后
- @pattern 驗(yàn)證 string 對(duì)象是否符合正則表達(dá)式的規(guī)則
- @Email 驗(yàn)證郵箱
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- springmvc后臺(tái)基于@ModelAttribute獲取表單提交的數(shù)據(jù)
- layui 圖片上傳+表單提交+ Spring MVC的實(shí)例
- SpringCloud Finchley Gateway 緩存請(qǐng)求Body和Form表單的實(shí)現(xiàn)
- Spring Cloud使用Feign實(shí)現(xiàn)Form表單提交的示例
- Spring Boot RestTemplate提交表單數(shù)據(jù)的三種方法
- SpringMVC實(shí)現(xiàn)表單驗(yàn)證功能詳解
- SpringMVC處理Form表單實(shí)例
- Spring MVC接受表單自動(dòng)封裝特性實(shí)例解析
相關(guān)文章
IDEA實(shí)用好用插件推薦及使用方法教程詳解(必看)
這篇文章主要介紹了IDEA實(shí)用好用插件推薦及使用方法教程,本文通過(guò)實(shí)例截圖相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04解決spring boot 1.5.4 配置多數(shù)據(jù)源的問(wèn)題
下面小編就為大家?guī)?lái)一篇解決spring boot 1.5.4 配置多數(shù)據(jù)源的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06在SpringBoot中無(wú)縫整合Dubbo的實(shí)現(xiàn)過(guò)程
微服務(wù)架構(gòu)已經(jīng)成為現(xiàn)代應(yīng)用開(kāi)發(fā)的熱門(mén)趨勢(shì),而Dubbo作為一款強(qiáng)大的分布式服務(wù)框架,與Spring?Boot的結(jié)合是構(gòu)建高性能微服務(wù)應(yīng)用的理想選擇,本文將詳細(xì)介紹如何在SpringBoot中無(wú)縫整合Dubbo,需要的朋友可以參考下2024-01-01詳解spring-boot集成elasticsearch及其簡(jiǎn)單應(yīng)用
本篇文章主要介紹了詳解spring-boot集成elasticsearch及其簡(jiǎn)單應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06springboot2.x 接入阿里云市場(chǎng)短信發(fā)送的實(shí)現(xiàn)
本文主要介紹了springboot2.x 接入阿里云市場(chǎng)短信發(fā)送的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11springboot2+es7使用RestHighLevelClient的示例代碼
本文主要介紹了springboot2+es7使用RestHighLevelClient的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07SpringBoot詳細(xì)分析自動(dòng)裝配原理并實(shí)現(xiàn)starter
相對(duì)于傳統(tǒng)意義上的Spring項(xiàng)目,SpringBoot具有開(kāi)箱即用,簡(jiǎn)化配置,內(nèi)置Tomcat等等等等一系列的特點(diǎn)。在這些特點(diǎn)中,最重要的兩條就是約定優(yōu)于配置和自動(dòng)裝配2022-07-07Java class文件格式之?dāng)?shù)據(jù)類(lèi)型_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java class文件格式之?dāng)?shù)據(jù)類(lèi)型的相關(guān)資料,需要的朋友可以參考下2017-06-06