java校验参数实践

1目的

减少校验代码,增加代码安全性

2.java bean 基础校验

步骤

第一步:引入依赖包

		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>2.0.1.Final</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>5.3.6.Final</version>
		</dependency>
		<dependency>
			<groupId>javax.el</groupId>
			<artifactId>javax.el-api</artifactId>
			<version>3.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish.web</groupId>
			<artifactId>javax.el</artifactId>
		</dependency>
第二步:创建需要构建的实体类
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.GroupSequence;
import javax.validation.Valid;
import javax.validation.constraints.*;
import java.util.Date;
import java.util.List;

@Data
public class UserInfo {
    public interface LoginGroup{ }
    public interface RegistGroup{}


    @GroupSequence({LoginGroup.class,RegistGroup.class})
    public interface Group{}
    @NotNull(message = "用户ID不能为空", groups = LoginGroup.class)
    private String userId;
    @NotEmpty(message = "用户名不能为空")
    private String userName;
    @NotBlank(message = "用户密码不能为空")
    @Length(min = 4,max = 10,message = "密码不能超过10位,,低于4位")
    private String passWord;
    @NotNull(message = "邮箱不能为空",groups = RegistGroup.class)
    @Email(message = "请输入正确的邮箱地址")
    private String email;
    @Min(value = 16,message = "年龄不能小于16")
    @Max(value = 80,message = "年龄不能大于80")
    private Integer age;
    private String phone;
    @Past(message = "日期不能选择之前的日期")
    private Date birthday;
    @Size(min = 1,message = "集合不能少于1个人")
    private List< @Valid UserInfo> friends;
}
第三步:构造需要验证的数据
        userInfo = new UserInfo();
        userInfo.setUserName(" ");
        userInfo.setPassWord("111222");
        userInfo.setEmail("aaa@aa");
        userInfo.setAge(25);
        Calendar calendar = Calendar.getInstance();
        calendar.set(2018,1,1);
        userInfo.setBirthday(calendar.getTime());
第四步:创建验证器,并进行验证
        Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
        Set<ConstraintViolation<UserInfo>> sets =   validator.validate(userInfo);
第五步:打印验证结果
   set.forEach(item->{
            System.out.println("打印结果是:"+item.getMessage());
        });

总结

个人觉得基础校验已经满足日常的使用,对于方法的参数,和返回结果,构造函数参数校验都没有必要了。为啥呢?因为其实在入参之前就开始校验,或者再返回之前就开始校验即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值