gpt4 book ai didi

Spring Boot 表单验证篇

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Spring Boot 表单验证篇由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1、 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 依赖即可.

2、 运行 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 用户列表页面:

点击创建用户按钮,打开用户管理页面:

输入非法值提示:

3、 详解 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 。

最后此篇关于Spring Boot 表单验证篇的文章就讲到这里了,如果你想了解更多关于Spring Boot 表单验证篇的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com