当前位置: 首页 > news >正文

国外效果超炫网站互联网站是不是自媒体平台

国外效果超炫网站,互联网站是不是自媒体平台,哈尔滨大型网站制作开发,三门峡网站建设价格目标 自定义一个用于校验 身份证号码 格式的注解IdCard#xff0c;能够和现有的 Validation 兼容#xff0c;使用方式和其他校验注解保持一致#xff08;使用 Valid 注解接口参数#xff09;。 校验逻辑 有效格式 符合国家标准。 公民身份号码按照GB11643#xff0d;…目标 自定义一个用于校验 身份证号码 格式的注解IdCard能够和现有的 Validation 兼容使用方式和其他校验注解保持一致使用 Valid 注解接口参数。 校验逻辑 有效格式 符合国家标准。 公民身份号码按照GB116431999《公民身份号码》国家标准编制由18位数字组成前6位为行政区划代码第7至14位为出生日期码第15至17位为顺序码第18位为校验码。 严格校验 本文采用的校验方式采用严格校验第18位校验码只能为数字或大写X小写x无法通过校验。 不校验非空 身份证号码校验的是格式不校验是否为空null 或 空字符串。如果身份证号码为空直接通过校验 核心代码 需要定义的内容包含三个部分 注解ZipCode校验器ZipCodeValidator校验工具类 IdCardUtil 注解IdCard package com.example.core.validation.idcard;import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target;import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.RetentionPolicy.RUNTIME;/*** 身份证号码。字符串必须是格式正确的身份证号码。* p* {code null} 或 空字符串是有效的能够通过校验。* p* 支持的类型字符串** author songguanxun* since 1.0*/ Target({FIELD}) Retention(RUNTIME) Documented Constraint(validatedBy IdCardValidator.class) public interface IdCard {/*** return the error message template*/String message() default 身份证号码格式错误;/*** return the groups the constraint belongs to*/Class?[] groups() default {};/*** return the payload associated to the constraint*/Class? extends Payload[] payload() default {};} 校验器IdCardValidator package com.example.core.validation.idcard;import com.example.core.util.IdCardUtil; import org.springframework.util.ObjectUtils;import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext;/*** 身份证号码格式校验器*/ public class IdCardValidator implements ConstraintValidatorIdCard, String {Overridepublic void initialize(IdCard constraintAnnotation) {ConstraintValidator.super.initialize(constraintAnnotation);}Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {if (ObjectUtils.isEmpty(value)) {return true;}return IdCardUtil.isValid(value);}} 校验工具类 package com.example.core.util;/*** 身份证号码校验工具类*/ public class IdCardUtil {// 每位加权因子private static final int[] power {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};/*** 是格式正确的身份证号码*/public static boolean isValid(String idCard) {// null 为假if (idCard null) {return false;}// 非18位为假if (idCard.length() ! 18) {return false;}// 获取前17位String idCard17 idCard.substring(0, 17);// 获取第18位String idCard18Code idCard.substring(17, 18);// 前17位不全部为数字为假if (!isDigital(idCard17)) {return false;}char[] c idCard17.toCharArray();int[] bit convertCharToInt(c);int sum17 getPowerSum(bit);// 将和值与11取模得到余数进行校验码判断String checkCode getCheckCodeBySum(sum17);if (null checkCode) {return false;}// 将身份证的第18位与算出来的校码进行匹配不相等就为假return idCard18Code.equals(checkCode);}/*** 数字验证*/private static boolean isDigital(String str) {return str ! null !str.isEmpty() str.matches(^[0-9]*$);}/*** 将字符数组转为整型数组*/private static int[] convertCharToInt(char[] c) throws NumberFormatException {int[] a new int[c.length];int k 0;for (char temp : c) {a[k] Integer.parseInt(String.valueOf(temp));}return a;}/*** 将身份证的每位和对应位的加权因子相乘之后再得到和值*/private static int getPowerSum(int[] bit) {if (power.length ! bit.length) {return 0;}int sum 0;for (int i 0; i bit.length; i) {for (int j 0; j power.length; j) {if (i j) {sum sum bit[i] * power[j];}}}return sum;}/*** 将和值与11取模得到余数进行校验码判断** return 校验位*/private static String getCheckCodeBySum(int sum17) {String checkCode null;switch (sum17 % 11) {case 10:checkCode 2;break;case 9:checkCode 3;break;case 8:checkCode 4;break;case 7:checkCode 5;break;case 6:checkCode 6;break;case 5:checkCode 7;break;case 4:checkCode 8;break;case 3:checkCode 9;break;case 2:checkCode X;break;case 1:checkCode 0;break;case 0:checkCode 1;break;}return checkCode;}}使用 IdCard 放在需要校验格式的 身份证号码 字段上。 package com.example.web.response.model.param;import com.example.core.validation.idcard.IdCard; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data;Data Schema(name 新增用户Param) public class UserAddParam {// 其他字段IdCardSchema(description 身份证号码, example 110101202301024130)private String idCard;} 校验效果 校验工具类单元测试 package com.example;import com.example.core.util.IdCardUtil; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test;Slf4j public class IdCardTest {Testvoid test() {test(110101202301024130);test(11010120230102857X);test(11010120230102857x);test(110101202301024130啊啊啊啊);}private void test(String idCard) {log.info(是否为身份证号码格式{} {}, idCard, IdCardUtil.isValid(idCard));}} 接口测试 校验结果为 成功 校验结果为 失败
http://www.w-s-a.com/news/599296/

相关文章:

  • 网站建设业务终止合作范本主机公园wordpress
  • 口碑好企业网站建设网站建设与什么专业有关
  • 助贷获客系统快速优化排名公司推荐
  • 重庆做网站优化推广的公司企业网站如何进行定位
  • 高密市赏旋网站设计有限公司山东广饶县建设局网站
  • 成都哪里有网站开发公司网业分离是什么
  • 购物导购网站开发女孩学建筑学好找工作吗
  • 做网站沈阳掌握夏邑进入公众号
  • 怎么做自动提卡网站谷歌推广怎么做
  • 大同网站建设熊掌号wordpress 首页单页
  • 青岛网站美工成都优秀网站建设
  • 聊城大型门户网站建设多版本wordpress
  • 建网站的公司 快云wordpress的搜索
  • 贷款网站模版东莞网站建设哪家专业
  • 做做网站已更新878网站正在建设中
  • dz旅游网站模板网站上做百度广告赚钱么
  • 青岛外贸假发网站建设seo优化名词解释
  • 四川建设厅网站施工员证查询网站建设行业政策
  • 网站全站出售dw怎么设计网页
  • 合肥网站建设方案服务网站建设推荐郑国华
  • 襄阳网站建设需要多少钱台州网站设计公司网站
  • 东莞专业拍摄做网站照片如何在百度上发布自己的广告
  • 网站建设费 科目做网站建设最好学什么
  • php商城网站建设多少钱深圳市建设
  • 有什么做糕点的视频网站黄岛做网站
  • 做视频课程网站建设一个普通网站需要多少钱
  • 专做化妆品的网站合肥做网站建设公司
  • 唐山企业网站网站建设费计入那个科目
  • 企业网站制作运营彩虹云主机官网
  • 如何建设废品网站如何在阿里云云服务器上搭建网站