关于参数校验,hibernate的validator 的校验
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于参数校验,hibernate的validator 的校验相关的知识,希望对你有一定的参考价值。
参考技术A请求
响应
数据校验
学习这条路没有捷径可走。愿我们一直坚持不懈的走下去,初心不忘!
数据校验 也叫 数据验证
比较常用的 Hibernate validater
1.引jar包 4个
<!--数据验证-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.0.1.GA</version>
</dependency>
<!--jboss logging-->
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.0.Final</version>
</dependency>
<!--validation api-->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
</dependency>
<!--slf4j api 日志接口-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
2.配置验证器
<!-- 验证器 -->
<bean id="myValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
</bean>
<!-- MVC注解驱动 -->
<mvc:annotation-driven validator="myValidator"></mvc:annotation-driven>
3在Model上打标记
public class UserInfo {
//需是0~100之间
@Min(value = 0,message = "成绩最小值为{value}")
@Max(value = 100,message = "成绩最大值为{value}")
private Integer score;
@NotEmpty(message = "用户不能为空")
@Size(min = 4,message = "名称至少4个")
private String name;
@NotEmpty(message = "手机号不能为空")
@Pattern(regexp = "^1[3,4,5,6,7,8,9]\\d{9}$",message = "手机号码不正确")
private String phone;
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
4 在Controller方法中
植入二个参数
@Controller
public class FirstController {
@RequestMapping("/first")
public ModelAndView doFirst(@Valid UserInfo info, BindingResult br) {
ModelAndView mv = new ModelAndView();
mv.setViewName("/WELCOME.jsp");
//侦测错误验证总数的方法
int errorcount = br.getErrorCount();
if (errorcount > 0) {
FieldError score = br.getFieldError("score");
FieldError name = br.getFieldError("name");
FieldError phone = br.getFieldError("phone");
if (score != null) {
mv.addObject("scoremsg", score.getDefaultMessage());
}
if (name != null) {
mv.addObject("namemsg", name.getDefaultMessage());
}
if (phone != null) {
mv.addObject("phonemsg", phone.getDefaultMessage());
}
mv.setViewName("/index.jsp");
}
return mv;
}
}
以上是关于关于参数校验,hibernate的validator 的校验的主要内容,如果未能解决你的问题,请参考以下文章
GroupSequenceProvider动态校验入参;@Validated和@Valid的区别
关于spring mvc 请求参数校验使用中的坑 。 maven 生命周期,线程池杂识
springboot使用hibernate validator校验