为什么后端要做表单的校验
如果只使用前端校验的话,如果浏览器把JS给禁用掉,就弯度子啦
JSR
- JSR 303 是 Java 为 Bean 数据合法性校验提供的标准框架,它已经包含在 JavaEE 6.0 中
- JSR 303 通过在 Bean 属性上标注类似于 @NotNull、@Max 等标准的注解
- 指定校验规则,并通过标准的验证接口对 Bean 进行验证
HibernateValidator
- 是 JSR 303 的一个参考实现,除支持所有标准的校验注解外,它还支持以下的扩展注解
常用校验规则
BeanValidation中内置的约束
注解名称 | 描述 |
---|---|
@Null | 被注释的元素必须为 null |
@NotNull | 被注释的元素必须不为 null |
@AssertTrue | 被注释的元素必须为 true |
@AssertFalse | 被注释的元素必须为 false |
@Min(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@Max(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@DecimalMin(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@DecimalMax(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@Size(max=, min=) | 被注释的元素的大小必须在指定的范围内 |
@Digits (integer, fraction) | 被注释的元素必须是一个数字,其值必须在可接受的范围内 |
@Past | 被注释的元素必须是一个过去的日期 |
@Future | 被注释的元素必须是一个将来的日期 |
@Pattern(regex=,flag=) | 被注释的元素必须符合指定的正则表达式 |
HibernateValidator附加的约束
注解名称 | 描述 |
---|---|
@NotBlank(message =) | 验证字符串非null,且长度必须大于0 |
被注释的元素必须是电子邮箱地址 | |
@Length(min=,max=) | 被注释的字符串的大小必须在指定的范围内 |
@NotEmpty | 被注释的字符串的必须非空 |
@Range(min=,max=,message=) | 被注释的元素必须在合适的范围内 |
使用Hibernate-Validator导入jar包
使用
在配置文件当中写上 <mvc:annotation-driven/>,在模型当中添加对应的校验规则
在处理器方法的入参标记 @valid 注解即可
错误信息页面回显,使用原始表单错误信息写到 Model 中
使用 form 标签
1 | <fm:error path="username"></fm:error> |