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

1、依赖jar包


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.toJSONString(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();
    }

}

到此即可实现参数校验,同时返回前端校验后的错误信息。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值