您的位置:首页 > 编程语言 > Java开发

基于注解后端数据校验-SpringMVC 、Spring和 Hibernate Validator结合

2017-09-21 10:09 288 查看
1、依赖jar包

<dependency>
<groupid>org.hibernate</groupid>
<artifactid>hibernate-validator</artifactid>
<version>5.4.1.Final</version>
</dependency>
<dependency>
<groupid>org.hibernate</groupid>
<artifactid>hibernate-validator-annotation-processor</artifactid>
<version>5.4.1.Final</version>
</dependency>
<dependency>
<groupid>javax.validation</groupid>
<artifactid>validation-api</artifactid>
<version>2.0.0.Final</version>
</dependency>

2.一般在conroller层中用对象接受参数信息时,会对参数进行校验,为了简化代码,hibernate validator提供了基于注解方式的参数校验
package com.user.vo;
import com.alibaba.fastjson.JSON;
import org.hibernate.validator.constraints.NotEmpty;
/**
* 注册对象实例类
*
* @author CaiWei
* @version 1.0
* @created 2017-09-12 23:44:26
* @since 1.0
**/
public class RegisterUserBean {

@NotEmpty(message = "用户名不可为空")
private String userName;

private String nickName;

@NotEmpty(message = "密码不可为空")
private String passWord;

@NotEmpty(message = "确认密码不可为空")
private String confirmPwd;

private String sex;

private String mobile;

public RegisterUserBean() {
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getNickName() {
return nickName;
}

public void setNickName(String nickName) {
this.nickName = nickName;
}

public String getPassWord() {
return passWord;
}

public void setPassWord(String passWord) {
this.passWord = passWord;
}

public String getConfirmPwd() {
return confirmPwd;
}

public void setConfirmPwd(String confirmPwd) {
this.confirmPwd = confirmPwd;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public String getMobile() {
return mobile;
}

public void setMobile(String mobile) {
this.mobile = mobile;
}

@Override
public String toString() {
return JSON.toJSONSt
a414
ring(this);
}
}


3.controller层加入@valid注解
package com.user;

import com.alibaba.fastjson.JSON;
import com.base.ResponseEntity;
import com.user.entity.UserEntity;
import com.user.service.IUserService;
import com.user.vo.RegisterUserBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.validation.Valid;
import java.util.List;

/**
* something to description this class
*
* @author CaiWei
* @version 1.0
* @created 2017-09-12 23:33:01
* @since 1.0
**/
@Controller
@RequestMapping(value = "/user/register")
public class UserRegisterController {

private final Logger LOGGER = LoggerFactory.getLogger(UserRegisterController.class);

@Autowired
private IUserService userService;

@RequestMapping(value = "/page")
public String toRegisterPage() {
return "/user/register";
}

@RequestMapping(value = "/save",method = RequestMethod.POST)
public ResponseEntity registered(@Valid RegisterUserBean userBean, BindingResult bindingResult) {
LOGGER.info("注册的对象为:{}", JSON.toJSONString(userBean));
if (bindingResult.hasErrors()){
List<FieldError> errors = bindingResult.getFieldErrors();
for (FieldError error :errors){
LOGGER.info(error.getDefaultMessage());
}
return new ResponseEntity().error(errors.get(0).getDefaultMessage());
}
boolean res = false;
if (!"{}".equals(JSON.toJSONString(userBean))) {
UserEntity usr = new UserEntity();
usr.setUsername(userBean.getUserName());
usr.setCreatetime(System.currentTimeMillis() / 1000);
usr.setNickname(userBean.getNickName());
usr.setMobile(userBean.getMobile());
usr.setUsertype(0);
usr.setPassword(userBean.getConfirmPwd());
res = userService.save(usr);

}
return res ? new ResponseEntity().success() : new ResponseEntity().error();
}

}


到此即可实现参数校验,同时返回前端校验后的错误信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐