以下是关于“SpringMVC实现Validation校验过程详解”的完整攻略,其中包含两个示例。
SpringMVC实现Validation校验过程详解
在SpringMVC中,我们可以使用Validation校验来验证表单数据的合法性。在本文中,我们将讲解如何使用SpringMVC实现Validation校验。
Validation校验实现原理
SpringMVC使用JSR-303规范中的Bean Validation API来实现Validation校验。我们可以在实体类中使用注解来标记需要校验的字段。当表单数据提交时,SpringMVC会自动校验表单数据,并将校验结果返回给客户端。
Validation校验用法
使用SpringMVC实现Validation校验的步骤如下:
- 在实体类中使用注解标记需要校验的字段。
public class User {
@NotNull(message = "用户名不能为空")
private String username;
@NotNull(message = "密码不能为空")
private String password;
// getters and setters
}
在本示例中,我们在User实体类中使用@NotNull注解标记了username和password字段。如果这些字段为空,将抛出一个包含错误信息的异常。
- 在Controller中添加@Validated注解,并在方法参数中添加BindingResult参数。
@RestController
public class UserController {
@PostMapping("/user")
public Result addUser(@Validated @RequestBody User user, BindingResult result) {
if (result.hasErrors()) {
List<String> errors = new ArrayList<>();
for (ObjectError error : result.getAllErrors()) {
errors.add(error.getDefaultMessage());
}
return Result.error(StringUtils.join(errors, ","));
}
// save user to database
return Result.success();
}
}
在本示例中,我们在UserController中添加了@Validated注解,并在addUser方法参数中添加了BindingResult参数。如果表单数据校验失败,我们将获取所有错误信息,并将这些错误信息封装在Result对象中返回给客户端。如果表单数据校验成功,我们将保存用户信息到数据库,并返回一个成功的Result对象。
- 在客户端中提交表单数据。
$.ajax({
url: "/user",
type: "POST",
data: JSON.stringify({
"username": "",
"password": ""
}),
contentType: "application/json",
success: function(data) {
console.log(data);
},
error: function(xhr, status, error) {
var result = JSON.parse(xhr.responseText);
console.log(result.message);
}
});
在本示例中,我们使用jQuery的$.ajax方法来发送POST请求。我们将表单数据以JSON格式提交到服务器。如果表单数据校验失败,我们将获取返回的错误信息,并在控制台中打印该信息。
示例
以下是一个示例,演示如何使用SpringMVC实现Validation校验:
-
创建一个名为spring-mvc-demo的Maven项目。
-
在项目的POM文件添加SpringMVC和Validation的依赖库。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.0.Final</version>
</dependency>
</dependencies>
- 创建一个名为User的实体类。
public class User {
@NotNull(message = "用户名不能为空")
private String username;
@NotNull(message = "密码不能为空")
private String password;
// getters and setters
}
在本示例中,我们创建了一个名为User的实体类,并在该类中使用@NotNull注解标记了username和password字段。如果这些字段为空,将抛出一个包含错误信息的异常。
- 创建一个名为UserController的Controller类。
@RestController
public class UserController {
@PostMapping("/user")
public Result addUser(@Validated @RequestBody User user, BindingResult result) {
if (result.hasErrors()) {
List<String> errors = new ArrayList<>();
for (ObjectError error : result.getAllErrors()) {
errors.add(error.getDefaultMessage());
}
return Result.error(StringUtils.join(errors, ","));
}
// save user to database
return Result.success();
}
}
在本示例中,我们创建了一个名为UserController的Controller类,并使用@RestController注解标记该类。我们使用@PostMapping注解来处理POST请求,并使用@Validated注解来标记需要校验的实体类。我们在addUser方法参数中添加了BindingResult参数,用于获取校验结果。如果表单数据校验失败,我们将获取所有错误信息,并将这些错误信息封装在Result对象中返回给客户端。如果表单数据校验成功,我们将保存用户信息到数据库,并返回一个成功的Result对象。
- 创建一个名为Result的返回结果类。
public class Result {
private int code;
private String message;
private Object data;
// getters and setters
}
在本示例中,我们创建了一个名为Result的返回结果类,并在该类中定义了三个属性:code、message和data。
- 运行项目并访问http://localhost:8080/index.html。
在本示例中,我们运行了项目并访问了http://:8080/index.html。我们在该页面中添加了一个表单,用于提交用户信息。如果表单数据校验失败,我们将返回一个包含错误信息的JSON格式数据。
总结
SpringMVC实现Validation校验是一种方便的方式来验证表单数据的合法性。我们可以在实体类中使用注解来标记需要校验的字段,并在Controller中添加@Validated注解和BindingResult参数来实现Validation校验。在使用SpringMVC实现Validation校验时,我们需要遵循SpringMVC规范,确保代码可维护性和可扩展。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC实现Validation校验过程详解 - Python技术站