日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

基于SpringBoot服務(wù)端表單數(shù)據(jù)校驗(yàn)的實(shí)現(xiàn)方式

瀏覽:34日期:2023-04-16 11:04:15

SpringBoot服務(wù)端表單數(shù)據(jù)校驗(yàn)

(SpringBoot高級(jí))

一、實(shí)現(xiàn)添加用戶功能

1 創(chuàng)建項(xiàng)目

基于SpringBoot服務(wù)端表單數(shù)據(jù)校驗(yàn)的實(shí)現(xiàn)方式

2 修改POM文件

<project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd'> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.10.RELEASE</version> </parent> <groupId>com.bjsxt</groupId> <artifactId>13-spring-boot-validate</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <java.version>1.7</java.version> <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version> <thymeleaf-layout-dialect.version>2.0.4</thymeleaf-layout-dialect.version> </properties> <dependencies> <!-- springBoot的啟動(dòng)器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- thymeleaf的啟動(dòng)器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> </dependencies></project>

3 編寫添加用戶功能

3.1 創(chuàng)建實(shí)體類

publicclass Users { private String name; private String password; private Integer age; public String getName() { returnname; } publicvoid setName(String name) { this.name = name; } public String getPassword() { returnpassword; } publicvoid setPassword(String password) { this.password = password; } public Integer getAge() { returnage; } publicvoid setAge(Integer age) { this.age = age; } @Override public String toString() { return'Users [name=' + name + ', password=' + password + ', age=' + age + ']'; } }

3.2 編寫Controller

/** * SpringBoot 表單數(shù)據(jù)校驗(yàn) * * */@Controllerpublicclass UsersController { @RequestMapping('/addUser') public String showPage(){ return'add'; } /** * 完成用戶添加 */ @RequestMapping('/save') public String saveUser(Users users){ System.out.println(users); return'ok'; }}

3.3 編寫頁面add.html ok.html

<!DOCTYPE html><html><head><meta charset='UTF-8'><title>添加用戶</title></head><body> <form th:action='@{/save}' method='post'> 用戶姓名:<input type='text' name='name'/><br/> 用戶密碼:<input type='password' name='password' /><br/> 用戶年齡:<input type='text' name='age' /><br/> <input type='submit' value='OK'/> </form></body></html><!DOCTYPE html><html><head><meta charset='UTF-8'><title>操作成功</title></head><body> OK。。。。</body></html>二、SpringBoot對(duì)表單做數(shù)據(jù)校驗(yàn)

1 SpringBoot對(duì)表單數(shù)據(jù)校驗(yàn)的技術(shù)特點(diǎn)

1.1 SpringBoot中使用了Hibernate-validate校驗(yàn)框架

2 SpringBoot表單數(shù)據(jù)校驗(yàn)步驟

2.1 在實(shí)體類中添加校驗(yàn)規(guī)則

publicclass Users { @NotBlank//非空校驗(yàn) private String name; @NotBlank//密碼非空校驗(yàn) private String password; private Integer age; public String getName() { returnname; } publicvoid setName(String name) { this.name = name; } public String getPassword() { returnpassword; } publicvoid setPassword(String password) { this.password = password; } public Integer getAge() { returnage; } publicvoid setAge(Integer age) { this.age = age; } @Override public String toString() { return'Users [name=' + name + ', password=' + password + ', age=' + age + ']'; } }

2.2 在Controller中開啟校驗(yàn)

/** * 完成用戶添加 *@Valid開啟對(duì)Users對(duì)象的數(shù)據(jù)校驗(yàn) *BindingResult:封裝了校驗(yàn)的結(jié)果 */ @RequestMapping('/save') public String saveUser(@Valid Users users,BindingResult result){ if(result.hasErrors()){ return'add'; } System.out.println(users); return'ok'; }

2.3 在頁面中獲取提示信息

<!DOCTYPE html><html><head><meta charset='UTF-8'><title>添加用戶</title></head><body> <form th:action='@{/save}' method='post'> 用戶姓名:<input type='text' name='name'/><font color='red' th:errors='${users.name}'></font><br/> 用戶密碼:<input type='password' name='password' /><font color='red' th:errors='${users.password}'></font><br/> 用戶年齡:<input type='text' name='age' /><font color='red' th:errors='${users.age}'></font><br/> <input type='submit' value='OK'/> </form></body></html>

2.4 遇到異常

在jsp當(dāng)中,如果一個(gè)對(duì)象根本不存在,那么他仍然可以在jsp頁面進(jìn)行遍歷,只不過為空,不顯示而已,但是在thymeleaf當(dāng)中,如果說這個(gè)對(duì)象不存在,他就會(huì)報(bào)以下錯(cuò)誤,解決問題的辦法就是在controller中的方法上的傳遞參數(shù)加上這個(gè)對(duì)象,以便在thymeleaf視圖層當(dāng)中,告知這個(gè)對(duì)象是存在于的

基于SpringBoot服務(wù)端表單數(shù)據(jù)校驗(yàn)的實(shí)現(xiàn)方式

三、解決數(shù)據(jù)校驗(yàn)時(shí)的異常問題

解決異常的方法,在跳轉(zhuǎn)頁面的方法中注入一個(gè)對(duì)象,來解決問題。要求參數(shù)對(duì)象的變量名必須是對(duì)象的類名的全稱首字母小寫。

在springboot 1.5當(dāng)中,參數(shù)變量必須是對(duì)象類的名稱首字母小寫,但是在springboot2.0以上,已經(jīng)很大程度上優(yōu)化了這個(gè)問題,變量名稱隨便寫,因?yàn)樵谔D(zhuǎn)頁面的時(shí)候,將該對(duì)象放入到Model當(dāng)中傳遞,他的key 就是對(duì)象的類的全程首字母大寫(默認(rèn)),在thymeleaf當(dāng)中取出這個(gè)值的時(shí)候,他的key為對(duì)象的類的全程首字母大寫,與參數(shù)的變量名無任何關(guān)系 如果非要更改Model當(dāng)中的key值,一下有詳解

代碼

/** * 解決異常的方式??梢栽谔D(zhuǎn)頁面的方法中注入一個(gè)Uesrs對(duì)象。 * 注意:由于springmvc會(huì)將該對(duì)象放入到Model中傳遞。key的名稱會(huì)使用該對(duì)象的駝峰式的命名規(guī)則來作為key。 * 參數(shù)的變量名需要與對(duì)象的名稱相同。將首字母小寫。 * * @param users * @return */ @RequestMapping('/addUser') public String showPage( Users users){ return'add'; }/** * 完成用戶添加 *@Valid開啟對(duì)Users對(duì)象的數(shù)據(jù)校驗(yàn) *BindingResult:封裝了校驗(yàn)的結(jié)果 */ @RequestMapping('/save') public String saveUser( @Valid Users users,BindingResult result){ if(result.hasErrors()){ return'add'; } System.out.println(users); return'ok'; }

<!DOCTYPE html><html><head><meta charset='UTF-8'><title>添加用戶</title></head><body> <form th:action='@{/save}' method='post'> 用戶姓名:<input type='text' name='name'/><font color='red' th:errors='${users.name}'></font><br/> 用戶密碼:<input type='password' name='password' /><font color='red' th:errors='${users.password}'></font><br/> 用戶年齡:<input type='text' name='age' /><font color='red' th:errors='${users.age}'></font><br/> <input type='submit' value='OK'/> </form></body></html>

如果參數(shù)的名稱需要做改變

/** * * 如果想為傳遞的對(duì)象更改名稱,可以使用@ModelAttribute('aa')這表示當(dāng)前傳遞的對(duì)象的key為aa。 * 那么我們?cè)陧撁嬷蝎@取該對(duì)象的key也需要修改為aa * @param users * @return */ @RequestMapping('/addUser') public String showPage(@ModelAttribute('aa') Users users){ return'add'; }/** * 完成用戶添加 *@Valid開啟對(duì)Users對(duì)象的數(shù)據(jù)校驗(yàn) *BindingResult:封裝了校驗(yàn)的結(jié)果 */ @RequestMapping('/save') public String saveUser(@ModelAttribute('aa') @Valid Users users,BindingResult result){ if(result.hasErrors()){ return'add'; } System.out.println(users); return'ok'; }

<!DOCTYPE html><html><head><meta charset='UTF-8'><title>添加用戶</title></head><body> <form th:action='@{/save}' method='post'> 用戶姓名:<input type='text' name='name'/><font color='red' th:errors='${aa.name}'></font><br/> 用戶密碼:<input type='password' name='password' /><font color='red' th:errors='${aa.password}'></font><br/> 用戶年齡:<input type='text' name='age' /><font color='red' th:errors='${aa.age}'></font><br/> <input type='submit' value='OK'/> </form></body></html>四、其他校驗(yàn)規(guī)則

@NotBlank: 判斷字符串是否為null或者是空串(去掉首尾空格)。

@NotEmpty: 判斷字符串是否null或者是空串。

@Length: 判斷字符的長(zhǎng)度(最大或者最小)

@Min: 判斷數(shù)值最小值

@Max: 判斷數(shù)值最大值

@Email: 判斷郵箱是否合法

補(bǔ)充知識(shí):控制Configuration是否生效,使用Springboot中@ConditionalOnProperty注解

介紹

@ConditionalOnProperty注解的作用是來控制Configuration是否生效

通過其兩個(gè)屬性name以及havingValue來實(shí)現(xiàn)的,其中name用來從application.properties中讀取某個(gè)屬性值。

matchIfMissing來控制默認(rèn)值

如果值不為空,則將該值與havingValue指定的值進(jìn)行比較,如果一樣則返回true;否則返回false。

如果返回值為false,則該configuration不生效;為true則生效。

使用

shardingjdbc中可以控制是否啟用,這樣可以針對(duì)某個(gè)配置來啟動(dòng)數(shù)據(jù)源,完全不影響代碼實(shí)現(xiàn),想完成這個(gè)功能就要用到Stringboot提供的注解@ConditionalOnProperty

基于SpringBoot服務(wù)端表單數(shù)據(jù)校驗(yàn)的實(shí)現(xiàn)方式

因?yàn)槟J(rèn)是true,所以使用可以忽略,但是如果不需要使用,禁用則需要增加配置

spring.shardingsphere.enabled=false

以上這篇基于SpringBoot服務(wù)端表單數(shù)據(jù)校驗(yàn)的實(shí)現(xiàn)方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧洲日本mm| 午夜视频精品| 中文字幕一区二区三区日韩精品| 亚洲福利国产| 中文字幕色婷婷在线视频| 欧美a一区二区| 久久99蜜桃| 久久99久久久精品欧美| 国产suv精品一区二区四区视频 | 成人片免费看| 天堂中文av在线资源库| 日韩久久视频| 蜜臀久久99精品久久一区二区| 91精品一区二区三区综合在线爱| 亚洲不卡av不卡一区二区| 久久精品理论片| 欧美激情另类| 日韩精品水蜜桃| 精品欧美久久| 日韩中文字幕区一区有砖一区| 只有精品亚洲| 欧美日本不卡高清| 麻豆精品国产91久久久久久| 精品视频国产| 日韩影院二区| 2023国产精品久久久精品双| 爽好多水快深点欧美视频| 亚洲欧洲国产精品一区| 国产欧美日韩精品一区二区免费 | 久久久久免费| 国产综合视频| 中文字幕一区二区三区在线视频| 欧美一级全黄| 日本h片久久| 国产精品一区毛片| 精品99在线| 亚洲网站视频| 一区二区三区国产在线| 精品日韩视频| 国产农村妇女精品一二区| 蜜臀精品一区二区三区在线观看| 欧美一区久久| 日韩av片子| 激情综合自拍| 日韩高清在线不卡| 狠狠久久伊人| 91久久中文| 国产福利一区二区精品秒拍| 天堂资源在线亚洲| 少妇高潮一区二区三区99| 国产一区二区三区不卡视频网站 | 国产手机视频一区二区 | 国产免费av一区二区三区| 日本不卡免费高清视频在线| 免费日韩一区二区| 国产精品2023| 欧美.日韩.国产.一区.二区 | 欧美亚洲人成在线| 成人免费电影网址| 日韩av电影一区| 超碰99在线| 在线精品观看| 国产成人精选| 久久不射网站| 国产精品一区二区av交换| 韩国精品主播一区二区在线观看| 亚州精品视频| 国产综合激情| 欧美激情麻豆| 另类av一区二区| 国产 日韩 欧美 综合 一区| 免费在线观看不卡| av资源亚洲| 亚洲tv在线| | 人人爱人人干婷婷丁香亚洲| 伊人久久大香线蕉av不卡| 一区二区亚洲视频| 97精品中文字幕| 91伊人久久| 91精品综合| 韩国女主播一区二区三区| 中文字幕亚洲影视| 99成人超碰| 免费在线观看精品| 久久裸体视频| 久久精品国产福利| 日本免费新一区视频| 红桃视频国产精品| 天堂√8在线中文| 亚洲福利久久| 成人小电影网站| 欧美国产另类| 日韩中文字幕| 91久久久精品国产| 国产精品国产三级国产在线观看| 欧美日韩xxxx| 伊人www22综合色| 91久久中文| 久久精品国产99久久| 福利视频一区| 国产精品3区| 欧美另类中文字幕 | 亚洲精品九九| 在线日韩中文| 成人一二三区| 国产精品久久久久久模特| 亚洲精品在线a| | 青青国产精品| 日韩精品亚洲专区| 日韩在线a电影| 亚洲精品麻豆| 亚洲三级网址| 日本大胆欧美人术艺术动态| 欧美理论视频| 国产精品99一区二区| 欧美精品高清| 日本免费一区二区三区四区| 精品久久视频| 国产一区二区三区亚洲| 精品久久免费| 中文字幕在线免费观看视频| 国产aa精品| 国产一区二区三区亚洲| 精品理论电影在线| 国内在线观看一区二区三区| 国产中文字幕一区二区三区| 精品99在线| 日产精品一区| 欧美福利专区| 久久福利精品| 亚洲精品一级| 欧美一级全黄| 婷婷综合成人| 欧美在线精品一区| 国产精品超碰| 91中文字幕精品永久在线| 成人片免费看| 欧美jjzz| 亚洲日本国产| 久久国际精品| 免费在线日韩av| 国产网站在线| 激情久久久久久久| 亚洲一区二区成人| 日韩激情av在线| 国产精品主播| 91免费精品| 青青久久av| 在线视频亚洲| 日韩激情一二三区| 麻豆91精品视频| 日韩三区免费| 免费看日韩精品| 国产精品一级在线观看| 亚洲精品网址| 亚洲精品国产日韩| 久久不见久久见中文字幕免费| 成人国产精品久久| 九九综合九九| 日韩精品第一| 麻豆国产在线| 国产视频一区三区| 日韩av一区二区三区| 精品精品99| 亚洲国内精品| 日本欧美一区二区在线观看| 国产黄大片在线观看| 五月天激情综合网| 天海翼亚洲一区二区三区| 激情综合婷婷| 欧美成人高清| 久久国产乱子精品免费女| av资源中文在线| 石原莉奈在线亚洲三区| 精品91福利视频| 视频一区欧美日韩| 麻豆精品在线| 不卡一区综合视频| 综合色一区二区| 国产夫妻在线| 亚洲精品一级| 亚洲伦乱视频| 日本a级不卡| 国产综合亚洲精品一区二| 欧美一区二区三区久久精品| 日韩精品诱惑一区?区三区| 亚洲精品三级| 视频二区不卡| 欧美在线黄色| 欧美色图国产精品| 国产伦精品一区二区三区在线播放| 亚洲三级欧美| 亚欧成人精品| 日本精品影院| 国产伦精品一区二区三区视频| 欧美精品九九| 久久亚洲国产精品尤物| 一本综合精品|