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

温州seo网站建设wordpress表单创建插件

温州seo网站建设,wordpress表单创建插件,网站对企业的重要性,二类电商平台目标 自定义一个用于校验 身份证号码 格式的注解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.zqtcl.cn/news/782675/

相关文章:

  • 怎么样建设网站网站通州建设局网站
  • 网站备案有期限吗洛阳宣传片制作公司
  • 给wordpress添加引导页seo营销的策略有哪些
  • 聚美联盟网站怎么做金空间网站
  • 域名注册网站的域名哪里来的更改网站模板内容
  • 南京网站设计网站wordpress选择模板没
  • 河南省网站集约化建设国内房地产设计网站建设
  • 长治招聘网站建设电话销售精准客户资源
  • 灵璧有做公司网站的吗自定义wordpress
  • 创个网站怎么弄做国内第一游戏数据门户网站
  • 沈阳网站制作全过程小程序商城的好处
  • 如何建设vr网站长春建站网站模板
  • 做一个网站的费用wordpress mysql配置
  • 重庆专业的网站建设公司怎么套网站
  • 产品网站怎么做企业网站建设用什么
  • 怎样做网站公司大连市住建局官方网
  • 东莞市网站建设平台wordpress用户登录显示请求失败
  • 网站一键收录西宁网站建设西宁
  • 昆山网站h5制作开发地点
  • 承德网站建设设计手机建站服务
  • 成都网站建设思乐科技网站简单化
  • 东莞外贸公司网站制作微信文章链接wordpress
  • 剑灵网站模板效果图网站源码
  • 个人工作室网站源码带后台安徽服装网站建设
  • SEO案例网站建设公司好听的公司名字大全
  • 一些网站只能在微信打开怎么做的别人做的网站域名到期怎么办
  • 姑苏区做网站网站建设一条
  • 赣州人才网站wordpress论坛查看用户密码
  • asp.net 网站开发架构网站你懂我意思正能量不用下载视频
  • 沈阳网站设计推广诸暨网络推广