亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring Boot 表單驗(yàn)證篇

 更新時(shí)間:2017年08月16日 15:08:19   作者:泥瓦匠BYSocket  
在表單提交的時(shí)候,我們需要進(jìn)行驗(yàn)證。下面通過本篇文章給大家介紹Spring Boot 表單驗(yàn)證篇,需要的朋友可以參考下

一、 spring-boot-starter-validation 依賴概述

上一篇 《Spring Boot Web 開發(fā)注解篇》,就可以快速地進(jìn)行 Web 開發(fā)。那么在表單提交的時(shí)候,我們需要進(jìn)行驗(yàn)證。前端驗(yàn)證可以擋住 99% 的小白用戶,這里要實(shí)現(xiàn)服務(wù)端驗(yàn)證。

Starters 機(jī)制告訴我們,只要加入 spring-boot-starter-validation 這個(gè) Starter ,就可以使用其實(shí)現(xiàn)驗(yàn)證。那什么是 spring-boot-starter-validation?

spring-boot-starter-validation 就是使用 Hibernate Validator 框架來提供 Java Bean 驗(yàn)證功能。

1.1 spring-boot-starter-validation 職責(zé)

spring-boot-starter-validation 是一個(gè)用于驗(yàn)證的 Starter,主要完成的是 Java Bean 的驗(yàn)證功能。

1.2 spring-boot-starter-validation 依賴關(guān)系

spring-boot-starter-validation 依賴的組成如下表:

  • spring-boot-starter 核心包,包括了自動(dòng)化配置支持、日志、YAML 文件解析的支持等。
  • tomcat-embed-el Tomcat 容器嵌入包
  • hibernate-validator Hibernate 驗(yàn)證框架包

可見,tomcat 容器是 8.x 版本。這里有個(gè)小問題了,為啥 spring-boot-starter-web 也有這些上面這些依賴呢?這樣如果開發(fā) web 就不需要重復(fù)添加 spring-boot-starter-validation 依賴了。但如果沒用 web 依賴時(shí)候想要實(shí)現(xiàn) Bean 驗(yàn)證,則只要單單加入 spring-boot-starter-validation 依賴即可。

二、 運(yùn)行 chapter-4-spring-boot-validating-form-input 表單驗(yàn)證工程

1. git clone 下載工程 spring-boot-core-book-demo

項(xiàng)目地址見 GitHub – https://github.com/JeffLi1993/spring-boot-core-book-demo

git clone https://github.com/JeffLi1993/spring-boot-core-book-demo.git

2. Maven 編譯安裝這個(gè)工程:

cd spring-boot-core-book-demo
mvn clean install

3. 運(yùn)行 chapter-4-spring-boot-validating-form-input 工程

右鍵項(xiàng)目 ValidatingFormInputApplication 類運(yùn)行即可:

2017-08-09 16:24:58.387 INFO 12193 — [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http)
2017-08-09 16:24:58.395 INFO 12193 — [ main] s.b.core.ValidatingFormInputApplication : Started ValidatingFormInputApplication in 9.846 seconds (JVM running for 11.23)

訪問 http://localhost:8080/users 用戶列表頁面:

點(diǎn)擊創(chuàng)建用戶按鈕,打開用戶管理頁面:

輸入非法值提示:

三、 詳解 spring-boot-validating-form-input

1.pom.xml 如下:

validator 驗(yàn)證依賴主要在 web 依賴中,web 依賴包含了 hibernate-validator 依賴

還有以下依賴:

單元測(cè)試依賴

Spring Data JPA 依賴 :: 數(shù)據(jù)持久層框架

h2 數(shù)據(jù)源連接驅(qū)動(dòng)

模板引擎 Thymeleaf 依賴

2.實(shí)體類

具體業(yè)務(wù)層邏輯這邊不解釋,主要還是在控制層和 View 如何展示表單驗(yàn)證

實(shí)體類 User 如下:

@Entity
public class User implements Serializable {
/**
* 編號(hào)
*/
@Id
@GeneratedValue
private Long id;
/**
* 名稱
*/
@NotEmpty(message = “姓名不能為空”)
@Size(min = 2, max = 8, message = “姓名長(zhǎng)度必須大于 2 且小于 20 字”)
private String name;
/**
* 年齡
*/
@NotNull(message = “年齡不能為空”)
@Min(value = 0, message = “年齡大于 0”)
@Max(value = 300, message = “年齡不大于 300”)
private Integer age;
/**
* 出生時(shí)間
*/
@NotEmpty(message = “出生時(shí)間不能為空”)
private String birthday;
public Long getId() {
return id;
}
public void setId(Long 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;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return “User{” +
“id=” + id +
“, name='” + name + ‘\” +
“, age=” + age +
“, birthday=” + birthday +
‘}';
}
}
@Entity
@Id
@GeneratedValue

以上注解是 JPA 框架提供的,實(shí)體類和表建立映射關(guān)系的。

Bean Validation 規(guī)范,運(yùn)行時(shí)的數(shù)據(jù)驗(yàn)證框架。它是 JSR 303 規(guī)范,Hibernate Validator 實(shí)現(xiàn)了這套規(guī)范,并擴(kuò)展了一些注解,如下:

@Null 被注釋的元素必須為 null
@NotNull 被注釋的元素必須不為 null
@Min(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須大于等于指定的最小值
@Max(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須小于等于指定的最大值
@Size(max, min) 被注釋的元素的大小必須在指定的范圍內(nèi)
@Email 被注釋的元素必須是電子郵箱地址
@Length 被注釋的字符串的大小必須在指定的范圍內(nèi)
@NotEmpty 被注釋的字符串的必須非空
@Range 被注釋的元素必須在合適的范圍內(nèi)

3.控制層 UserController

UserController 控制層代碼如下:

/**
* 創(chuàng)建用戶
* 處理 “/users” 的 POST 請(qǐng)求,用來獲取用戶列表
* 通過 @ModelAttribute 綁定參數(shù),也通過 @RequestParam 從頁面中傳遞參數(shù)
*/
@RequestMapping(value = “/create”, method = RequestMethod.POST)
public String postUser(ModelMap map,
@ModelAttribute @Valid User user,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
map.addAttribute(“action”, “create”);
return “userForm”;
}
userService.insertByUser(user);
return “redirect:/users/”;
}
/**
* 處理 “/users/{id}” 的 PUT 請(qǐng)求,用來更新 User 信息
*
*/
@RequestMapping(value = “/update”, method = RequestMethod.POST)
public String putUser(ModelMap map,
@ModelAttribute @Valid User user,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
map.addAttribute(“action”, “update”);
return “userForm”;
}
userService.update(user);
return “redirect:/users/”;
}

在新增和更新用戶時(shí),我們會(huì)對(duì)表單進(jìn)行驗(yàn)證,那么首先用 @Valid 注解到實(shí)體類,使實(shí)體類 User 中驗(yàn)證注解生效,然后我們介紹下 BindingResult ,是數(shù)據(jù)綁定的結(jié)果對(duì)象,從源碼中可以看出,其繼承了 Errors 接口,所以所有的錯(cuò)誤信息都會(huì)被綁定到這個(gè)對(duì)象。通過 hasErrors() 方法判斷是否有錯(cuò)誤信息,如果有返回原頁面,并展示錯(cuò)誤信息。

總結(jié)

以上所述是小編給大家介紹的Spring Boot 表單驗(yàn)證篇,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 使用Mybatis Generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件的方法

    使用Mybatis Generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件的方法

    這篇文章主要介紹了使用Mybatis Generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件的方法的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • Spring Security使用單點(diǎn)登錄的權(quán)限功能

    Spring Security使用單點(diǎn)登錄的權(quán)限功能

    本文主要介紹了Spring Security使用單點(diǎn)登錄的權(quán)限功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Spring boot項(xiàng)目打包成jar運(yùn)行的二種方法

    Spring boot項(xiàng)目打包成jar運(yùn)行的二種方法

    這篇文章主要給大家介紹了關(guān)于Spring boot項(xiàng)目打包成jar運(yùn)行的二種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • spring框架下websocket的搭建

    spring框架下websocket的搭建

    本篇文章主要介紹了spring框架下websocket的搭建,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-03-03
  • IntelliJ IDEA 2020.1 EAP4 發(fā)布,重命名/更改簽名新功能一覽

    IntelliJ IDEA 2020.1 EAP4 發(fā)布,重命名/更改簽名新功能一覽

    這篇文章主要介紹了IntelliJ IDEA 2020.1 EAP4 發(fā)布,重命名/更改簽名新功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 詳解spring集成mina實(shí)現(xiàn)服務(wù)端主動(dòng)推送(包含心跳檢測(cè))

    詳解spring集成mina實(shí)現(xiàn)服務(wù)端主動(dòng)推送(包含心跳檢測(cè))

    本篇文章主要介紹了詳解spring集成mina實(shí)現(xiàn)服務(wù)端主動(dòng)推送(包含心跳檢測(cè)),具有一定的參考價(jià)值,與興趣的可以了解一下
    2017-09-09
  • Java內(nèi)存緩存工具Guava LoadingCache使用解析

    Java內(nèi)存緩存工具Guava LoadingCache使用解析

    這篇文章主要介紹了Java內(nèi)存緩存工具Guava LoadingCache使用解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • java和c/c++ 數(shù)據(jù)類型長(zhǎng)度的比較

    java和c/c++ 數(shù)據(jù)類型長(zhǎng)度的比較

    本篇文章主要是對(duì)java和c/c++ 數(shù)據(jù)類型長(zhǎng)度的進(jìn)行了詳細(xì)的比較。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2014-01-01
  • SpringCloud之微服務(wù)容錯(cuò)的實(shí)現(xiàn)

    SpringCloud之微服務(wù)容錯(cuò)的實(shí)現(xiàn)

    這篇文章主要介紹了SpringCloud之微服務(wù)容錯(cuò)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 深入理解Spring中的Lookup(方法注入)

    深入理解Spring中的Lookup(方法注入)

    “Lookup方法”可以使Spring替換一個(gè)bean原有的,獲取其它對(duì)象具體的方法,并自動(dòng)返回在容器中的查找結(jié)果。下面這篇文章主要給大家介紹了關(guān)于Spring中Lookup(方法注入)的相關(guān)資料,需要的朋友可以參考下
    2018-05-05

最新評(píng)論