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

seo网站优化及网站推广新乡做网站推广的

seo网站优化及网站推广,新乡做网站推广的,百度推广登陆首页,长春平原网站建设自定义注解校验的实现步骤#xff1a; 1.创建注解类#xff0c;编写校验注解#xff0c;即类似NotEmpty注解 2.编写自定义校验的逻辑实体类#xff0c;编写具体的校验逻辑。(这个类可以实现ConstraintValidator这个接口#xff0c;让注解用来校验) 3.开启使用自定义注解进…自定义注解校验的实现步骤 1.创建注解类编写校验注解即类似NotEmpty注解 2.编写自定义校验的逻辑实体类编写具体的校验逻辑。(这个类可以实现ConstraintValidator这个接口让注解用来校验) 3.开启使用自定义注解进行校验。 第一种实现自定义注解的方式https://blog.csdn.net/m0_46459413/article/details/134257302?spm1001.2014.3001.5502 第二种实现自定义注解的方式 一、创建注解类 1、创建类时选择Annotation类型 2、编写注解类 如图是我们自定义的一个年龄注解message是该注解校验失败时的提示信息default是默认值我们可以重写该提示信息。下面两行代码是自定义注解需要加上的这里不作研究。 二、自定义注解校验逻辑的实现 这里有两种实现方式 一种是当注解仅仅作用在字段(属性)上生效时可以在工具类中编写方法进行逻辑校验 另一种使用Constraint注解指明了校验类进行校验这里只实现第二种。 第二种使用Constraint注解指明校验类进行校验 EX自定的Age注解上面有一个Constraint注解该注解指明了校验类我们点进MyAnnoationValidator类看一下 可以看到校验类都必须要实现ConstraintValidator接口并且重写接口中的两个方法。 接口上是有泛型的第一个泛型代表了我们这个校验类是哪个注解的校验类第二个泛型代表该注解校验的参数是什么类型第二个注解默认是Object类型我们改成了Integer类型 initialize方法 是该校验类的初始化方法在这个方法里我们可以对传进来的参数作一些处理。 isValid方法 就是注解类型的核心校验方法校验通过与否就是看该方法的返回值是true还是falsetrue就代表校验通过false就代表校验失败 三、使用自定义注解 自定义校验注解在代码中的应用 1、在dto中使用 定义一个实体类User 2、在代码中使用 定义一个Controller使用Valid注解我们的User类Valid注解没有实际的注解体这个注解的作用就是使我们的Age注解起作用。 后面的BindingResult类的作用是当注解校验失败时我们可以手动去处理。如果不加这个类的话注解校验失败会直接返回http的400错误码。加上这个类我们可以自己自定义错误信息然后返回此时的http状态码为200 3、valid注解 1、valid注解作用 valid注解主要用于数据校验在接口的入参实体类前添加Valid注解这时实体类会开启一个校验的功能然后在入参实体类中的属性上添加不同的注解例如NotBlank注解来完成不同的校验规则。 2、valid注解的使用 a、在实体类中添加valid相关注解 使用Valid相关注解非常简单只需要在参数的实体类属性上添加如NotBlank,Max,Min等注解对字段进行限制。如下 public class User{NotBlank(message 姓名不为空)private String username;NotBlank(message 密码不为空)private String password; }如果嵌套了实体对象则需要在最外层属性上添加Valid注解否则嵌套实体对象中的验证不生效 public class User{NotBlank(message 姓名不为空)private String username;NotBlank(message 密码不为空)private String password;//嵌套必须加Valid否则嵌套中的验证不生效ValidNotNull(message 用户信息不能为空)private UserInfo userInfo; }public class UserInfo {NotBlank(message 年龄不为空)Max(value 18,message 不超过18岁)private String age;NotBlank(message 性别不为空)private String gender; }b、在接口中添加valid注解 在controller类中添加接口POST方法中接收设置了Valid相关注解的实体对象然后再参数中添加Valid注解来开启效验功能需要注意的是Valid对Get请求中接收的平面参数请求无效。 RestController public class TestController {PostMapping(/user)public String addUserInfo(Valid RequestBody User user){return 调用成功;} }参考链接https://blog.csdn.net/weixin_43400432/article/details/126159450 四、观察仿照 NotEmpty注解编写自定义校验注解 1、观察下NotEmpty 注解: // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) //package org.hibernate.validator.constraints;import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import javax.validation.Constraint; import javax.validation.Payload; import javax.validation.ReportAsSingleViolation; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import javax.validation.constraintvalidation.SupportedValidationTarget; import javax.validation.constraintvalidation.ValidationTarget;Documented Constraint(validatedBy {} ) SupportedValidationTarget({ValidationTarget.ANNOTATED_ELEMENT}) Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER}) Retention(RetentionPolicy.RUNTIME) ReportAsSingleViolation NotNull Size(min 1 ) public interface NotEmpty {String message() default {org.hibernate.validator.constraints.NotEmpty.message};Class?[] groups() default {};Class? extends Payload[] payload() default {};Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})Retention(RetentionPolicy.RUNTIME)Documentedpublic interface List {NotEmpty[] value();} }2、编写身份证校验自定义注解类也必须有message、groups、payload. package com.zzidc.web.validator;import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/** Description //TODO* Date 2019/3/29 17:22* Param* return**/ //注解是指定当前自定义注解可以使用在哪些地方这里仅仅让他可以使用在方法上和属性上 Target({ElementType.METHOD,ElementType.FIELD}) //指定当前注解保留到运行时 Retention(RetentionPolicy.RUNTIME) //指定了当前注解使用哪个类来进行校验。 Constraint(validatedBy IdCardValidator.class) // public interface IsIdCard {String message();// default 关键字 接口中被default修饰的方法在类实现这个接口时不必必须实现这个方法Class?[] groups() default { };// Class? 表示不确定的java类型// ClassT 表示java类型// ClassK,V 分别代表java键值中的key value// ClassE 代表ElementClass? extends Payload[] payload() default {}; }3. 编写校验注解的逻辑类IdCardValidator.class该类必须实现ConstraintValidator package com.zzidc.web.validator;import com.zzidc.web.service.IdCardValidatorService; import org.springframework.beans.factory.annotation.Autowired;import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext;/*** ClassName IdCardValidator* Description 校验注解的校验逻辑* Date 2019/3/29 17:23**/ public class IdCardValidator implements ConstraintValidatorIsIdCard,String{Autowiredprivate IdCardValidatorService idCardValidatorService;/** Description 校验前的初始化工作* Date 2019/3/29 17:27* Param [isIdCard]* return void**/Overridepublic void initialize(IsIdCard isIdCard) {String message isIdCard.message();System.out.println(自定义的message信息是:.concat(message));}/** Description 具体的校验逻辑* Date 2019/3/29 17:29* Param [s, constraintValidatorContext]* return boolean**/Overridepublic boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {return idCardValidatorService.volid(s);} }我们将具体校验逻辑抽出来抽成一个service package com.zzidc.web.service;/*** ClassName IdCardValidatorService* Description TODO* Date 2019/3/29 17:34**/ public interface IdCardValidatorService {boolean volid(String value); }service实现类 package com.zzidc.web.service.impl;import com.zzidc.web.service.IdCardValidatorService; import com.zzidc.web.utils.IdCardUtils; import org.springframework.stereotype.Service;/*** ClassName IdCardValidatorServiceImpl* Description TODO* Date 2019/3/29 17:35**/ Service public class IdCardValidatorServiceImpl implements IdCardValidatorService {Overridepublic boolean volid(String value) {return IdCardUtils.isValidIdCard(value);} }身份证工具校验类: package com.zzidc.web.utils;import org.apache.commons.lang3.StringUtils;/*** ClassName IdCardUtils* Description TODO* Date 2019/3/29 17:37**/ public class IdCardUtils {public static boolean isValidIdCard(String value){String regex ^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$;if (StringUtils.isBlank(value)) {return false;}return value.matches(regex);} }
http://www.hkea.cn/news/14574750/

相关文章:

  • 网站制作公司站建设上海网络营销推广服务
  • 商贸公司寮步网站建设在虚拟主机上建设多个网站
  • 类模板模板下载网站有哪些设计作品欣赏网站
  • 厦门市同安区建设局公开网站怎么做网站调研
  • 昆明做网站建设价位google play store
  • app和手机网站的区别怎样建设公司网站
  • wordpress创建企业网站wordpress家谱
  • 要建设企业网站郑州网站建设找智巢
  • 廊坊网站建设总部在哪里网站建设基础服务
  • 吉林教育网站建设方案酒店网站的开发及其设计方案
  • 做网站外网可访问网站服务器一年多少钱
  • 建设部职称证书查询官方网站godaddy托管wordpress
  • 专业图库网站 西安越秀seo搜索引擎优化
  • 西安网站建设聂卫系统官网网站模板下载地址
  • 域名怎么做网站一见钟情 网站
  • 国外的包装设计网站网络广告投放的主要方式有
  • 大连 响应式网站制作西安电商平台网站建设
  • 做分享衣服网站的初衷是什么意思楚雄建网站
  • 如何打破违法网站莱芜做网站的公司
  • 广州公司营销型网站建设域名可以做网站名吗
  • 北京高端网站建设公司浩森宇特开发个app多少钱
  • 查公司信息的网站中国十大企业培训公司
  • 浙江嘉兴建设局网站外贸网站建设公司方案
  • 大连建设网官网首页关键词优化公司兴田德润优惠吗
  • 行业网站名录建网站要多少钱
  • 网站对接app网站的营销功能
  • 常用的建站工具有哪些怎么建设个人网站教程
  • 建设企业官方网站企业登录WordPress模板推荐国外
  • 镇江建设局网站代理记账 营销型网站
  • 股票推荐怎么做网站客源引流推广