表单如下,注册qq为例

<form action="<%=basePath %>/register2.shtml" method="post">
<table>
    <tr>
 <td>昵称</td>
 <td>
            <input type="text" name="nick" placeholder="请输入4-10位汉字">
            <span style="color:red;">${requestScope.errorMessage.nick }</span>
        </td>
 </tr>
 <tr>
     <td>密码</td>
     <td>
                <input type="password" name="password" placeholder="请输入3-6位数字、字母、下划线组合">${requestScope.errorMessage.password }
            </td>
 </tr>
 <tr>
     <td>手机号码</td>
     <td>
                <input type="text" name="phone" placeholder="请输入正确的手机格式">
            </td>
 </tr>
 <tr>
     <td>邮箱</td>
     <td><input type="text" name="email" placeholder="请输入正确的邮箱格式"></td>
 </tr>
 <tr>
     <td>年龄</td>
 <td><input type="text" name="age" placeholder="请输入数字"></td>
 </tr>
 <tr>
     <td colspan="2"><input type="submit" value="注册"><input type="reset" value="重置"></td>
 </tr>
    </table>
</form>

第一步:导入校验的jar包

springboot 正则符号转义_数据

第二步:springmvc.xml中配置

<!-- 配置hibernate-validator
     <mvc:annotation-driven validator="validator"/>
     <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
 <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
</bean>

第三步:在接收参数的实体类前添加校验的注解

public class QQ {
@NotNull(message = "亲,您没有填写昵称")
    @Pattern(regexp = "[\\u4e00-\\u9fa5]{4,10}", message = "*昵称必须为4-10位汉字")
private String nick;// 昵称

    @Pattern(regexp = "\\w{3,6}", message = "*密码必须为3-6位字母、数字或者下划线组合")
private String password;// 密码

private String phone;// 手机号

@Email(message = "对不起,您输入的邮箱格式有误")
private String email;// 邮箱

@Min(value = 1, message = "亲,您还没出生吧")
@Max(value = 150, message = "亲,您还没挂么")
private Integer age;// 年龄(1-150)

第四步:在Controller的实体类方法前加@valid注解,并通过BindingResult封装错误提示信息。


@RequestMapping("register1")
public String register2(@Valid QQ qqInfo, BindingResult errorResult, Model model) {
        // 调用校验数据的工具类
resultMap = Validator.fieldValidate(errorResult);
if (resultMap == null) {// 数据正确
            return "front/regiter_success.jsp";
else {// 数据错误
model.addAttribute("errorMessage", resultMap);
            return "front/register.jsp";
        }
    }


1. @AssertTrue //用于boolean字段,该字段只能为true  
2. @AssertFalse//该字段的值只能为false  
3. @CreditCardNumber//对信用卡号进行一个大致的验证  
4. @DecimalMax//只能小于或等于该值  
5. @DecimalMin//只能大于或等于该值  
6. @Digits(integer=2,fraction=20)//检查是否是一种数字的整数、分数,小数位数的数字。  
7. @Email//检查是否是一个有效的email地址  
8. @Future//检查该字段的日期是否是属于将来的日期  
9. @Length(min=,max=)//检查所属的字段的长度是否在min和max之间,只能用于字符串  
10. @Max//该字段的值只能小于或等于该值  
11. @Min//该字段的值只能大于或等于该值  
12. @NotNull//不能为null  
13. @NotBlank//不能为空,检查时会将空格忽略  
14. @NotEmpty//不能为空,这里的空是指空字符串  
15. @Null//检查该字段为空  
16. @Past//检查该字段的日期是在过去  
17. @Size(min=, max=)//检查该字段的size是否在min和max之间,可以是字符串、数组、集合、Map等  
18. @URL(protocol=,host,port)//检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供的条件  
19. @Valid//该注解只要用于字段为一个包含其他对象的集合或map或数组的字段,或该字段直接为一个其他对象的引用,  
20.         //这样在检查当前对象的同时也会检查该字段所引用的对象