📜  Spring – MVC 验证(1)

📅  最后修改于: 2023-12-03 14:47:34.140000             🧑  作者: Mango

Spring MVC 验证

Spring MVC 验证是一种用于验证用户输入的技术,它可以通过在控制器中添加注解来自动验证用户输入,并返回相应的错误信息。

概述

Spring MVC 验证可以通过提供 Validator 接口来进行验证,也可以使用注解来自动验证。在 Spring MVC 中,我们可以使用 @Valid 注解来启用验证,同时也可以使用 BindingResult 对象来获取验证结果。

配置

在使用 Spring MVC 验证之前,我们需要在 Spring MVC 的配置中添加以下内容:

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
<mvc:annotation-driven validator="validator"/>

这里我们使用的是 Bean Validation API 提供的验证器,因此需要将其添加到 Spring 容器中。同时在 <mvc:annotation-driven> 中添加 validator 属性来启用验证。如果你正在使用新版本的 Spring,那么你无需手动添加这些配置,Spring 会自动检测并启用验证。

注解

Spring MVC 提供了大量的注解来帮助我们进行验证。这些注解分为两类:

  • 约束注解:用于限制输入的值必须满足一定的规则。
  • 分组注解:用于对约束注解进行分组,它们通常用于在不同的场景下进行验证。

以下是常用的约束注解:

  • @NotNull:值不能为空
  • @NotEmpty:字符串不能为空,集合不能为空
  • @NotBlank:字符串不能为空,不能只包含空格字符
  • @Size(min, max):字符串或集合的大小必须在指定的范围内
  • @Min(value):值必须大于等于指定的值
  • @Max(value):值必须小于等于指定的值
  • @Email:值必须是合法的电子邮件地址格式
  • @Pattern(regexp):值必须匹配指定的正则表达式

以下是常用的分组注解:

  • @GroupSequence:用于指定验证器验证时的执行顺序,即按照指定的分组顺序进行验证。
  • @Validated:用于指定使用哪些分组进行验证。
示例

以下是一个示例代码,它演示了如何在控制器中使用注解进行验证:

@Controller
@RequestMapping("/user")
public class UserController {

    @PostMapping("/save")
    public String save(@Valid User user, BindingResult result) {
        if (result.hasErrors()) {
            return "error";
        }
        
        userService.save(user);
        return "success";
    }
    
}

在上面的代码中,我们使用了 @Valid 注解来启用验证,并通过 BindingResult 对象进行错误处理。在 User 类中,我们添加了大量的约束注解来限制属性的值。

public class User {

    @NotNull
    private String username;

    @NotBlank
    private String password;

    @Email
    private String email;

    @Size(min = 2, max = 10)
    private String nickname;
    
    // getter/setter 略
}
结论

Spring MVC 验证是一个非常有用的技术,它可以帮助我们快速验证用户输入,并返回相应的错误信息。通过使用注解和分组注解,我们可以轻松地实现复杂的验证场景。