springboot服务器端数据-实现添加用户功能
- 创建项目
- 修改pom文件
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
<dependencies>
<!-- spring-boot启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- thymeleaf启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
- 添加新增用户功能,用控制台输出代替持久层
从页面收集数据,传入controller进行输出;
- 实体类
public class Users {
private String name;
private String password;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Users [name=" + name + ", password=" + password + ", age=" + age + "]";
}
public Users(String name, String password, Integer age) {
super();
this.name = name;
this.password = password;
this.age = age;
}
}
- 编写controller
@Controller
public class UsersController {
@RequestMapping("/addUser")
public String showPage() {
return "add";
}
@RequestMapping("/save")
public String save(Users user) {
System.out.println(user); //输出从页面收集到的数据
return "ok";
}
}
- 编写页面
add.html
<body>
<form th:action="@{/save}" method="post">
用户名:<input type="text" name="name"><br>
密码:<input type="text" name="password"><br>
年龄:<input type="text" name="age"><br>
<input type="submit" value="确定">
</form>
</body>
ok.html
<body>
操作成功!!!
</body>
- 控制台输出结果即可
springboot服务器端-数据校验
- springboot对表单数据校验的技术特点:
springboot中使用Hibernate-validator校验框架;
使用流程:
①在实体类的属性上添加非空校验;
@NotBlank
。
或者:@NotBlank(message="用户名不能为空")
@NotBlank
private String name;
②开启对实体类的数据校验;
@Valid
例:开启对user对象的数据校验。
public String save(@Valid Users user) {
System.out.println(user);
return "ok";
}
③注入
BindingResult
对象,封装了校验结果。注意:users
取名,不要改名,为Users的首字母小写。
注意:要修改名称,需要使用@ModelAttribute("name")
进行修改,(@ModelAttribute("aa") Users user)
;
@RequestMapping("/save")
public String save(@Valid Users users,BindingResult result) {
if(result.hasErrors()) {
return "add";
}
System.out.println(users);
return "ok";
}
④在页面中获取提示信息,使用
th:error
。th:errors="${users.name}"
会根据users.name
的属性名作为key,去BindingResult
取错误信息。因为BindingResult
会根据Users
实体类的属性名作为错误信息的key
。
注意:
th:errors="${users.name}"
取结果时,如果没有,会报java.lang.IllegalStateException
错。例如第一次进入add.html
时,并没有一个名为users
的对象。下面代码会出错!!!
<form th:action="@{/save}" method="post">
用户名:<input type="text" name="name"><font color="red" th:errors="${users.name}"></font><br>
密码:<input type="text" 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="确定">
</form>
springboot服务器端数据-解决异常
- 解决上节错误:
在
showPage
方法中注入一个Users
对象。改对象会保存在ModelAndView
中,这时就不会出现users
不存在的错误了。
@Controller
public class UsersController {
@RequestMapping("/addUser")
public String showPage(Users user) {
return "add";
}
@RequestMapping("/save")
public String save(@Valid Users users,BindingResult result) {
if(result.hasErrors()) {
return "add";
}
System.out.println(users);
return "ok";
}
}
springboot服务器端数据-其他校验规则
- 可以组合使用
注解 | 作用 |
---|---|
@NotBlank | 判断字符串是否为null或者空串,去掉收尾空格。 |
@NotEmpty | 判断字符串是否为null或者空串,不去掉收尾空格。 |
@Length | 判断字符的长度,包含最大或者最小。 |
@Min | 判断数值的最小值 |
@Max | 判断数值的最大值 |
判断邮箱是否合法 |