一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring Boot 表單驗證篇

Spring Boot 表單驗證篇

2020-12-17 13:18泥瓦匠BYSocket Java教程

在表單提交的時候,我們需要進行驗證。下面通過本篇文章給大家介紹Spring Boot 表單驗證篇,需要的朋友可以參考下

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

上一篇 《Spring Boot Web 開發注解篇》,就可以快速地進行 Web 開發。那么在表單提交的時候,我們需要進行驗證。前端驗證可以擋住 99% 的小白用戶,這里要實現服務端驗證。

Starters 機制告訴我們,只要加入 spring-boot-starter-validation 這個 Starter ,就可以使用其實現驗證。那什么是 spring-boot-starter-validation?

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

1.1 spring-boot-starter-validation 職責

spring-boot-starter-validation 是一個用于驗證的 Starter,主要完成的是 Java Bean 的驗證功能。

1.2 spring-boot-starter-validation 依賴關系

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

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

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

二、 運行 chapter-4-spring-boot-validating-form-input 表單驗證工程

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

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

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

2. Maven 編譯安裝這個工程:

?
1
2
cd spring-boot-core-book-demo
mvn clean install

3. 運行 chapter-4-spring-boot-validating-form-input 工程

右鍵項目 ValidatingFormInputApplication 類運行即可:

?
1
2
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 用戶列表頁面:

點擊創建用戶按鈕,打開用戶管理頁面:

輸入非法值提示:

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

1.pom.xml 如下:

validator 驗證依賴主要在 web 依賴中,web 依賴包含了 hibernate-validator 依賴

還有以下依賴:

單元測試依賴

Spring Data JPA 依賴 :: 數據持久層框架

h2 數據源連接驅動

模板引擎 Thymeleaf 依賴

2.實體類

具體業務層邏輯這邊不解釋,主要還是在控制層和 View 如何展示表單驗證

實體類 User 如下:

?
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
@Entity
public class User implements Serializable {
/**
* 編號
*/
@Id
@GeneratedValue
private Long id;
/**
* 名稱
*/
@NotEmpty(message = “姓名不能為空”)
@Size(min = 2, max = 8, message = “姓名長度必須大于 2 且小于 20 字”)
private String name;
/**
* 年齡
*/
@NotNull(message = “年齡不能為空”)
@Min(value = 0, message = “年齡大于 0”)
@Max(value = 300, message = “年齡不大于 300”)
private Integer age;
/**
* 出生時間
*/
@NotEmpty(message = “出生時間不能為空”)
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 框架提供的,實體類和表建立映射關系的。

Bean Validation 規范,運行時的數據驗證框架。它是 JSR 303 規范,Hibernate Validator 實現了這套規范,并擴展了一些注解,如下:

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

3.控制層 UserController

UserController 控制層代碼如下:

?
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
/**
* 創建用戶
* 處理 “/users” 的 POST 請求,用來獲取用戶列表
* 通過 @ModelAttribute 綁定參數,也通過 @RequestParam 從頁面中傳遞參數
*/
@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 請求,用來更新 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/”;
}

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

總結

以上所述是小編給大家介紹的Spring Boot 表單驗證篇,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.bysocket.com/?p=1942&utm_source=tuicool&utm_medium=referral

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 蜜桃破解版免费看nba | 波多在线| 韩国漂亮美女三级在线观看 | 91高清国产经典在线观看 | 无人视频在线观看完整版高清 | 二次元美女内裤凹陷太深 | 男人狂躁女人gif动态图 | 欧乱色国产精品兔费视频 | 被高跟鞋调教丨vk | 亚洲va精品中文字幕 | 妇乱子伦激情 | 欧美日韩在线一区二区三区 | 色婷婷久久综合中文久久一本` | 加勒比久草 | 恩爱夫妇交换小说 | 大肥女zzz00o| 国内精品国语自产拍在线观看55 | 扒开双腿疯狂进出爽爽动态图 | 四神集团1涨奶是第几章 | 欧美成人精品福利在线视频 | 美女大鸡鸡 | 99在线观看视频 | a级黄色视屏| 无限资源在线观看8 | sss在线观看免费视频 | 美女视频一区二区三区在线 | 欧美办公室激情videos高清 | 91精品导航在线观看 | 明星乱亚洲 | 成人福利免费视频 | 网友自拍咪咪爱 | 性吟网| www.一区 | 99久久免费国产精品热 | 日韩精品免费一区二区 | 青草视频免费观看在线观看 | 国产高清一区二区三区免费视频 | 俄罗斯图书馆无打码久久 | 精品国产在天天线在线麻豆 | 国产在线欧美日韩精品一区二区 | 欧美zoosex|